@alifd/adaptor-helper
Version:
Next adaptor utils
106 lines (88 loc) • 2.42 kB
JavaScript
;
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;