@blockml/parser 0.8.0 → 0.9.0
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/blocks/org/blockml/bml/compiler/parser/Library.bml +4 -1
- package/blocks/org/blockml/bml/compiler/parser/capability/DetectFormat.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/capability/ElementStartTagIsSelfClosing.bml +52 -0
- package/blocks/org/blockml/bml/compiler/parser/capability/MapCompositionTemplate.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/capability/MapDocumentBlock.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/config/MapTimeDiagnosticCodes.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/documentation/ArchitectureOverview.bml +6 -6
- package/blocks/org/blockml/bml/compiler/parser/documentation/AttributeClassification.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/BlockMetadataMapping.bml +4 -4
- package/blocks/org/blockml/bml/compiler/parser/documentation/DesignDecisions.bml +20 -16
- package/blocks/org/blockml/bml/compiler/parser/documentation/Diagnostics.bml +9 -7
- package/blocks/org/blockml/bml/compiler/parser/documentation/ExpressionCapture.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/Introduction.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/LayerSeparation.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/MappingPrinciples.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMapping.bml +19 -8
- package/blocks/org/blockml/bml/compiler/parser/documentation/MemberMappingOrder.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/documentation/PackageOwnership.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/PublicApi.bml +7 -7
- package/blocks/org/blockml/bml/compiler/parser/documentation/RoundtripContract.bml +3 -3
- package/blocks/org/blockml/bml/compiler/parser/documentation/ScopeExclusions.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/documentation/SingleFileScope.bml +1 -1
- package/blocks/org/blockml/bml/compiler/parser/documentation/StructuralGrammar.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/TypeDescriptorParsing.bml +2 -2
- package/blocks/org/blockml/bml/compiler/parser/documentation/V1Scope.bml +5 -5
- package/blocks/org/blockml/bml/compiler/parser/documentation/XmlCommentsParse.bml +5 -5
- package/dist/map/map-block.d.ts.map +1 -1
- package/dist/map/map-block.js +104 -28
- package/dist/map/map-block.js.map +1 -1
- package/dist/map/map-composition.d.ts.map +1 -1
- package/dist/map/map-composition.js +27 -18
- package/dist/map/map-composition.js.map +1 -1
- package/dist/map/structural.d.ts +2 -0
- package/dist/map/structural.d.ts.map +1 -1
- package/dist/map/structural.js +6 -0
- package/dist/map/structural.js.map +1 -1
- package/dist/util/qname.d.ts +6 -0
- package/dist/util/qname.d.ts.map +1 -1
- package/dist/util/qname.js +9 -0
- package/dist/util/qname.js.map +1 -1
- package/package.json +3 -3
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
<is>The BlockML Parser compiler package library catalog</is>
|
|
36
36
|
|
|
37
37
|
<documentation>
|
|
38
|
+
# The BlockML Parser compiler package library catalog
|
|
39
|
+
|
|
38
40
|
Canonical parser specification for BlockML — BML → BOM mapping algorithm,
|
|
39
41
|
Stage 1 pipeline [1]–[5], and parse() contract. TypeScript in packages/parser/src/
|
|
40
42
|
implements this library. Input/output Urmodell types live in org.blockml.bml.bom.*
|
|
41
43
|
(@blockml/bom). Membership is defined exclusively by this blocks list.
|
|
42
44
|
</documentation>
|
|
43
45
|
|
|
44
|
-
<version>0.
|
|
46
|
+
<version>0.9.0</version>
|
|
45
47
|
|
|
46
48
|
<language>
|
|
47
49
|
<English />
|
|
@@ -113,6 +115,7 @@
|
|
|
113
115
|
<parcap:FqnToQName />
|
|
114
116
|
<parcap:SourceLoc />
|
|
115
117
|
<parcap:ElementSourceLoc />
|
|
118
|
+
<parcap:ElementStartTagIsSelfClosing />
|
|
116
119
|
<parcap:IsElement />
|
|
117
120
|
<parcap:IsComment />
|
|
118
121
|
<parcap:IsTextNode />
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<baseType>core:Capability</baseType>
|
|
35
35
|
<is>Format detector — step [1] (B24)</is>
|
|
36
36
|
|
|
37
|
-
<documentation
|
|
37
|
+
<documentation><![CDATA[Strip UTF-8 BOM; detect xml when first non-whitespace is '<'.]]></documentation>
|
|
38
38
|
|
|
39
39
|
<references>
|
|
40
40
|
<see type="pardocumentation:ArchitectureOverview" relation="SeeAlso" />
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Parser Capability — ElementStartTagIsSelfClosing
|
|
3
|
+
FQN: org.blockml.bml.compiler.parser.capability.ElementStartTagIsSelfClosing
|
|
4
|
+
-->
|
|
5
|
+
<block
|
|
6
|
+
xmlns="http://blockml.org/bml"
|
|
7
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
8
|
+
xsi:schemaLocation="http://blockml.org/bml https://blockml.org/schemas/bml.xsd
|
|
9
|
+
"
|
|
10
|
+
xmlns:blockml="org.blockml.bml"
|
|
11
|
+
xmlns:bom="org.blockml.bml.bom"
|
|
12
|
+
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
13
|
+
xmlns:bomblock="org.blockml.bml.bom.block"
|
|
14
|
+
xmlns:bomcommon="org.blockml.bml.bom.common"
|
|
15
|
+
xmlns:bomcomp="org.blockml.bml.bom.composition"
|
|
16
|
+
xmlns:bomdoc="org.blockml.bml.bom.document"
|
|
17
|
+
xmlns:bomtype="org.blockml.bml.bom.type"
|
|
18
|
+
xmlns:bomvalue="org.blockml.bml.bom.value"
|
|
19
|
+
xmlns:core="org.blockml.bml.core"
|
|
20
|
+
xmlns:def="org.blockml.bml.definition"
|
|
21
|
+
xmlns:parser="org.blockml.bml.compiler.parser"
|
|
22
|
+
xmlns:parcap="org.blockml.bml.compiler.parser.capability"
|
|
23
|
+
xmlns:parconfig="org.blockml.bml.compiler.parser.config"
|
|
24
|
+
xmlns:pardocumentation="org.blockml.bml.compiler.parser.documentation"
|
|
25
|
+
xmlns:parmap="org.blockml.bml.compiler.parser.map"
|
|
26
|
+
xmlns:type="org.blockml.bml.type"
|
|
27
|
+
xmlns:bomdocumentation="org.blockml.bml.bom.documentation"
|
|
28
|
+
xmlns:bomcap="org.blockml.bml.bom.capability"
|
|
29
|
+
xmlns:serdocumentation="org.blockml.bml.compiler.serializer.documentation"
|
|
30
|
+
xmlns:valdocumentation="org.blockml.bml.compiler.validator.documentation">
|
|
31
|
+
|
|
32
|
+
<name>ElementStartTagIsSelfClosing</name>
|
|
33
|
+
<type>parcap:ElementStartTagIsSelfClosing</type>
|
|
34
|
+
<baseType>core:Capability</baseType>
|
|
35
|
+
<is>Detect whether an element's start tag is authored as self-closing</is>
|
|
36
|
+
|
|
37
|
+
<documentation>True when the start tag ends with slash-greater-than. Used to record
|
|
38
|
+
authoredEmptyElementForm on empty see references.</documentation>
|
|
39
|
+
|
|
40
|
+
<properties>
|
|
41
|
+
<source type="type:Text">
|
|
42
|
+
<documentation>source. TS type: type:Text. (required)</documentation>
|
|
43
|
+
</source>
|
|
44
|
+
<element type="parmap:XmlDomNode">
|
|
45
|
+
<documentation>element. TS type: parmap:XmlDomNode. (required)</documentation>
|
|
46
|
+
</element>
|
|
47
|
+
<result type="type:Boolean">
|
|
48
|
+
<documentation>result. TS type: type:Boolean. (required)</documentation>
|
|
49
|
+
</result>
|
|
50
|
+
</properties>
|
|
51
|
+
|
|
52
|
+
</block>
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<baseType>core:Capability</baseType>
|
|
35
35
|
<is>Map <composition> element to CompositionTemplate</is>
|
|
36
36
|
|
|
37
|
-
<documentation
|
|
37
|
+
<documentation><![CDATA[Map <composition> element to CompositionTemplate]]></documentation>
|
|
38
38
|
|
|
39
39
|
<properties>
|
|
40
40
|
<element type="parmap:XmlDomNode">
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
<baseType>core:Capability</baseType>
|
|
35
35
|
<is>Map root <block> to BomDocument — step [5] entry</is>
|
|
36
36
|
|
|
37
|
-
<documentation
|
|
37
|
+
<documentation><![CDATA[Map root <block> to BomDocument — step [5] entry]]></documentation>
|
|
38
38
|
|
|
39
39
|
<references>
|
|
40
40
|
<see type="parcap:MapBlock" relation="SeeAlso" />
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
<properties>
|
|
40
40
|
<codes type="type:Text[]">
|
|
41
|
-
<documentation>Ordered: BML_UNSUPPORTED_FORMAT, BML_MALFORMED_XML, BML_MISSING_ROOT, BML_INVALID_ROOT, BML_MAP_ERROR, BML_UNKNOWN_NAMESPACE_PREFIX, BML_UNQUALIFIED_BLOCK_REFERENCE, BML_UNKNOWN_TYPE, BML_INVALID_TYPE_REFERENCE, BML_UNKNOWN_ELEMENT, BML_UNKNOWN_ATTRIBUTE, BML_UNKNOWN_DIRECTIVE, BML_STANDALONE_COMPOSITION, BML_DUPLICATE_COMPOSITION, BML_UNEXPECTED_TEXT (required)</documentation>
|
|
41
|
+
<documentation>Ordered: BML_UNSUPPORTED_FORMAT, BML_MALFORMED_XML, BML_MISSING_ROOT, BML_INVALID_ROOT, BML_MAP_ERROR, BML_UNKNOWN_NAMESPACE_PREFIX, BML_UNQUALIFIED_BLOCK_REFERENCE, BML_UNKNOWN_TYPE, BML_INVALID_TYPE_REFERENCE, BML_UNKNOWN_ELEMENT, BML_UNKNOWN_ATTRIBUTE, BML_UNKNOWN_DIRECTIVE, BML_STANDALONE_COMPOSITION, BML_NESTED_COMPOSITION, BML_DUPLICATE_COMPOSITION, BML_DUPLICATE_PROPERTY_VALUE, BML_UNEXPECTED_TEXT (required)</documentation>
|
|
42
42
|
</codes>
|
|
43
43
|
</properties>
|
|
44
44
|
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Parse pipeline [1]–[5] and module decomposition</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[Entry point: parse(source, options?) → ParseResult (B26).
|
|
39
39
|
|
|
40
40
|
Stage 1 pipeline:
|
|
41
|
-
[1] Format detect (B24) — detectFormat(); strip UTF-8 BOM; first '
|
|
41
|
+
[1] Format detect (B24) — detectFormat(); strip UTF-8 BOM; first '<' → xml
|
|
42
42
|
[2] XML DOM (B18) — parseXmlDom() via @xmldom/xmldom
|
|
43
|
-
[3] Root type resolver — assertBlockRoot(); V1:
|
|
43
|
+
[3] Root type resolver — assertBlockRoot(); V1: <block> only
|
|
44
44
|
[4] Namespace resolver — extractNamespaceBindings(), mergeSourceInfo(); FQN resolution
|
|
45
45
|
[5] BML → BOM mapper — mapDocumentBlock() → BomDocument
|
|
46
46
|
|
|
@@ -56,11 +56,11 @@
|
|
|
56
56
|
• map/type-expression.ts → parcap:ParseTypeExpression
|
|
57
57
|
• map/member-value.ts → parcap:ParseMemberValue
|
|
58
58
|
• map/directives.ts → parcap:ParseDirectives, ParseBmlMeta
|
|
59
|
-
• util/* → visibility, boolean, qname, xml helpers
|
|
59
|
+
• util/* → visibility, boolean, qname, xml helpers]]></documentation>
|
|
60
60
|
|
|
61
61
|
<references>
|
|
62
|
-
<see type="pardocumentation:V1Scope" relation="ReadNext"
|
|
63
|
-
<see type="parcap:Parse" relation="Defines"
|
|
62
|
+
<see type="pardocumentation:V1Scope" relation="ReadNext" />
|
|
63
|
+
<see type="parcap:Parse" relation="Defines" />
|
|
64
64
|
</references>
|
|
65
65
|
|
|
66
66
|
</block>
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
Serialize side of Rule 1 (B25 re-emit) → @blockml/serializer.</documentation>
|
|
55
55
|
|
|
56
56
|
<references>
|
|
57
|
-
<see type="pardocumentation:StructuralGrammar" relation="ReadNext"
|
|
58
|
-
<see type="parcap:ParseDirectives" relation="SeeAlso"
|
|
57
|
+
<see type="pardocumentation:StructuralGrammar" relation="ReadNext" />
|
|
58
|
+
<see type="parcap:ParseDirectives" relation="SeeAlso" />
|
|
59
59
|
</references>
|
|
60
60
|
|
|
61
61
|
</block>
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Block definition metadata field mapping</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[Map <block> child elements to BlockDefinition fields:
|
|
39
39
|
|
|
40
40
|
Identity: name, type, baseType, is, isNot, version, definition
|
|
41
41
|
Structural: since, status, summary, documentation, abstract, final
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
• authoredPlacement stored for dual element|attribute forms (D9)
|
|
48
48
|
• authoredCharacterDataForm for text vs CDATA (D8)
|
|
49
49
|
• TrimText on character data: common leading indent stripped, then trim (B13)
|
|
50
|
-
• Visibility prefixes stripped → logical name + visibility (B14 parse half)
|
|
50
|
+
• Visibility prefixes stripped → logical name + visibility (B14 parse half)]]></documentation>
|
|
51
51
|
|
|
52
52
|
<references>
|
|
53
|
-
<see type="pardocumentation:MemberMapping" relation="ReadNext"
|
|
54
|
-
<see type="def:BlockDefinition" relation="SeeAlso"
|
|
53
|
+
<see type="pardocumentation:MemberMapping" relation="ReadNext" />
|
|
54
|
+
<see type="def:BlockDefinition" relation="SeeAlso" />
|
|
55
55
|
</references>
|
|
56
56
|
|
|
57
57
|
</block>
|
|
@@ -35,24 +35,28 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Normative parser design decisions</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
<documentation><![CDATA[
|
|
39
|
+
# Normative parser design decisions
|
|
40
|
+
|
|
41
|
+
- B2: unknown bml:* → error at map (BML_UNKNOWN_DIRECTIVE); unknown instance members → validator error (BML_UNKNOWN_PROPERTY).
|
|
42
|
+
- B3: inputType/outputType → TypeExpression at map time.
|
|
43
|
+
- B4: ExpressionValue.raw only; AST via core utility.
|
|
44
|
+
- B5: single-file parser scope.
|
|
45
|
+
- B6: JSON not planned.
|
|
46
|
+
- B7/B8: Phase A slice; XSD not Stage 1.
|
|
47
|
+
- B11: XML comments bound to elements (parse side).
|
|
48
|
+
- B14: strip _/__ → logical name + visibility.
|
|
49
|
+
- B15/B16: boolean values vs type refs.
|
|
50
|
+
- B18: @xmldom/xmldom for DOM.
|
|
51
|
+
- B19: redundant aggregation type — map must not apply.
|
|
52
|
+
- B23: preserve xmlRendering + D6 recipe at Stage 1.
|
|
53
|
+
- B24: format detector (BOM strip, first '<').
|
|
54
|
+
- B25: store xmlns:xsi + schemaLocation on SourceInfo.
|
|
55
|
+
- B26: parse() entry; types in @blockml/bom.
|
|
56
|
+
]]></documentation>
|
|
53
57
|
|
|
54
58
|
<references>
|
|
55
|
-
<see type="pardocumentation:RoundtripContract" relation="ReadNext"
|
|
59
|
+
<see type="pardocumentation:RoundtripContract" relation="ReadNext" />
|
|
56
60
|
</references>
|
|
57
61
|
|
|
58
62
|
</block>
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Map-time and pipeline diagnostic codes</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[Pipeline hard-fail codes (parse.ts):
|
|
39
39
|
• BML_UNSUPPORTED_FORMAT — format detect failed
|
|
40
40
|
• BML_MALFORMED_XML — DOM parse error
|
|
41
41
|
• BML_MISSING_ROOT — no document element
|
|
42
|
-
• BML_INVALID_ROOT — not
|
|
42
|
+
• BML_INVALID_ROOT — not <block> (V1)
|
|
43
43
|
• BML_MAP_ERROR — mapping exception
|
|
44
44
|
|
|
45
45
|
Map-time codes (mapper modules):
|
|
@@ -49,19 +49,21 @@
|
|
|
49
49
|
• BML_UNKNOWN_ELEMENT — child not in closed Block grammar (structural)
|
|
50
50
|
• BML_UNKNOWN_ATTRIBUTE — attribute not allowed on a grammar node (structural)
|
|
51
51
|
• BML_UNKNOWN_DIRECTIVE — unknown bml:* attribute (B2)
|
|
52
|
-
• BML_STANDALONE_COMPOSITION —
|
|
53
|
-
•
|
|
52
|
+
• BML_STANDALONE_COMPOSITION — <composition> not a direct child of an aggregation member
|
|
53
|
+
• BML_NESTED_COMPOSITION — <composition> inside an aggregation that is already nested in a composition
|
|
54
|
+
• BML_DUPLICATE_COMPOSITION — more than one <composition> on the same aggregation member
|
|
55
|
+
• BML_DUPLICATE_PROPERTY_VALUE — more than one <value> for the same namespace on a property
|
|
54
56
|
• BML_UNEXPECTED_TEXT — non-whitespace text on an element-only grammar node
|
|
55
57
|
|
|
56
58
|
Map-time diagnostics attach Diagnostic.source to the use-site token when known
|
|
57
59
|
(attribute value or first occurrence in the throwing element), not the document root.
|
|
58
60
|
|
|
59
61
|
Host policy: whether to abort after diagnostics is orchestrator decision.
|
|
60
|
-
Diagnostic type: org.blockml.bml.bom.common.Diagnostic
|
|
62
|
+
Diagnostic type: org.blockml.bml.bom.common.Diagnostic.]]></documentation>
|
|
61
63
|
|
|
62
64
|
<references>
|
|
63
|
-
<see type="parconfig:MapTimeDiagnosticCodes" relation="Defines"
|
|
64
|
-
<see type="pardocumentation:PackageOwnership" relation="ReadNext"
|
|
65
|
+
<see type="parconfig:MapTimeDiagnosticCodes" relation="Defines" />
|
|
66
|
+
<see type="pardocumentation:PackageOwnership" relation="ReadNext" />
|
|
65
67
|
</references>
|
|
66
68
|
|
|
67
69
|
</block>
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
inputType/outputType on capabilities → TypeExpression at map time (B3).</documentation>
|
|
45
45
|
|
|
46
46
|
<references>
|
|
47
|
-
<see type="pardocumentation:SingleFileScope" relation="ReadNext"
|
|
48
|
-
<see type="parcap:ExpressionFromRaw" relation="SeeAlso"
|
|
47
|
+
<see type="pardocumentation:SingleFileScope" relation="ReadNext" />
|
|
48
|
+
<see type="parcap:ExpressionFromRaw" relation="SeeAlso" />
|
|
49
49
|
</references>
|
|
50
50
|
|
|
51
51
|
</block>
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
depend on @blockml/serializer, @blockml/validator, or TypeRegistry bootstrap.</documentation>
|
|
51
51
|
|
|
52
52
|
<references>
|
|
53
|
-
<see type="pardocumentation:LayerSeparation" relation="ReadNext"
|
|
54
|
-
<see type="bomdocumentation:Introduction" relation="SeeAlso"
|
|
53
|
+
<see type="pardocumentation:LayerSeparation" relation="ReadNext" />
|
|
54
|
+
<see type="bomdocumentation:Introduction" relation="SeeAlso" />
|
|
55
55
|
</references>
|
|
56
56
|
|
|
57
57
|
</block>
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
Parser stores ExpressionValue.raw only (B4); never writes AST to Urmodell.</documentation>
|
|
54
54
|
|
|
55
55
|
<references>
|
|
56
|
-
<see type="pardocumentation:ArchitectureOverview" relation="ReadNext"
|
|
57
|
-
<see type="bomdocumentation:LayerSeparation" relation="SeeAlso"
|
|
56
|
+
<see type="pardocumentation:ArchitectureOverview" relation="ReadNext" />
|
|
57
|
+
<see type="bomdocumentation:LayerSeparation" relation="SeeAlso" />
|
|
58
58
|
</references>
|
|
59
59
|
|
|
60
60
|
</block>
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
block rendering. Maximum authored surface: store as much as Urmodell can carry.</documentation>
|
|
47
47
|
|
|
48
48
|
<references>
|
|
49
|
-
<see type="pardocumentation:MemberMappingOrder" relation="ReadNext"
|
|
50
|
-
<see type="bomdocumentation:AbstractionPrinciple" relation="SeeAlso"
|
|
49
|
+
<see type="pardocumentation:MemberMappingOrder" relation="ReadNext" />
|
|
50
|
+
<see type="bomdocumentation:AbstractionPrinciple" relation="SeeAlso" />
|
|
51
51
|
</references>
|
|
52
52
|
|
|
53
53
|
</block>
|
|
@@ -35,22 +35,33 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Member definition and composition mapping</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[Property/aggregation/association/capability members:
|
|
39
39
|
• Element QName = member identity (deprecated namespace= attr → error)
|
|
40
40
|
• type attribute → TypeExpression; value/memberValues for properties
|
|
41
|
-
• One
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
• One <value> per namespace on a property member. Unprefixed <value> /
|
|
42
|
+
value="…" is the canonical namespace (""). Prefixed <prefix:value>
|
|
43
|
+
(Annotation xmlns) is a separate facet. Extra copies of the same
|
|
44
|
+
namespace → BML_DUPLICATE_PROPERTY_VALUE.
|
|
45
|
+
• One <composition> per aggregation member on a Block definition, as a direct
|
|
46
|
+
child of that member (not of <block>, <aggregations>, nested inside metadata,
|
|
47
|
+
or inside an aggregation that is already nested in a composition). Extra
|
|
48
|
+
copies → BML_DUPLICATE_COMPOSITION. Misplaced → BML_STANDALONE_COMPOSITION.
|
|
49
|
+
Wrapper inside a composition instance aggregation → BML_NESTED_COMPOSITION
|
|
50
|
+
(children still mapped). On Block instances, aggregations are filled by
|
|
51
|
+
member name with children as direct descendants — no <composition> wrapper.
|
|
52
|
+
Sugar without a <composition> wrapper (instances as direct children) stays
|
|
53
|
+
allowed on definitions.
|
|
45
54
|
• Constraints/suggestions → BlockInstance[] in document order
|
|
55
|
+
• Capability <throws> → TypeReferenceEntityInstance[] (empty-QName sugar or
|
|
56
|
+
explicit type:TypeReferenceEntity); bound B = core:Exception
|
|
46
57
|
• Sub-Blocks and embedded blocks → nested BlockDefinition trees
|
|
47
58
|
• Redundant aggregation type on override → validator warning B19; parser must not apply
|
|
48
59
|
|
|
49
|
-
Directives on composition: bml:each, bml:if, bml:unless, bml:with — stored unexpanded
|
|
60
|
+
Directives on composition: bml:each, bml:if, bml:unless, bml:with — stored unexpanded.]]></documentation>
|
|
50
61
|
|
|
51
62
|
<references>
|
|
52
|
-
<see type="pardocumentation:ExpressionCapture" relation="ReadNext"
|
|
53
|
-
<see type="parcap:MapBlockInstanceNode" relation="SeeAlso"
|
|
63
|
+
<see type="pardocumentation:ExpressionCapture" relation="ReadNext" />
|
|
64
|
+
<see type="parcap:MapBlockInstanceNode" relation="SeeAlso" />
|
|
54
65
|
</references>
|
|
55
66
|
|
|
56
67
|
</block>
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
Inside containers (properties/aggregations/…): filter by kind, keep BOM array order.</documentation>
|
|
46
46
|
|
|
47
47
|
<references>
|
|
48
|
-
<see type="pardocumentation:AttributeClassification" relation="ReadNext"
|
|
48
|
+
<see type="pardocumentation:AttributeClassification" relation="ReadNext" />
|
|
49
49
|
</references>
|
|
50
50
|
|
|
51
51
|
</block>
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
@blockml/cli — TypeRegistry bootstrap and orchestration.</documentation>
|
|
49
49
|
|
|
50
50
|
<references>
|
|
51
|
-
<see type="pardocumentation:ScopeExclusions" relation="ReadNext"
|
|
52
|
-
<see type="bomdocumentation:PackageOwnership" relation="SeeAlso"
|
|
51
|
+
<see type="pardocumentation:ScopeExclusions" relation="ReadNext" />
|
|
52
|
+
<see type="bomdocumentation:PackageOwnership" relation="SeeAlso" />
|
|
53
53
|
</references>
|
|
54
54
|
|
|
55
55
|
</block>
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>parse() entry point (B26)</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[parse(source: string, options?: ParseOptions): ParseResult
|
|
39
39
|
|
|
40
40
|
ParseOptions (owned by @blockml/bom):
|
|
41
|
-
• filePath — default "
|
|
41
|
+
• filePath — default "<memory>"; written to BomDocument.source.filePath
|
|
42
42
|
• continueOnError — default true; keep mapping after errors when possible
|
|
43
43
|
|
|
44
44
|
ParseResult (owned by @blockml/bom):
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
carries a span; otherwise BML_MAP_ERROR at 1:1. continueOnError still returns
|
|
54
54
|
document when possible
|
|
55
55
|
• Sync only; no throw on recoverable errors
|
|
56
|
-
• Does NOT call validator; does NOT expand directives
|
|
56
|
+
• Does NOT call validator; does NOT expand directives]]></documentation>
|
|
57
57
|
|
|
58
58
|
<references>
|
|
59
|
-
<see type="bomapi:ParseOptions" relation="Defines"
|
|
60
|
-
<see type="bomapi:ParseResult" relation="Defines"
|
|
61
|
-
<see type="parcap:Parse" relation="Defines"
|
|
62
|
-
<see type="pardocumentation:MappingPrinciples" relation="ReadNext"
|
|
59
|
+
<see type="bomapi:ParseOptions" relation="Defines" />
|
|
60
|
+
<see type="bomapi:ParseResult" relation="Defines" />
|
|
61
|
+
<see type="parcap:Parse" relation="Defines" />
|
|
62
|
+
<see type="pardocumentation:MappingPrinciples" relation="ReadNext" />
|
|
63
63
|
</references>
|
|
64
64
|
|
|
65
65
|
</block>
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
XML byte fidelity NOT a gate — see @blockml/serializer RoundtripContract.</documentation>
|
|
48
48
|
|
|
49
49
|
<references>
|
|
50
|
-
<see type="bomcap:BomEquals" relation="SeeAlso"
|
|
51
|
-
<see type="serdocumentation:RoundtripContract" relation="SeeAlso"
|
|
52
|
-
<see type="pardocumentation:Diagnostics" relation="ReadNext"
|
|
50
|
+
<see type="bomcap:BomEquals" relation="SeeAlso" />
|
|
51
|
+
<see type="serdocumentation:RoundtripContract" relation="SeeAlso" />
|
|
52
|
+
<see type="pardocumentation:Diagnostics" relation="ReadNext" />
|
|
53
53
|
</references>
|
|
54
54
|
|
|
55
55
|
</block>
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
In scope: single-file BML XML → lossless BomDocument.</documentation>
|
|
49
49
|
|
|
50
50
|
<references>
|
|
51
|
-
<see type="pardocumentation:Introduction" relation="SeeAlso"
|
|
51
|
+
<see type="pardocumentation:Introduction" relation="SeeAlso" />
|
|
52
52
|
</references>
|
|
53
53
|
|
|
54
54
|
</block>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
@blockml/cli orchestrator + @blockml/framework utilities + @blockml/validator.</documentation>
|
|
47
47
|
|
|
48
48
|
<references>
|
|
49
|
-
<see type="pardocumentation:DesignDecisions" relation="ReadNext"
|
|
49
|
+
<see type="pardocumentation:DesignDecisions" relation="ReadNext" />
|
|
50
50
|
</references>
|
|
51
51
|
|
|
52
52
|
</block>
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
Block instances: extra attributes stay in memberValues for semantic checking.</documentation>
|
|
61
61
|
|
|
62
62
|
<references>
|
|
63
|
-
<see type="pardocumentation:XmlCommentsParse" relation="ReadNext"
|
|
64
|
-
<see type="valdocumentation:ValidityContract" relation="SeeAlso"
|
|
63
|
+
<see type="pardocumentation:XmlCommentsParse" relation="ReadNext" />
|
|
64
|
+
<see type="valdocumentation:ValidityContract" relation="SeeAlso" />
|
|
65
65
|
</references>
|
|
66
66
|
|
|
67
67
|
</block>
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
• Anonymous struct at specialized sites; context-bound implicit namespaces per 02_mbml.md</documentation>
|
|
47
47
|
|
|
48
48
|
<references>
|
|
49
|
-
<see type="parcap:ParseTypeExpression" relation="Defines"
|
|
50
|
-
<see type="pardocumentation:BlockMetadataMapping" relation="ReadNext"
|
|
49
|
+
<see type="parcap:ParseTypeExpression" relation="Defines" />
|
|
50
|
+
<see type="pardocumentation:BlockMetadataMapping" relation="ReadNext" />
|
|
51
51
|
</references>
|
|
52
52
|
|
|
53
53
|
</block>
|
|
@@ -35,19 +35,19 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Phase A parser slice and deferred features</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
39
|
-
• Hardcoded BML → BOM mapper for
|
|
38
|
+
<documentation><![CDATA[V1 (Phase A) parser implements:
|
|
39
|
+
• Hardcoded BML → BOM mapper for <block> root documents
|
|
40
40
|
• Single-file scope (B5) — no TypeRegistry bootstrap in parse()
|
|
41
41
|
• Stage 1 structural BML validation (unknown Gerüst tags/attributes/directives); no TypeRegistry semantic checks (B8: XSD not Stage 1)
|
|
42
42
|
• JSON BML authoring not planned (B6)
|
|
43
43
|
• Tolerant parse by default (continueOnError: true)
|
|
44
44
|
|
|
45
45
|
Deferred: cross-file resolution, parseFile/async, streaming, parse({ validate: true }),
|
|
46
|
-
meta-driven mapping from Definition blocks (V2)
|
|
46
|
+
meta-driven mapping from Definition blocks (V2).]]></documentation>
|
|
47
47
|
|
|
48
48
|
<references>
|
|
49
|
-
<see type="pardocumentation:PublicApi" relation="ReadNext"
|
|
50
|
-
<see type="pardocumentation:SingleFileScope" relation="SeeAlso"
|
|
49
|
+
<see type="pardocumentation:PublicApi" relation="ReadNext" />
|
|
50
|
+
<see type="pardocumentation:SingleFileScope" relation="SeeAlso" />
|
|
51
51
|
</references>
|
|
52
52
|
|
|
53
53
|
</block>
|
|
@@ -35,19 +35,19 @@
|
|
|
35
35
|
<baseType>core:Documentation</baseType>
|
|
36
36
|
<is>Comment binding algorithm (B11 parse side)</is>
|
|
37
37
|
|
|
38
|
-
<documentation
|
|
38
|
+
<documentation><![CDATA[Cross-ref: org.blockml.bml.bom.documentation.XmlComments for Urmodell storage model.
|
|
39
39
|
|
|
40
40
|
Parse algorithm:
|
|
41
41
|
• pendingLeading comments → bind to next element as leadingComments
|
|
42
42
|
• Comments after element end tag → trailingComments on that element
|
|
43
43
|
• Storage: xmlTrivia on elements, memberSectionTrivia, metadataTrivia
|
|
44
44
|
|
|
45
|
-
Comment bodies only — without
|
|
46
|
-
Re-emit rules (B22) → @blockml/serializer
|
|
45
|
+
Comment bodies only — without <!-- / -->. Whitespace/layout not stored (B13).
|
|
46
|
+
Re-emit rules (B22) → @blockml/serializer.]]></documentation>
|
|
47
47
|
|
|
48
48
|
<references>
|
|
49
|
-
<see type="bomdocumentation:XmlComments" relation="SeeAlso"
|
|
50
|
-
<see type="pardocumentation:TypeDescriptorParsing" relation="ReadNext"
|
|
49
|
+
<see type="bomdocumentation:XmlComments" relation="SeeAlso" />
|
|
50
|
+
<see type="pardocumentation:TypeDescriptorParsing" relation="ReadNext" />
|
|
51
51
|
</references>
|
|
52
52
|
|
|
53
53
|
</block>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map-block.d.ts","sourceRoot":"","sources":["../../src/map/map-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,eAAe,EAKf,UAAU,
|
|
1
|
+
{"version":3,"file":"map-block.d.ts","sourceRoot":"","sources":["../../src/map/map-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,eAAe,EAKf,UAAU,EAkBX,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAgtCjE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,GAAG,eAAe,CAE3E;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,WAAW,GAAE,UAAU,EAAO,GAC7B,eAAe,CAGjB"}
|