UNPKG

@alifd/adaptor-helper

Version:
106 lines (88 loc) 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.parseData = exports.ContentType = exports.NodeType = void 0; var _stateMark = require("./state-mark"); var NodeType; exports.NodeType = NodeType; (function (NodeType) { NodeType["divider"] = "divider"; NodeType["node"] = "node"; NodeType["comment"] = "comment"; })(NodeType || (exports.NodeType = NodeType = {})); var ContentType; exports.ContentType = ContentType; (function (ContentType) { ContentType["text"] = "text"; ContentType["icon"] = "icon"; })(ContentType || (exports.ContentType = ContentType = {})); var getChildren = function getChildren() { var template = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; if (!template) { return []; } return template.replace(/(\[.*?\])/g, "\n$1\n").split("\n").filter(function (v) { return !!v; }).map(function (d) { switch (true) { case /^\[(.*)\]$/.test(d): return { type: "icon", value: RegExp.$1 }; default: return { type: "text", value: d }; } }); }; var parseData = function parseData(text) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { parseContent: false }; if (!text) { return []; } var root = { type: NodeType.node, state: "normal", value: "", children: [] }; var stack = [root]; text.split("\n").filter(function (line) { return line.trim(); }).forEach(function (line) { var re = /^(\t*)([#\-~*]?)(.*)$/.exec(line); var indent = (re[1] || "").length; var prefix = re[2] || ""; var item = { type: NodeType.node, state: "normal", value: re[3] || "", children: [] }; if (prefix === "-" && /^-{2,}$/.test(item.value)) { item.type = NodeType.divider; } else if (prefix === "#") { item.type = NodeType.comment; } else { item.state = _stateMark.STATE_MARK[prefix]; } if (item.type === "node" && options.parseContent) { item.value = getChildren(item.value); } while (indent <= stack.length - 2) { stack.pop(); } stack[stack.length - 1].children.push(item); stack.push(item); }); return root.children; }; exports.parseData = parseData; var _default = parseData; exports["default"] = _default;