@podlite/schema 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/esm/ast-helpers.d.ts +2 -0
- package/esm/ast-helpers.js +10 -0
- package/esm/ast-helpers.js.map +1 -0
- package/esm/ast-inerator.d.ts +6 -0
- package/esm/ast-inerator.js +57 -0
- package/esm/ast-inerator.js.map +1 -0
- package/esm/blocks-helpers.d.ts +32 -0
- package/esm/blocks-helpers.js +65 -0
- package/esm/blocks-helpers.js.map +1 -0
- package/esm/exportAny.d.ts +19 -0
- package/esm/exportAny.js +65 -0
- package/esm/exportAny.js.map +1 -0
- package/esm/exportHtml.d.ts +15 -0
- package/esm/exportHtml.js +279 -0
- package/esm/exportHtml.js.map +1 -0
- package/esm/grammar.d.ts +14 -0
- package/esm/grammar.js +6405 -0
- package/esm/grammar.js.map +1 -0
- package/esm/grammarfc.d.ts +14 -0
- package/esm/grammarfc.js +4218 -0
- package/esm/grammarfc.js.map +1 -0
- package/esm/helpers/config.d.ts +12 -0
- package/esm/helpers/config.js +52 -0
- package/esm/helpers/config.js.map +1 -0
- package/esm/helpers/corePlugins.d.ts +12 -0
- package/esm/helpers/corePlugins.js +23 -0
- package/esm/helpers/corePlugins.js.map +1 -0
- package/esm/helpers/handlers.d.ts +47 -0
- package/esm/helpers/handlers.js +107 -0
- package/esm/helpers/handlers.js.map +1 -0
- package/esm/helpers/ids.d.ts +18 -0
- package/esm/helpers/ids.js +69 -0
- package/esm/helpers/ids.js.map +1 -0
- package/esm/helpers/makeInterator.d.ts +5 -0
- package/esm/helpers/makeInterator.js +52 -0
- package/esm/helpers/makeInterator.js.map +1 -0
- package/esm/helpers/makeQuery.d.ts +47 -0
- package/esm/helpers/makeQuery.js +100 -0
- package/esm/helpers/makeQuery.js.map +1 -0
- package/esm/helpers/makeQuery.test.d.ts +1 -0
- package/esm/helpers/makeQuery.test.js +51 -0
- package/esm/helpers/makeQuery.test.js.map +1 -0
- package/esm/helpers/makeTransformer.d.ts +7 -0
- package/esm/helpers/makeTransformer.js +61 -0
- package/esm/helpers/makeTransformer.js.map +1 -0
- package/esm/helpers/plugins.d.ts +2 -0
- package/esm/helpers/plugins.js +23 -0
- package/esm/helpers/plugins.js.map +1 -0
- package/esm/index.d.ts +82 -0
- package/esm/index.js +123 -0
- package/esm/index.js.map +1 -0
- package/esm/pluggableParser.d.ts +27 -0
- package/esm/pluggableParser.js +71 -0
- package/esm/pluggableParser.js.map +1 -0
- package/esm/plugin-clean-location.d.ts +2 -0
- package/esm/plugin-clean-location.js +19 -0
- package/esm/plugin-clean-location.js.map +1 -0
- package/esm/plugin-defn-fill-term.d.ts +2 -0
- package/esm/plugin-defn-fill-term.js +50 -0
- package/esm/plugin-defn-fill-term.js.map +1 -0
- package/esm/plugin-formatting-codes.d.ts +3 -0
- package/esm/plugin-formatting-codes.js +54 -0
- package/esm/plugin-formatting-codes.js.map +1 -0
- package/esm/plugin-group-defn.d.ts +2 -0
- package/esm/plugin-group-defn.js +71 -0
- package/esm/plugin-group-defn.js.map +1 -0
- package/esm/plugin-group-items.d.ts +2 -0
- package/esm/plugin-group-items.js +79 -0
- package/esm/plugin-group-items.js.map +1 -0
- package/esm/plugin-heading.d.ts +2 -0
- package/esm/plugin-heading.js +33 -0
- package/esm/plugin-heading.js.map +1 -0
- package/esm/plugin-items.d.ts +2 -0
- package/esm/plugin-items.js +41 -0
- package/esm/plugin-items.js.map +1 -0
- package/esm/plugin-tables.d.ts +5 -0
- package/esm/plugin-tables.js +141 -0
- package/esm/plugin-tables.js.map +1 -0
- package/esm/plugin-vmargin.d.ts +3 -0
- package/esm/plugin-vmargin.js +29 -0
- package/esm/plugin-vmargin.js.map +1 -0
- package/esm/query-helpers.d.ts +28 -0
- package/esm/query-helpers.js +131 -0
- package/esm/query-helpers.js.map +1 -0
- package/esm/types.d.ts +357 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/esm/writer.d.ts +30 -0
- package/esm/writer.js +85 -0
- package/esm/writer.js.map +1 -0
- package/esm/writerHtml.d.ts +11 -0
- package/esm/writerHtml.js +29 -0
- package/esm/writerHtml.js.map +1 -0
- package/lib/grammar.js +4 -3
- package/lib/plugin-formatting-codes.js +2 -1
- package/lib/types.d.ts +16 -1
- package/package.json +9 -7
- package/schema/AstTree.json +71 -0
- package/schema/PodliteDocument.json +71 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function flattenDeep(arr) {
|
|
2
|
+
if (!Array.isArray(arr)) {
|
|
3
|
+
return arr;
|
|
4
|
+
}
|
|
5
|
+
return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), []);
|
|
6
|
+
}
|
|
7
|
+
function thisFunc(rules) {
|
|
8
|
+
function interator(node, context) {
|
|
9
|
+
if (node instanceof Array) {
|
|
10
|
+
// filter null and undefined nodes
|
|
11
|
+
return flattenDeep(node.map(item => interator(item, context))).filter(Boolean);
|
|
12
|
+
}
|
|
13
|
+
if ('string' === typeof node) {
|
|
14
|
+
// convert string to lex node with type
|
|
15
|
+
return interator({ type: 'text', value: node }, context);
|
|
16
|
+
}
|
|
17
|
+
// get first rule for this node
|
|
18
|
+
const reversed = rules.slice();
|
|
19
|
+
reversed.reverse();
|
|
20
|
+
const ruleIndex = reversed.findIndex(rule => rule.isFor(node));
|
|
21
|
+
if (ruleIndex !== -1) {
|
|
22
|
+
// try to find next rule
|
|
23
|
+
const nextRuleSet = reversed.slice(ruleIndex + 1);
|
|
24
|
+
const nextRuleIndex = nextRuleSet.findIndex(rule => rule.isFor(node));
|
|
25
|
+
const defaultFn = (n = node, ctx = context, localInterator = interator) => {
|
|
26
|
+
if (nextRuleIndex !== -1) {
|
|
27
|
+
nextRuleSet[nextRuleIndex].fn(n, ctx, localInterator, () => {
|
|
28
|
+
/* empty default action */
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
if (typeof reversed[ruleIndex].fn !== 'function') {
|
|
36
|
+
console.warn('[pod6] bad fn for ' + JSON.stringify(node, null, 2));
|
|
37
|
+
}
|
|
38
|
+
return reversed[ruleIndex].fn(node, context, interator, defaultFn);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// not found rule
|
|
42
|
+
const newNode = { ...node };
|
|
43
|
+
if (newNode.hasOwnProperty('content')) {
|
|
44
|
+
return interator(newNode.content, context);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
interator.rules = rules;
|
|
49
|
+
return interator;
|
|
50
|
+
}
|
|
51
|
+
export default thisFunc;
|
|
52
|
+
//# sourceMappingURL=makeInterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeInterator.js","sourceRoot":"","sources":["../../src/helpers/makeInterator.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG;IACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,GAAG,CAAA;KACX;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5G,CAAC;AACD,SAAS,QAAQ,CAAC,KAAK;IACrB,SAAS,SAAS,CAAC,IAAI,EAAE,OAAO;QAC9B,IAAI,IAAI,YAAY,KAAK,EAAE;YACzB,kCAAkC;YAClC,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;SAC/E;QACD,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;YAC5B,uCAAuC;YACvC,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;SACzD;QACD,+BAA+B;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC9B,QAAQ,CAAC,OAAO,EAAE,CAAA;QAClB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9D,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;YACpB,wBAAwB;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACrE,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO,EAAE,cAAc,GAAG,SAAS,EAAE,EAAE;gBACxE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACxB,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE;wBACzD,0BAA0B;oBAC5B,CAAC,CAAC,CAAA;iBACH;qBAAM;oBACL,OAAM;iBACP;YACH,CAAC,CAAA;YAED,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,UAAU,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;aACnE;YACD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;SACnE;aAAM;YACL,iBAAiB;YACjB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,EAAE,CAAA;YAC3B,IAAI,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACrC,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;aAC3C;SACF;IACH,CAAC;IACD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;IACvB,OAAO,SAAS,CAAA;AAClB,CAAC;AACD,eAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import Writer from '../writer';
|
|
2
|
+
/**
|
|
3
|
+
sample | type | name
|
|
4
|
+
----------------------------------
|
|
5
|
+
'C<>',
|
|
6
|
+
'C:fcode' fcode C
|
|
7
|
+
'<>' fcode any name, or /.+/
|
|
8
|
+
'name' block 'name'
|
|
9
|
+
':blankline' blankline any name, or /.+/
|
|
10
|
+
'C:fcode' fcode C
|
|
11
|
+
'*:*', '*' any type any name
|
|
12
|
+
|
|
13
|
+
*/
|
|
14
|
+
export interface RuleHandler<T = any> {
|
|
15
|
+
(writer: Writer, processor: any): (node: T, ctx: any, interator: any) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare type RuleObject = {
|
|
18
|
+
[name: string]: RuleHandler;
|
|
19
|
+
};
|
|
20
|
+
export declare type Filter = {
|
|
21
|
+
name: string;
|
|
22
|
+
type?: string;
|
|
23
|
+
} | {
|
|
24
|
+
name?: any;
|
|
25
|
+
type: 'block' | any;
|
|
26
|
+
} | {};
|
|
27
|
+
export interface GetQuery {
|
|
28
|
+
(k: string): Filter;
|
|
29
|
+
}
|
|
30
|
+
export declare const makePlug: (k: string) => {};
|
|
31
|
+
export declare function is(query: any, node: any): boolean;
|
|
32
|
+
export interface Rule {
|
|
33
|
+
(): {};
|
|
34
|
+
isFor(): void;
|
|
35
|
+
fn(): void;
|
|
36
|
+
}
|
|
37
|
+
export declare const makeRule: (query: any, fn: any) => {
|
|
38
|
+
(): void;
|
|
39
|
+
rule: any;
|
|
40
|
+
isFor: (node: any) => boolean;
|
|
41
|
+
fn: any;
|
|
42
|
+
};
|
|
43
|
+
interface MakeRulesArray {
|
|
44
|
+
(key: RuleObject | Array<RuleObject>, fn?: Function): Array<any>;
|
|
45
|
+
}
|
|
46
|
+
export declare const makeRulesArray: MakeRulesArray;
|
|
47
|
+
export {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
const getQuery = function (k) {
|
|
2
|
+
if (k === '*:*' || k === '*') {
|
|
3
|
+
return {};
|
|
4
|
+
}
|
|
5
|
+
if (k === '<>') {
|
|
6
|
+
return { type: 'fcode' };
|
|
7
|
+
}
|
|
8
|
+
// try to split 'name:type'
|
|
9
|
+
let [name, type] = k.split(':');
|
|
10
|
+
if (name && type) {
|
|
11
|
+
return { name, type };
|
|
12
|
+
}
|
|
13
|
+
if (!name) {
|
|
14
|
+
return { type };
|
|
15
|
+
}
|
|
16
|
+
if (!type) {
|
|
17
|
+
// check C<>
|
|
18
|
+
const re = name.match(/(.+)\<\>/);
|
|
19
|
+
if (re) {
|
|
20
|
+
return { type: 'fcode', name: re[1] };
|
|
21
|
+
}
|
|
22
|
+
return { name, type: 'block' };
|
|
23
|
+
}
|
|
24
|
+
return { name, type };
|
|
25
|
+
};
|
|
26
|
+
export const makePlug = (k) => {
|
|
27
|
+
const res = getQuery(k);
|
|
28
|
+
// @ts-ignores
|
|
29
|
+
let { name, type } = res;
|
|
30
|
+
if (type && type === '*') {
|
|
31
|
+
return { name };
|
|
32
|
+
}
|
|
33
|
+
if (name && name === '*') {
|
|
34
|
+
return { type };
|
|
35
|
+
}
|
|
36
|
+
return res;
|
|
37
|
+
};
|
|
38
|
+
// is - check if node have handler
|
|
39
|
+
export function is(query, node) {
|
|
40
|
+
function isEmpty(obj) {
|
|
41
|
+
for (var prop in obj) {
|
|
42
|
+
if (obj.hasOwnProperty(prop))
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
// check if query empty
|
|
48
|
+
if (isEmpty(query))
|
|
49
|
+
return true;
|
|
50
|
+
for (var prop in query) {
|
|
51
|
+
if (query === undefined) {
|
|
52
|
+
console.warn('[pod6] undefined key!!!');
|
|
53
|
+
}
|
|
54
|
+
if (query.hasOwnProperty(prop)) {
|
|
55
|
+
if (node === undefined) {
|
|
56
|
+
console.warn('[pod6] undefined node!!!');
|
|
57
|
+
}
|
|
58
|
+
if (node && node.hasOwnProperty(prop)) {
|
|
59
|
+
if (query[prop] !== node[prop]) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
export const makeRule = (query, fn) => {
|
|
71
|
+
rule.rule = query;
|
|
72
|
+
rule.isFor = isFor;
|
|
73
|
+
rule.fn = fn;
|
|
74
|
+
return rule;
|
|
75
|
+
function rule() { }
|
|
76
|
+
function isFor(node) {
|
|
77
|
+
if ('string' === typeof node)
|
|
78
|
+
return false;
|
|
79
|
+
return is(query, node);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
export const makeRulesArray = (key, fn) => {
|
|
83
|
+
if (key instanceof Array) {
|
|
84
|
+
return key.reduce((acc, item) => {
|
|
85
|
+
acc.push(...makeRulesArray(item));
|
|
86
|
+
return acc;
|
|
87
|
+
}, []);
|
|
88
|
+
}
|
|
89
|
+
if (key instanceof Object) {
|
|
90
|
+
let rules = [];
|
|
91
|
+
for (var prop in key) {
|
|
92
|
+
if (key.hasOwnProperty(prop)) {
|
|
93
|
+
rules.push(makeRule(makePlug(prop), key[prop]));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return rules;
|
|
97
|
+
}
|
|
98
|
+
return [makeRule(makePlug(key), fn)];
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=makeQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeQuery.js","sourceRoot":"","sources":["../../src/helpers/makeQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const makePlug = require('./makeQuery').makePlug;
|
|
2
|
+
const fixtures = [
|
|
3
|
+
'name:block',
|
|
4
|
+
{
|
|
5
|
+
name: 'name',
|
|
6
|
+
type: 'block',
|
|
7
|
+
},
|
|
8
|
+
'C<>',
|
|
9
|
+
{
|
|
10
|
+
name: 'C',
|
|
11
|
+
type: 'fcode',
|
|
12
|
+
},
|
|
13
|
+
':blankline',
|
|
14
|
+
{
|
|
15
|
+
type: 'blankline',
|
|
16
|
+
},
|
|
17
|
+
'*:block',
|
|
18
|
+
{
|
|
19
|
+
type: 'block',
|
|
20
|
+
},
|
|
21
|
+
'*:*',
|
|
22
|
+
{},
|
|
23
|
+
'*',
|
|
24
|
+
{},
|
|
25
|
+
'<>',
|
|
26
|
+
{
|
|
27
|
+
type: 'fcode',
|
|
28
|
+
},
|
|
29
|
+
'name',
|
|
30
|
+
{
|
|
31
|
+
name: 'name',
|
|
32
|
+
type: 'block',
|
|
33
|
+
},
|
|
34
|
+
'Special<>',
|
|
35
|
+
{
|
|
36
|
+
name: 'Special',
|
|
37
|
+
type: 'fcode',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
const pairs = fixtures.reduce(function (result, value, index, array) {
|
|
41
|
+
if (index % 2 === 0)
|
|
42
|
+
result.push(array.slice(index, index + 2));
|
|
43
|
+
return result;
|
|
44
|
+
}, []);
|
|
45
|
+
const log = a => console.log(JSON.stringify(a, null, 2));
|
|
46
|
+
describe('run make query helpers tests', () => {
|
|
47
|
+
pairs.map(([k, v], idx) => {
|
|
48
|
+
test(`test ${idx}`, () => expect(makePlug(k)).toEqual(v));
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=makeQuery.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeQuery.test.js","sourceRoot":"","sources":["../../src/helpers/makeQuery.test.js"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAA;AAEhD,MAAM,QAAQ,GAAG;IACf,YAAY;IACZ;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd;IACD,KAAK;IACL;QACE,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,OAAO;KACd;IACD,YAAY;IACZ;QACE,IAAI,EAAE,WAAW;KAClB;IACD,SAAS;IACT;QACE,IAAI,EAAE,OAAO;KACd;IACD,KAAK;IACL,EAAE;IACF,GAAG;IACH,EAAE;IACF,IAAI;IACJ;QACE,IAAI,EAAE,OAAO;KACd;IACD,MAAM;IACN;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd;IACD,WAAW;IACX;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;KACd;CACF,CAAA;AAED,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACjE,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAA;AACf,CAAC,EAAE,EAAE,CAAC,CAAA;AAEN,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAExD,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACxB,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { makeRule, makePlug } from './makeQuery';
|
|
2
|
+
// the following names: MyBlock, myBlock are use for extending pod6
|
|
3
|
+
export function isNamedBlock(name) {
|
|
4
|
+
return name && name !== name.toLowerCase() && name !== name.toUpperCase();
|
|
5
|
+
}
|
|
6
|
+
// skip warnings for semantic blocks
|
|
7
|
+
export function isSemanticBlock(node) {
|
|
8
|
+
const name = node.name || '';
|
|
9
|
+
const isTypeBlock = (node.type || '') === 'block';
|
|
10
|
+
return isTypeBlock && name === name.toUpperCase();
|
|
11
|
+
}
|
|
12
|
+
function flattenDeep(arr) {
|
|
13
|
+
return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), []);
|
|
14
|
+
}
|
|
15
|
+
export const makeTransformer = rule => {
|
|
16
|
+
let rules = [];
|
|
17
|
+
function use(key, fn) {
|
|
18
|
+
if (key instanceof Array) {
|
|
19
|
+
console.warn(`[pod] Unsupported param for ${key}`);
|
|
20
|
+
}
|
|
21
|
+
if (key instanceof Object) {
|
|
22
|
+
for (var prop in key) {
|
|
23
|
+
if (key.hasOwnProperty(prop)) {
|
|
24
|
+
use(prop, key[prop]);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
rules.push(makeRule(makePlug(key), fn));
|
|
30
|
+
}
|
|
31
|
+
function visiter(node, context = {}) {
|
|
32
|
+
if (node instanceof Array) {
|
|
33
|
+
return flattenDeep(node.map(item => visiter(item, context)));
|
|
34
|
+
}
|
|
35
|
+
if ('string' === typeof node) {
|
|
36
|
+
// convert string to lex node with type
|
|
37
|
+
//return visiter({type:'text', value:node}, context)
|
|
38
|
+
return node;
|
|
39
|
+
}
|
|
40
|
+
// get first rule for this node
|
|
41
|
+
const reversed = rules.slice();
|
|
42
|
+
reversed.reverse();
|
|
43
|
+
const ruleIndex = reversed.findIndex(rule => rule.isFor(node));
|
|
44
|
+
if (ruleIndex !== -1) {
|
|
45
|
+
return reversed[ruleIndex].fn(node, context, visiter);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// not found rule
|
|
49
|
+
const newNode = { ...node };
|
|
50
|
+
if (newNode.hasOwnProperty('content')) {
|
|
51
|
+
newNode.content = visiter(newNode.content, context);
|
|
52
|
+
}
|
|
53
|
+
return newNode;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
use(rule);
|
|
57
|
+
visiter.rules = rules;
|
|
58
|
+
return visiter;
|
|
59
|
+
};
|
|
60
|
+
export default makeTransformer;
|
|
61
|
+
//# sourceMappingURL=makeTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeTransformer.js","sourceRoot":"","sources":["../../src/helpers/makeTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export const toAnyRules = (method, allplugins) => {
|
|
2
|
+
// make uniq plugins
|
|
3
|
+
const resultMap = allplugins.reverse().reduce((result, plugins) => {
|
|
4
|
+
for (const plugin of Object.entries(plugins)) {
|
|
5
|
+
const [key, val] = plugin;
|
|
6
|
+
if (!(key in result)) {
|
|
7
|
+
result[key] = val;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return result;
|
|
11
|
+
}, {});
|
|
12
|
+
let result = {};
|
|
13
|
+
// prepare plugins for export <method>
|
|
14
|
+
for (const plugin of Object.entries(resultMap)) {
|
|
15
|
+
const [key, val = {}] = plugin;
|
|
16
|
+
//@ts-ignore
|
|
17
|
+
if (method in val) {
|
|
18
|
+
result[key] = val[method];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/helpers/plugins.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,UAAqB,EAAE,EAAE;IAC1D,oBAAoB;IACpB,MAAM,SAAS,GAAY,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAe,EAAE,OAAgB,EAAE,EAAE;QAC3F,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAAA;YACzB,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE;gBACpB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;aAClB;SACF;QACD,OAAO,MAAM,CAAA;IACf,CAAC,EAAW,EAAE,CAAC,CAAA;IAEf,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,sCAAsC;IACtC,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,MAAM,CAAA;QAC9B,YAAY;QACZ,IAAI,MAAM,IAAI,GAAG,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;SAC1B;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ErrorObject } from 'ajv';
|
|
2
|
+
import { PodNode } from './types';
|
|
3
|
+
export { PodliteDocument } from './types';
|
|
4
|
+
export { AstTree } from './types';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './blocks-helpers';
|
|
7
|
+
export * from './query-helpers';
|
|
8
|
+
export * from './ast-helpers';
|
|
9
|
+
export * from './helpers/handlers';
|
|
10
|
+
export { makeInterator } from './ast-inerator';
|
|
11
|
+
export { makeTransformer, isNamedBlock, isSemanticBlock } from './helpers/makeTransformer';
|
|
12
|
+
export { toAny } from './exportAny';
|
|
13
|
+
export { makeAttrs } from './helpers/config';
|
|
14
|
+
export { pluginCleanLocation } from './plugin-clean-location';
|
|
15
|
+
export { toAnyRules } from './helpers/plugins';
|
|
16
|
+
export { podlitePluggable, Podlite, PodliteExport, cleanIds, frozenIds } from './pluggableParser';
|
|
17
|
+
export declare function toAst(): {};
|
|
18
|
+
export declare type SchemaValidationError = ErrorObject<string, Record<string, any>>;
|
|
19
|
+
export declare function getTextContentFromNode(node: PodNode): string;
|
|
20
|
+
export declare function validatePodliteAst(data: unknown): SchemaValidationError[];
|
|
21
|
+
export declare function validateAstTree(data: unknown): SchemaValidationError[];
|
|
22
|
+
export declare function validateAst(data: unknown, Name?: string): SchemaValidationError[];
|
|
23
|
+
export declare function isValidateError(result: SchemaValidationError[], src: any): any;
|
|
24
|
+
export interface Test {
|
|
25
|
+
ters: string;
|
|
26
|
+
}
|
|
27
|
+
export interface nBlock {
|
|
28
|
+
type: 'block';
|
|
29
|
+
name: 'pod';
|
|
30
|
+
content: AST;
|
|
31
|
+
margin: string;
|
|
32
|
+
}
|
|
33
|
+
export interface nCode {
|
|
34
|
+
type: 'code';
|
|
35
|
+
content: [];
|
|
36
|
+
name: string;
|
|
37
|
+
margin: string;
|
|
38
|
+
config: [];
|
|
39
|
+
text: string;
|
|
40
|
+
}
|
|
41
|
+
export interface nText {
|
|
42
|
+
type: 'text';
|
|
43
|
+
content: [];
|
|
44
|
+
name: string;
|
|
45
|
+
margin: string;
|
|
46
|
+
config: [];
|
|
47
|
+
value: string;
|
|
48
|
+
}
|
|
49
|
+
export interface nPara {
|
|
50
|
+
type: 'para';
|
|
51
|
+
content: [];
|
|
52
|
+
name: string;
|
|
53
|
+
margin: string;
|
|
54
|
+
config: [];
|
|
55
|
+
}
|
|
56
|
+
export interface nVerbatim {
|
|
57
|
+
type: 'verbatim';
|
|
58
|
+
value: string;
|
|
59
|
+
margin: string;
|
|
60
|
+
text: string;
|
|
61
|
+
}
|
|
62
|
+
export declare type Node = nBlock | nCode | nText | nPara | nVerbatim;
|
|
63
|
+
export declare type AST = Array<Node>;
|
|
64
|
+
export declare type ParserPlugin = (opt: {
|
|
65
|
+
skipChain: number;
|
|
66
|
+
podMode: number;
|
|
67
|
+
}) => (param: AST) => AST;
|
|
68
|
+
declare function makeTree(): {
|
|
69
|
+
(): void;
|
|
70
|
+
use: (plugin: ParserPlugin) => any;
|
|
71
|
+
parse: (src: string, opt?: {
|
|
72
|
+
skipChain: number;
|
|
73
|
+
podMode: number;
|
|
74
|
+
}) => AST;
|
|
75
|
+
};
|
|
76
|
+
export { makeTree as toTree };
|
|
77
|
+
declare const parse: Function;
|
|
78
|
+
export { parse as parse };
|
|
79
|
+
export { default as toHtml } from './exportHtml';
|
|
80
|
+
export { default as Writer } from './writer';
|
|
81
|
+
declare const VERSION: any;
|
|
82
|
+
export { VERSION as version };
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import Ajv from 'ajv';
|
|
2
|
+
import * as pointer from 'json-pointer';
|
|
3
|
+
import * as jsonShemes from '../schema';
|
|
4
|
+
import { makeInterator } from './ast-inerator';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './blocks-helpers';
|
|
7
|
+
export * from './query-helpers';
|
|
8
|
+
export * from './ast-helpers';
|
|
9
|
+
export * from './helpers/handlers';
|
|
10
|
+
export { makeInterator } from './ast-inerator';
|
|
11
|
+
export { makeTransformer, isNamedBlock, isSemanticBlock } from './helpers/makeTransformer';
|
|
12
|
+
export { toAny } from './exportAny';
|
|
13
|
+
export { makeAttrs } from './helpers/config';
|
|
14
|
+
export { pluginCleanLocation } from './plugin-clean-location';
|
|
15
|
+
export { toAnyRules } from './helpers/plugins';
|
|
16
|
+
export { podlitePluggable, cleanIds, frozenIds } from './pluggableParser';
|
|
17
|
+
import * as parser from './grammar';
|
|
18
|
+
import vmargin_plug from './plugin-vmargin';
|
|
19
|
+
import formattingCodes_plug from './plugin-formatting-codes';
|
|
20
|
+
import itemsNumbering_plug from './plugin-items';
|
|
21
|
+
import heading_plug from './plugin-heading';
|
|
22
|
+
import defnGroup_plug from './plugin-group-defn';
|
|
23
|
+
import itemsGroup_plug from './plugin-group-items';
|
|
24
|
+
import defnTerms_plug from './plugin-defn-fill-term';
|
|
25
|
+
import table_plug from './plugin-tables';
|
|
26
|
+
export function toAst() {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
const ajv = new Ajv({ strict: true, allowUnionTypes: true });
|
|
30
|
+
export function getTextContentFromNode(node) {
|
|
31
|
+
let text = '';
|
|
32
|
+
const rules = {
|
|
33
|
+
':text': node => {
|
|
34
|
+
text += node.value;
|
|
35
|
+
},
|
|
36
|
+
':verbatim': node => {
|
|
37
|
+
text += node.value;
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
const transformer = makeInterator(rules);
|
|
41
|
+
const res = transformer(node, {});
|
|
42
|
+
return text;
|
|
43
|
+
}
|
|
44
|
+
export function validatePodliteAst(data) {
|
|
45
|
+
return validateAst(data, 'PodliteDocument');
|
|
46
|
+
}
|
|
47
|
+
export function validateAstTree(data) {
|
|
48
|
+
return validateAst(data, 'AstTree');
|
|
49
|
+
}
|
|
50
|
+
export function validateAst(data, Name = 'AstTree') {
|
|
51
|
+
const AstTreeSchema = jsonShemes[Name];
|
|
52
|
+
if (!AstTreeSchema) {
|
|
53
|
+
console.warn(`[validateAst] Can't exists ${Name} scheme.`);
|
|
54
|
+
}
|
|
55
|
+
const validate = ajv.compile(AstTreeSchema);
|
|
56
|
+
if (validate(data)) {
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
return validate.errors || [];
|
|
60
|
+
}
|
|
61
|
+
export function isValidateError(result, src) {
|
|
62
|
+
if (result.length > 0) {
|
|
63
|
+
// get most erorred dataPath
|
|
64
|
+
let errors_by_path = {};
|
|
65
|
+
const reducer = (acc, value) => {
|
|
66
|
+
acc[value.dataPath] = (acc[value.dataPath] || 0) + 1;
|
|
67
|
+
return acc;
|
|
68
|
+
};
|
|
69
|
+
const pathMap = result.reduce(reducer, errors_by_path);
|
|
70
|
+
const mostlyError = (Object.keys(pathMap).sort((a, b) => pathMap[b] - pathMap[a]) || [])[0];
|
|
71
|
+
return pointer.get(src, mostlyError);
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
function makeTree() {
|
|
76
|
+
var plugins = [];
|
|
77
|
+
chain.use = use;
|
|
78
|
+
chain.parse = parse;
|
|
79
|
+
chain.use(vmargin_plug);
|
|
80
|
+
chain.use(itemsNumbering_plug);
|
|
81
|
+
chain.use(heading_plug);
|
|
82
|
+
chain.use(defnTerms_plug);
|
|
83
|
+
chain.use(table_plug);
|
|
84
|
+
chain.use(formattingCodes_plug);
|
|
85
|
+
// save order for the next two plugins
|
|
86
|
+
chain.use(itemsGroup_plug);
|
|
87
|
+
chain.use(defnGroup_plug);
|
|
88
|
+
return chain;
|
|
89
|
+
function chain() {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
function use(plugin) {
|
|
93
|
+
if (!['function'].includes(typeof plugin)) {
|
|
94
|
+
throw plugin;
|
|
95
|
+
}
|
|
96
|
+
plugins.push(plugin);
|
|
97
|
+
return chain;
|
|
98
|
+
}
|
|
99
|
+
function parse(src, opt = { skipChain: 0, podMode: 1 }) {
|
|
100
|
+
let tree = parser.parse(src, { podMode: opt.podMode });
|
|
101
|
+
if (!opt.skipChain) {
|
|
102
|
+
for (let i = 0; i < plugins.length; i++) {
|
|
103
|
+
const plugin = plugins[i];
|
|
104
|
+
// init
|
|
105
|
+
const visitor = plugin(opt);
|
|
106
|
+
// process tree
|
|
107
|
+
tree = visitor(tree);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return tree;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export { makeTree as toTree };
|
|
114
|
+
const parse = makeTree().parse;
|
|
115
|
+
export { parse as parse };
|
|
116
|
+
export { default as toHtml } from './exportHtml';
|
|
117
|
+
export { default as Writer } from './writer';
|
|
118
|
+
// Cannot be `import` as it's not under TS root dir
|
|
119
|
+
// https://stackoverflow.com/questions/51070138/how-to-import-package-json-into-typescript-file-without-including-it-in-the-comp
|
|
120
|
+
const { version: VERSION } = require('../package.json');
|
|
121
|
+
// const {version: VERSION} = {version:'0.1.0'};
|
|
122
|
+
export { VERSION as version };
|
|
123
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Plugins, PodliteDocument } from '.';
|
|
2
|
+
export { cleanIds, frozenIds } from './helpers/ids';
|
|
3
|
+
export interface podlitePluggableOpt {
|
|
4
|
+
plugins?: Plugins;
|
|
5
|
+
}
|
|
6
|
+
export interface PodliteExport {
|
|
7
|
+
errors: any;
|
|
8
|
+
toString: () => string;
|
|
9
|
+
valueOf: () => string;
|
|
10
|
+
indexingTerms: any;
|
|
11
|
+
annotations: any;
|
|
12
|
+
defenitions: any;
|
|
13
|
+
interator: any;
|
|
14
|
+
}
|
|
15
|
+
export interface Podlite {
|
|
16
|
+
toAstResult: (ast: PodliteDocument) => PodliteExport;
|
|
17
|
+
(): any;
|
|
18
|
+
use: (plugin: Plugins) => Podlite;
|
|
19
|
+
parse: (text: string, opt?: {
|
|
20
|
+
skipChain: number;
|
|
21
|
+
podMode: number;
|
|
22
|
+
}) => PodliteDocument;
|
|
23
|
+
toHtml: (ast: PodliteDocument) => PodliteExport;
|
|
24
|
+
toAst: (ast: PodliteDocument) => PodliteDocument;
|
|
25
|
+
getPlugins: () => Array<Plugins>;
|
|
26
|
+
}
|
|
27
|
+
export declare const podlitePluggable: (params?: podlitePluggableOpt) => Podlite;
|