@openuji/speculator 0.7.3 → 0.7.5
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/README.md +1 -1
- package/dist/parse/html/SpecStatementHtmlParser.d.ts +4 -1
- package/dist/parse/html/SpecStatementHtmlParser.d.ts.map +1 -1
- package/dist/parse/html/SpecStatementHtmlParser.js +45 -26
- package/dist/parse/html/SpecStatementHtmlParser.js.map +1 -1
- package/dist/parse/html/VocabHtmlParser.d.ts +12 -0
- package/dist/parse/html/VocabHtmlParser.d.ts.map +1 -0
- package/dist/parse/html/VocabHtmlParser.js +1156 -0
- package/dist/parse/html/VocabHtmlParser.js.map +1 -0
- package/dist/parse/html/parser.d.ts.map +1 -1
- package/dist/parse/html/parser.js +42 -29
- package/dist/parse/html/parser.js.map +1 -1
- package/dist/parse/index.d.ts +1 -0
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js +2 -0
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/markdown/HeadingsMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/HeadingsMarkdownParser.js +5 -31
- package/dist/parse/markdown/HeadingsMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.d.ts.map +1 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js +2 -1
- package/dist/parse/markdown/HtmlBlockMarkdownParser.js.map +1 -1
- package/dist/parse/markdown/MdxJsxMarkdownParser.d.ts +8 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.js +61 -0
- package/dist/parse/markdown/MdxJsxMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/MdxMarkdownParser.d.ts +13 -0
- package/dist/parse/markdown/MdxMarkdownParser.d.ts.map +1 -0
- package/dist/parse/markdown/MdxMarkdownParser.js +310 -0
- package/dist/parse/markdown/MdxMarkdownParser.js.map +1 -0
- package/dist/parse/markdown/parser.d.ts.map +1 -1
- package/dist/parse/markdown/parser.js +59 -13
- package/dist/parse/markdown/parser.js.map +1 -1
- package/dist/parse/markdown/plugins.d.ts +26 -0
- package/dist/parse/markdown/plugins.d.ts.map +1 -0
- package/dist/parse/markdown/plugins.js +83 -0
- package/dist/parse/markdown/plugins.js.map +1 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.d.ts +10 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.d.ts.map +1 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.js +26 -0
- package/dist/parse/markdown/remark-mdx-jsx-only.js.map +1 -0
- package/dist/parse/parsers.d.ts +2 -2
- package/dist/parse/parsers.d.ts.map +1 -1
- package/dist/parse/parsers.js +6 -6
- package/dist/parse/parsers.js.map +1 -1
- package/dist/parse/pipeline.d.ts.map +1 -1
- package/dist/parse/pipeline.js +8 -2
- package/dist/parse/pipeline.js.map +1 -1
- package/dist/parse/utils/hast-utils.d.ts.map +1 -1
- package/dist/parse/utils/hast-utils.js +127 -19
- package/dist/parse/utils/hast-utils.js.map +1 -1
- package/dist/parse/utils/html-element-utils.d.ts +9 -0
- package/dist/parse/utils/html-element-utils.d.ts.map +1 -0
- package/dist/parse/utils/html-element-utils.js +88 -0
- package/dist/parse/utils/html-element-utils.js.map +1 -0
- package/dist/parse/utils/markdown-utils.d.ts +24 -0
- package/dist/parse/utils/markdown-utils.d.ts.map +1 -1
- package/dist/parse/utils/markdown-utils.js +106 -0
- package/dist/parse/utils/markdown-utils.js.map +1 -1
- package/dist/parse/utils/normative.js +3 -3
- package/dist/parse/utils/normative.js.map +1 -1
- package/dist/postprocess/index.d.ts +1 -0
- package/dist/postprocess/index.d.ts.map +1 -1
- package/dist/postprocess/index.js +3 -0
- package/dist/postprocess/index.js.map +1 -1
- package/dist/postprocess/plugins/statement-distribute.d.ts +13 -0
- package/dist/postprocess/plugins/statement-distribute.d.ts.map +1 -0
- package/dist/postprocess/plugins/statement-distribute.js +150 -0
- package/dist/postprocess/plugins/statement-distribute.js.map +1 -0
- package/dist/postprocess/plugins/statement-index.d.ts.map +1 -1
- package/dist/postprocess/plugins/statement-index.js +20 -17
- package/dist/postprocess/plugins/statement-index.js.map +1 -1
- package/dist/postprocess/plugins/statementsJsonLd-compute.d.ts.map +1 -1
- package/dist/postprocess/plugins/statementsJsonLd-compute.js +1 -0
- package/dist/postprocess/plugins/statementsJsonLd-compute.js.map +1 -1
- package/dist/postprocess/walk-ast.d.ts +7 -15
- package/dist/postprocess/walk-ast.d.ts.map +1 -1
- package/dist/postprocess/walk-ast.js +49 -57
- package/dist/postprocess/walk-ast.js.map +1 -1
- package/dist/preprocess/include/resolver.d.ts.map +1 -1
- package/dist/preprocess/include/resolver.js +53 -3
- package/dist/preprocess/include/resolver.js.map +1 -1
- package/dist/preprocess/types.d.ts +8 -0
- package/dist/preprocess/types.d.ts.map +1 -1
- package/dist/types/ast.generated.d.ts +65 -5
- package/dist/types/ast.generated.d.ts.map +1 -1
- package/dist/types/ast.generated.js +4 -4
- package/dist/types/ast.generated.js.map +1 -1
- package/package.json +10 -1
- package/schema/spec-ast.schema.json +193 -4
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ A plugin-based pipeline that refines the AST:
|
|
|
35
35
|
|
|
36
36
|
## 💎 Schema-Central Design
|
|
37
37
|
|
|
38
|
-
The **Speculator AST JSON Schema** is the single source of truth. All pipeline outputs are validated against this schema, ensuring that downstream tools
|
|
38
|
+
The **Speculator AST JSON Schema** is the single source of truth. All pipeline outputs are validated against this schema, ensuring that downstream tools can rely on a stable, typed data model.
|
|
39
39
|
|
|
40
40
|
### Core Node Types
|
|
41
41
|
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Spec Statement HTML Parser
|
|
3
3
|
*
|
|
4
4
|
* Handles <spec-statement> custom elements.
|
|
5
|
-
*
|
|
5
|
+
* Reads attributes and delegates child parsing to the context.
|
|
6
|
+
* Works for both pure HTML and markdown inputs — like <dfn>.
|
|
7
|
+
* Distribution of normative properties to list items / table rows
|
|
8
|
+
* is handled by the statement-distribute postprocessing plugin.
|
|
6
9
|
*/
|
|
7
10
|
import type { HtmlParserModule } from '#src/parse/registry';
|
|
8
11
|
export declare const SpecStatementHtmlParser: HtmlParserModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpecStatementHtmlParser.d.ts","sourceRoot":"","sources":["../../../src/parse/html/SpecStatementHtmlParser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SpecStatementHtmlParser.d.ts","sourceRoot":"","sources":["../../../src/parse/html/SpecStatementHtmlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAyD,MAAM,qBAAqB,CAAC;AAKnH,eAAO,MAAM,uBAAuB,EAAE,gBAYrC,CAAC"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Spec Statement HTML Parser
|
|
3
3
|
*
|
|
4
4
|
* Handles <spec-statement> custom elements.
|
|
5
|
-
*
|
|
5
|
+
* Reads attributes and delegates child parsing to the context.
|
|
6
|
+
* Works for both pure HTML and markdown inputs — like <dfn>.
|
|
7
|
+
* Distribution of normative properties to list items / table rows
|
|
8
|
+
* is handled by the statement-distribute postprocessing plugin.
|
|
6
9
|
*/
|
|
7
10
|
import { slugify, toPlainText } from '#src/parse/normalize';
|
|
8
11
|
import { inferLevel } from '#src/parse/utils/normative';
|
|
@@ -19,34 +22,50 @@ export const SpecStatementHtmlParser = {
|
|
|
19
22
|
};
|
|
20
23
|
function parseNode(element, ctx) {
|
|
21
24
|
const sourcePos = ctx.createSourcePos(element);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
25
|
+
const allChildren = ctx.transformBlockChildren(element.children);
|
|
26
|
+
const rawText = toPlainText(allChildren).trim().replace(/\s+/g, ' ');
|
|
27
|
+
const level = getLevel(element, rawText, ctx);
|
|
28
|
+
const { id, tempId } = getId(element, rawText, ctx);
|
|
29
|
+
const dataCopConcept = ctx.getAttr(element, 'data-cop-concept');
|
|
30
|
+
const dataIdPattern = ctx.getAttr(element, 'data-id-pattern');
|
|
31
|
+
const isInline = allChildren.length === 1 && allChildren[0].type === 'paragraph';
|
|
32
|
+
if (isInline) {
|
|
33
|
+
return {
|
|
34
|
+
type: 'specStatement',
|
|
35
|
+
id,
|
|
36
|
+
tempId,
|
|
37
|
+
level: level,
|
|
38
|
+
dataCopConcept,
|
|
39
|
+
dataIdPattern,
|
|
40
|
+
contentText: rawText,
|
|
41
|
+
children: allChildren[0].children,
|
|
42
|
+
sourcePos,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return {
|
|
47
|
+
type: 'specStatementGroup',
|
|
48
|
+
id,
|
|
49
|
+
level: level,
|
|
50
|
+
dataCopConcept,
|
|
51
|
+
dataIdPattern,
|
|
52
|
+
children: allChildren,
|
|
53
|
+
sourcePos,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function getLevel(element, text, ctx) {
|
|
27
58
|
let level = (ctx.getAttr(element, 'level') || '').toUpperCase().replace(/\s+/g, ' ');
|
|
28
59
|
if (!level) {
|
|
29
|
-
level = inferLevel(
|
|
60
|
+
level = inferLevel(text);
|
|
30
61
|
}
|
|
31
|
-
|
|
62
|
+
return level;
|
|
63
|
+
}
|
|
64
|
+
function getId(element, text, ctx) {
|
|
32
65
|
const explicitId = ctx.getAttr(element, 'id');
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
if (!id) {
|
|
38
|
-
tempId = about ? (about.startsWith('#') ? about.slice(1) : slugify(about)) : slugify(contentText);
|
|
39
|
-
}
|
|
40
|
-
const node = {
|
|
41
|
-
type: 'specStatement',
|
|
42
|
-
id,
|
|
43
|
-
tempId,
|
|
44
|
-
level: level,
|
|
45
|
-
dataCopConcept,
|
|
46
|
-
contentText,
|
|
47
|
-
children,
|
|
48
|
-
sourcePos,
|
|
49
|
-
};
|
|
50
|
-
return node;
|
|
66
|
+
if (explicitId)
|
|
67
|
+
return { id: explicitId };
|
|
68
|
+
const tempId = slugify(text);
|
|
69
|
+
return { tempId };
|
|
51
70
|
}
|
|
52
71
|
//# sourceMappingURL=SpecStatementHtmlParser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpecStatementHtmlParser.js","sourceRoot":"","sources":["../../../src/parse/html/SpecStatementHtmlParser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SpecStatementHtmlParser.js","sourceRoot":"","sources":["../../../src/parse/html/SpecStatementHtmlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACrD,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,CAAC,gBAAgB,CAAC;IAC3B,KAAK,EAAE,CAAC;IAER,WAAW,CAAC,IAAa,EAAE,GAAiB;QACxC,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAa,EAAE,GAAiB;QACzC,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAsB,CAAC;IACrD,CAAC;CACJ,CAAC;AAEF,SAAS,SAAS,CAAC,OAAgB,EAAE,GAAiB;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,WAAW,CAAC,WAA4C,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtG,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;IAEjF,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,EAAE;YACF,MAAM;YACN,KAAK,EAAE,KAAoC;YAC3C,cAAc;YACd,aAAa;YACb,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAG,WAAW,CAAC,CAAC,CAAuC,CAAC,QAAQ;YACxE,SAAS;SACZ,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,OAAO;YACH,IAAI,EAAE,oBAAoB;YAC1B,EAAE;YACF,KAAK,EAAE,KAAoC;YAC3C,cAAc;YACd,aAAa;YACb,QAAQ,EAAE,WAAsB;YAChC,SAAS;SACZ,CAAC;IACN,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB,EAAE,IAAY,EAAE,GAAiB;IAC/D,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrF,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,KAAK,CAAC,OAAgB,EAAE,IAAY,EAAE,GAAiB;IAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAE9C,IAAI,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vocab HTML Parser
|
|
3
|
+
*
|
|
4
|
+
* Handles <spec-vocab> custom elements.
|
|
5
|
+
* Reads pre-loaded sibling metadata from `unit.sideFiles` (populated at preprocess time)
|
|
6
|
+
* to generate normative prose (Tables, Statements) from vocabulary files.
|
|
7
|
+
*
|
|
8
|
+
* This parser is fully isomorphic — it does NOT access the filesystem directly.
|
|
9
|
+
*/
|
|
10
|
+
import type { HtmlParserModule } from '#src/parse/registry';
|
|
11
|
+
export declare const VocabHtmlParser: HtmlParserModule;
|
|
12
|
+
//# sourceMappingURL=VocabHtmlParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VocabHtmlParser.d.ts","sourceRoot":"","sources":["../../../src/parse/html/VocabHtmlParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AA+D9F,eAAO,MAAM,eAAe,EAAE,gBAgC7B,CAAC"}
|