UNPKG

front-matter-markdown

Version:

get the config and toc object from the markdown string.

86 lines (74 loc) 2.38 kB
(function() { var AstListToFileObject, isArray, isString; isArray = require('util-ex/lib/is/type/array'); isString = require('util-ex/lib/is/type/string'); module.exports = AstListToFileObject = (function() { var bodyToObject, listToObject, textToObject; function AstListToFileObject(src, dest) { if (src.type === 'list') { return listToObject(src, dest); } } AstListToFileObject.listToObject = listToObject = function(listNode, dest) { if (dest == null) { dest = {}; } dest.ordered = listNode.ordered; dest.contents = bodyToObject(listNode.body); return dest; }; AstListToFileObject.bodyToObject = bodyToObject = function(bodyNode) { var i, len, node, result; if (!isArray(bodyNode)) { bodyNode = [bodyNode]; } result = []; for (i = 0, len = bodyNode.length; i < len; i++) { node = bodyNode[i]; if (node.type !== 'listitem') { continue; } result.push(textToObject(node.text)); } return result; }; AstListToFileObject.textToObject = textToObject = function(textNode) { var i, len, node, result; result = {}; if (isArray(textNode)) { result.title = []; result.contents = []; for (i = 0, len = textNode.length; i < len; i++) { node = textNode[i]; if (node.type === 'link') { result.title = result.title.concat(node.text); result.path = node.href; if (node.title) { result.hint = node.title; } } else if (node.type === 'list') { listToObject(node, result); } else { result.title = result.title.concat(node); } } if (isArray(result.title) && result.title.length === 1) { result.title = result.title[0]; } } else if (isString(textNode)) { result.title = textNode; } else if (textNode.type === 'link') { result.title = textNode.text; result.path = textNode.href; if (textNode.title) { result.hint = textNode.title; } } else { result.title = textNode; } return result; }; return AstListToFileObject; })(); }).call(this); //# sourceMappingURL=ast-list-to-file-object.js.map