@podlite/schema
Version:
AST tools for Podlite markup language
89 lines • 3.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mkFormulaBlock = exports.mkItemBlock = exports.mkRootBlock = exports.mkImage = exports.mkCaption = exports.mkTocItem = exports.mkTocList = exports.mkToc = exports.mkVerbatim = exports.mkMarkupCodeF = exports.mkFomattingCodeDelete = exports.mkFomattingCodeL = exports.mkFomattingCode = exports.mkBlankline = exports.mkBlock = exports.filterNulls = exports.mkNode = void 0;
const nanoid_1 = require("nanoid");
const mkNode = (attr) => {
return { ...attr };
};
exports.mkNode = mkNode;
const filterNulls = content => {
if (Array.isArray(content)) {
return content.filter(i => i);
}
console.warn('[podlite-schema] filterNulls got not array as content');
};
exports.filterNulls = filterNulls;
const mkBlock = (attrs, content) => {
const type = 'block';
const name = attrs.name;
const attributes = { id: (0, nanoid_1.nanoid)(), margin: '', ...attrs };
var result = (0, exports.mkNode)({ type, ...attributes, content: (0, exports.filterNulls)(content) });
return result;
};
exports.mkBlock = mkBlock;
const mkBlankline = () => {
return (0, exports.mkNode)({ type: 'blankline' });
};
exports.mkBlankline = mkBlankline;
const mkFomattingCode = (attrs, content) => {
return (0, exports.mkNode)({ type: 'fcode', ...attrs, content });
};
exports.mkFomattingCode = mkFomattingCode;
const mkFomattingCodeL = (attrs, content) => {
return (0, exports.mkNode)({ ...attrs, type: 'fcode', name: 'L', content: (0, exports.filterNulls)(content) });
};
exports.mkFomattingCodeL = mkFomattingCodeL;
const mkFomattingCodeDelete = content => {
return (0, exports.mkNode)({ type: 'fcode', name: 'Delete', content: (0, exports.filterNulls)(content) });
};
exports.mkFomattingCodeDelete = mkFomattingCodeDelete;
const mkMarkupCodeF = (formula) => {
return (0, exports.mkNode)({ type: 'fcode', name: 'F', content: [{ type: 'text', value: formula }] });
};
exports.mkMarkupCodeF = mkMarkupCodeF;
const mkVerbatim = text => {
return (0, exports.mkNode)({ type: 'verbatim', value: text });
};
exports.mkVerbatim = mkVerbatim;
// Table of contents helpers
const mkToc = (content, title, location) => {
return (0, exports.mkNode)({ type: 'toc', title, content, location });
};
exports.mkToc = mkToc;
const mkTocList = (content, level) => {
return (0, exports.mkNode)({ type: 'toc-list', level, content });
};
exports.mkTocList = mkTocList;
const mkTocItem = (content) => {
return (0, exports.mkNode)({ type: 'toc-item', node: content, content: [content] });
};
exports.mkTocItem = mkTocItem;
const mkCaption = (content) => {
return {
type: 'block',
name: 'caption',
content,
};
};
exports.mkCaption = mkCaption;
const mkImage = (src, alt) => {
return {
type: 'image',
src,
alt,
};
};
exports.mkImage = mkImage;
const mkRootBlock = ({ margin = '' }, content) => {
return (0, exports.mkBlock)({ name: 'root', margin }, content);
};
exports.mkRootBlock = mkRootBlock;
const mkItemBlock = ({ level, location, margin }, content) => {
return (0, exports.mkBlock)({ name: 'item', level, margin, location }, content);
};
exports.mkItemBlock = mkItemBlock;
const mkFormulaBlock = ({ value, location }) => {
return (0, exports.mkBlock)({ name: 'formula', location }, [(0, exports.mkVerbatim)(value)]);
};
exports.mkFormulaBlock = mkFormulaBlock;
//# sourceMappingURL=blocks-helpers.js.map