'use strict' module.exports = generateFootnotes var thematicBreak = require('./handlers/thematic-break') var list = require('./handlers/list') var wrap = require('./wrap') function generateFootnotes(h) { var footnoteById = h.footnoteById var footnoteOrder = h.footnoteOrder var length = footnoteOrder.length var index = -1 var listItems = [] var def var backReference var content var tail while (++index < length) { def = footnoteById[footnoteOrder[index].toUpperCase()] if (!def) { continue } content = def.children.concat() tail = content[content.length - 1] backReference = { type: 'link', url: '#fnref-' + def.identifier, data: {hProperties: {className: ['footnote-backref']}}, children: [{type: 'text', value: '↩'}] } if (!tail || tail.type !== 'paragraph') { tail = {type: 'paragraph', children: []} content.push(tail) } tail.children.push(backReference) listItems.push({ type: 'listItem', data: {hProperties: {id: 'fn-' + def.identifier}}, children: content, position: def.position }) } if (listItems.length === 0) { return null } return h( null, 'div', {className: ['footnotes']}, wrap( [ thematicBreak(h), list(h, {type: 'list', ordered: true, children: listItems}) ], true ) ) }