@podlite/schema
Version:
AST tools for Podlite markup language
169 lines • 8.28 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.version = exports.Writer = exports.toHtml = exports.parse = exports.toTree = exports.isValidateError = exports.validateAst = exports.validateAstTree = exports.validatePodliteAst = exports.getTextContentFromNode = exports.toAst = exports.frozenIds = exports.cleanIds = exports.podlitePluggable = exports.toAnyRules = exports.pluginCleanLocation = exports.makeAttrs = exports.toAny = exports.isSemanticBlock = exports.isNamedBlock = exports.makeTransformer = exports.makeInterator = void 0;
const ajv_1 = __importDefault(require("ajv"));
const pointer = __importStar(require("json-pointer"));
const jsonShemes = __importStar(require("../schema"));
const ast_inerator_1 = require("./ast-inerator");
__exportStar(require("./types"), exports);
__exportStar(require("./blocks-helpers"), exports);
__exportStar(require("./query-helpers"), exports);
__exportStar(require("./ast-helpers"), exports);
__exportStar(require("./helpers/handlers"), exports);
var ast_inerator_2 = require("./ast-inerator");
Object.defineProperty(exports, "makeInterator", { enumerable: true, get: function () { return ast_inerator_2.makeInterator; } });
var makeTransformer_1 = require("./helpers/makeTransformer");
Object.defineProperty(exports, "makeTransformer", { enumerable: true, get: function () { return makeTransformer_1.makeTransformer; } });
Object.defineProperty(exports, "isNamedBlock", { enumerable: true, get: function () { return makeTransformer_1.isNamedBlock; } });
Object.defineProperty(exports, "isSemanticBlock", { enumerable: true, get: function () { return makeTransformer_1.isSemanticBlock; } });
var exportAny_1 = require("./exportAny");
Object.defineProperty(exports, "toAny", { enumerable: true, get: function () { return exportAny_1.toAny; } });
var config_1 = require("./helpers/config");
Object.defineProperty(exports, "makeAttrs", { enumerable: true, get: function () { return config_1.makeAttrs; } });
var plugin_clean_location_1 = require("./plugin-clean-location");
Object.defineProperty(exports, "pluginCleanLocation", { enumerable: true, get: function () { return plugin_clean_location_1.pluginCleanLocation; } });
var plugins_1 = require("./helpers/plugins");
Object.defineProperty(exports, "toAnyRules", { enumerable: true, get: function () { return plugins_1.toAnyRules; } });
var pluggableParser_1 = require("./pluggableParser");
Object.defineProperty(exports, "podlitePluggable", { enumerable: true, get: function () { return pluggableParser_1.podlitePluggable; } });
Object.defineProperty(exports, "cleanIds", { enumerable: true, get: function () { return pluggableParser_1.cleanIds; } });
Object.defineProperty(exports, "frozenIds", { enumerable: true, get: function () { return pluggableParser_1.frozenIds; } });
const parser = __importStar(require("./grammar"));
const plugin_vmargin_1 = __importDefault(require("./plugin-vmargin"));
const plugin_formatting_codes_1 = __importDefault(require("./plugin-formatting-codes"));
const plugin_items_1 = __importDefault(require("./plugin-items"));
const plugin_heading_1 = __importDefault(require("./plugin-heading"));
const plugin_group_defn_1 = __importDefault(require("./plugin-group-defn"));
const plugin_group_items_1 = __importDefault(require("./plugin-group-items"));
const plugin_defn_fill_term_1 = __importDefault(require("./plugin-defn-fill-term"));
const plugin_tables_1 = __importDefault(require("./plugin-tables"));
function toAst() {
return {};
}
exports.toAst = toAst;
const ajv = new ajv_1.default({ strict: true, allowUnionTypes: true });
function getTextContentFromNode(node) {
let text = '';
const rules = {
':text': node => {
text += node.value;
},
':verbatim': node => {
text += node.value;
},
};
const transformer = (0, ast_inerator_1.makeInterator)(rules);
const res = transformer(node, {});
return text;
}
exports.getTextContentFromNode = getTextContentFromNode;
function validatePodliteAst(data) {
return validateAst(data, 'PodliteDocument');
}
exports.validatePodliteAst = validatePodliteAst;
function validateAstTree(data) {
return validateAst(data, 'AstTree');
}
exports.validateAstTree = validateAstTree;
function validateAst(data, Name = 'AstTree') {
const AstTreeSchema = jsonShemes[Name];
if (!AstTreeSchema) {
console.warn(`[validateAst] Can't exists ${Name} scheme.`);
}
const validate = ajv.compile(AstTreeSchema);
if (validate(data)) {
return [];
}
return validate.errors || [];
}
exports.validateAst = validateAst;
function isValidateError(result, src) {
if (result.length > 0) {
// get most erorred dataPath
let errors_by_path = {};
const reducer = (acc, value) => {
acc[value.dataPath] = (acc[value.dataPath] || 0) + 1;
return acc;
};
const pathMap = result.reduce(reducer, errors_by_path);
const mostlyError = (Object.keys(pathMap).sort((a, b) => pathMap[b] - pathMap[a]) || [])[0];
return pointer.get(src, mostlyError);
}
return undefined;
}
exports.isValidateError = isValidateError;
function makeTree() {
var plugins = [];
chain.use = use;
chain.parse = parse;
chain.use(plugin_vmargin_1.default);
chain.use(plugin_items_1.default);
chain.use(plugin_heading_1.default);
chain.use(plugin_defn_fill_term_1.default);
chain.use(plugin_tables_1.default);
chain.use(plugin_formatting_codes_1.default);
// save order for the next two plugins
chain.use(plugin_group_items_1.default);
chain.use(plugin_group_defn_1.default);
return chain;
function chain() {
return;
}
function use(plugin) {
if (!['function'].includes(typeof plugin)) {
throw plugin;
}
plugins.push(plugin);
return chain;
}
function parse(src, opt = { skipChain: 0, podMode: 1 }) {
let tree = parser.parse(src, { podMode: opt.podMode });
if (!opt.skipChain) {
for (let i = 0; i < plugins.length; i++) {
const plugin = plugins[i];
// init
const visitor = plugin(opt);
// process tree
tree = visitor(tree);
}
}
return tree;
}
}
exports.toTree = makeTree;
const parse = makeTree().parse;
exports.parse = parse;
var exportHtml_1 = require("./exportHtml");
Object.defineProperty(exports, "toHtml", { enumerable: true, get: function () { return __importDefault(exportHtml_1).default; } });
var writer_1 = require("./writer");
Object.defineProperty(exports, "Writer", { enumerable: true, get: function () { return __importDefault(writer_1).default; } });
// Cannot be `import` as it's not under TS root dir
// https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp
const { version: VERSION } = require('../package.json');
exports.version = VERSION;
//# sourceMappingURL=index.js.map