UNPKG

front-matter-markdown

Version:

get the config and toc object from the markdown string.

49 lines (43 loc) 1.54 kB
isArray = require('util-ex/lib/is/type/array') isString = require('util-ex/lib/is/type/string') module.exports = class AstListToFileObject constructor:(src, dest)-> return listToObject(src, dest) if src.type is 'list' @listToObject: listToObject = (listNode, dest)-> dest ?= {} dest.ordered = listNode.ordered dest.contents = bodyToObject(listNode.body) dest @bodyToObject: bodyToObject = (bodyNode)-> bodyNode = [bodyNode] unless isArray bodyNode result = [] for node in bodyNode continue unless node.type is 'listitem' result.push textToObject(node.text) result @textToObject: textToObject = (textNode)-> result = {} if isArray textNode result.title = [] result.contents = [] for node in textNode #if isString node # result.title = result.concat node if node.type is 'link' result.title = result.title.concat node.text result.path = node.href result.hint = node.title if node.title else if node.type is 'list' listToObject(node, result) else result.title = result.title.concat node result.title = result.title[0] if isArray(result.title) and result.title.length is 1 else if isString textNode result.title = textNode else if textNode.type is 'link' result.title = textNode.text result.path = textNode.href result.hint = textNode.title if textNode.title else result.title = textNode result