@blockml/bom 0.9.4 → 0.9.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/blocks/org/blockml/bml/bom/Library.bml +20 -28
- package/blocks/org/blockml/bml/bom/README.bml +14 -21
- package/blocks/org/blockml/bml/bom/UrmodellType.bml +16 -20
- package/blocks/org/blockml/bml/bom/api/ParseOptions.bml +19 -20
- package/blocks/org/blockml/bml/bom/api/ParseResult.bml +22 -21
- package/blocks/org/blockml/bml/bom/api/SerializeOptions.bml +19 -20
- package/blocks/org/blockml/bml/bom/api/SerializeResult.bml +22 -21
- package/blocks/org/blockml/bml/bom/api/TypeRegistryReader.bml +13 -17
- package/blocks/org/blockml/bml/bom/api/ValidateOptions.bml +25 -22
- package/blocks/org/blockml/bml/bom/api/ValidateResult.bml +22 -21
- package/blocks/org/blockml/bml/bom/block/AliasEntry.bml +28 -23
- package/blocks/org/blockml/bml/bom/block/BlockDefinition.bml +142 -57
- package/blocks/org/blockml/bml/bom/block/ChangelogEntry.bml +25 -22
- package/blocks/org/blockml/bml/bom/block/DocumentationExample.bml +34 -25
- package/blocks/org/blockml/bml/bom/block/DocumentationProseEntry.bml +28 -23
- package/blocks/org/blockml/bml/bom/block/DocumentationReference.bml +52 -31
- package/blocks/org/blockml/bml/bom/block/GenericType.bml +22 -21
- package/blocks/org/blockml/bml/bom/block/KeywordEntry.bml +28 -23
- package/blocks/org/blockml/bml/bom/block/TypeReferenceEntityInstance.bml +22 -21
- package/blocks/org/blockml/bml/bom/capability/BomEquals.bml +22 -21
- package/blocks/org/blockml/bml/bom/capability/StripProvenance.bml +19 -20
- package/blocks/org/blockml/bml/bom/common/CharacterDataForm.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/Diagnostic.bml +25 -22
- package/blocks/org/blockml/bml/bom/common/DiagnosticSeverity.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/EmptyElementForm.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/HostValue.bml +13 -17
- package/blocks/org/blockml/bml/bom/common/MemberSectionName.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/MetadataElementTrivia.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/SourceInfo.bml +35 -23
- package/blocks/org/blockml/bml/bom/common/SourceLocation.bml +28 -23
- package/blocks/org/blockml/bml/bom/common/UnknownXmlNode.bml +28 -23
- package/blocks/org/blockml/bml/bom/common/XmlNodeKind.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/XmlRenderingBlock.bml +16 -19
- package/blocks/org/blockml/bml/bom/common/XmlRenderingMember.bml +25 -22
- package/blocks/org/blockml/bml/bom/common/XmlTrivia.bml +19 -20
- package/blocks/org/blockml/bml/bom/composition/BlockInstance.bml +55 -32
- package/blocks/org/blockml/bml/bom/composition/BlockInstanceNode.bml +25 -22
- package/blocks/org/blockml/bml/bom/composition/CompositionNode.bml +16 -19
- package/blocks/org/blockml/bml/bom/composition/CompositionTemplate.bml +28 -23
- package/blocks/org/blockml/bml/bom/composition/DirectiveAttribute.bml +16 -19
- package/blocks/org/blockml/bml/bom/composition/EachDirective.bml +25 -22
- package/blocks/org/blockml/bml/bom/composition/GenericsBinding.bml +26 -23
- package/blocks/org/blockml/bml/bom/composition/IfDirective.bml +19 -20
- package/blocks/org/blockml/bml/bom/composition/InstanceAggregationComposition.bml +22 -21
- package/blocks/org/blockml/bml/bom/composition/UnlessDirective.bml +19 -20
- package/blocks/org/blockml/bml/bom/composition/VirtualContainerNode.bml +28 -23
- package/blocks/org/blockml/bml/bom/composition/WithBinding.bml +19 -20
- package/blocks/org/blockml/bml/bom/composition/WithDirective.bml +19 -20
- package/blocks/org/blockml/bml/bom/document/BomDocument.bml +25 -23
- package/blocks/org/blockml/bml/bom/documentation/AbstractionPrinciple.bml +16 -21
- package/blocks/org/blockml/bml/bom/documentation/ArchitectureOverview.bml +16 -21
- package/blocks/org/blockml/bml/bom/documentation/AuthoredSurfaceTable.bml +14 -17
- package/blocks/org/blockml/bml/bom/documentation/CalibratorExample.bml +19 -24
- package/blocks/org/blockml/bml/bom/documentation/CompositionDirectives.bml +16 -21
- package/blocks/org/blockml/bml/bom/documentation/DesignDecisions.bml +25 -29
- package/blocks/org/blockml/bml/bom/documentation/InstanceIdRules.bml +18 -22
- package/blocks/org/blockml/bml/bom/documentation/Introduction.bml +16 -21
- package/blocks/org/blockml/bml/bom/documentation/LayerSeparation.bml +17 -22
- package/blocks/org/blockml/bml/bom/documentation/MemberValueSemantics.bml +17 -22
- package/blocks/org/blockml/bml/bom/documentation/PackageOwnership.bml +24 -28
- package/blocks/org/blockml/bml/bom/documentation/PublicApi.bml +24 -27
- package/blocks/org/blockml/bml/bom/documentation/RelatedDiagnostics.bml +15 -19
- package/blocks/org/blockml/bml/bom/documentation/ScopeExclusions.bml +16 -20
- package/blocks/org/blockml/bml/bom/documentation/SubBlockAndEmbeddedBlocks.bml +17 -21
- package/blocks/org/blockml/bml/bom/documentation/TypeExpressionsOverview.bml +17 -22
- package/blocks/org/blockml/bml/bom/documentation/ValidationResponsibilities.bml +16 -21
- package/blocks/org/blockml/bml/bom/documentation/VersionRules.bml +16 -20
- package/blocks/org/blockml/bml/bom/documentation/XmlComments.bml +17 -21
- package/blocks/org/blockml/bml/bom/member/AggregationDefinition.bml +34 -25
- package/blocks/org/blockml/bml/bom/member/AssociationDefinition.bml +22 -21
- package/blocks/org/blockml/bml/bom/member/CapabilityDefinition.bml +37 -26
- package/blocks/org/blockml/bml/bom/member/ConstrainableDefinition.bml +16 -19
- package/blocks/org/blockml/bml/bom/member/EmbeddedExpression.bml +22 -21
- package/blocks/org/blockml/bml/bom/member/ImplementationBlock.bml +28 -23
- package/blocks/org/blockml/bml/bom/member/MemberDefinition.bml +16 -19
- package/blocks/org/blockml/bml/bom/member/MemberDefinitionBase.bml +79 -40
- package/blocks/org/blockml/bml/bom/member/PropertyDefinition.bml +37 -26
- package/blocks/org/blockml/bml/bom/member/PropertyValueEntry.bml +18 -21
- package/blocks/org/blockml/bml/bom/type/AnonymousStructType.bml +19 -20
- package/blocks/org/blockml/bml/bom/type/GenericParameterReference.bml +19 -20
- package/blocks/org/blockml/bml/bom/type/GroupedTypeExpression.bml +22 -21
- package/blocks/org/blockml/bml/bom/type/InstanceConfiguration.bml +19 -20
- package/blocks/org/blockml/bml/bom/type/Multiplicity.bml +19 -20
- package/blocks/org/blockml/bml/bom/type/NamedTypeReference.bml +28 -23
- package/blocks/org/blockml/bml/bom/type/SelfTypeReference.bml +16 -19
- package/blocks/org/blockml/bml/bom/type/StructField.bml +19 -20
- package/blocks/org/blockml/bml/bom/type/TypeDescriptor.bml +14 -19
- package/blocks/org/blockml/bml/bom/type/TypeExpression.bml +16 -19
- package/blocks/org/blockml/bml/bom/type/UnionTypeExpression.bml +19 -20
- package/blocks/org/blockml/bml/bom/value/Address.bml +31 -24
- package/blocks/org/blockml/bml/bom/value/AddressValue.bml +19 -20
- package/blocks/org/blockml/bml/bom/value/ExpressionValue.bml +25 -22
- package/blocks/org/blockml/bml/bom/value/InterpolatedTextValue.bml +26 -22
- package/blocks/org/blockml/bml/bom/value/LiteralValue.bml +25 -22
- package/blocks/org/blockml/bml/bom/value/MemberValue.bml +16 -19
- package/dist/types/block-definition.d.ts +10 -0
- package/dist/types/block-definition.d.ts.map +1 -1
- package/dist/types/common.d.ts +6 -0
- package/dist/types/common.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Urmodell — BomDocument
|
|
2
|
+
FQN: org.blockml.bml.bom.document.BomDocument-->
|
|
3
|
+
<bomdoc:BomDocument xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -23,27 +17,35 @@
|
|
|
23
17
|
xmlns:def="org.blockml.bml.definition"
|
|
24
18
|
xmlns:type="org.blockml.bml.type">
|
|
25
19
|
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<is>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
<baseType>
|
|
21
|
+
bom:UrmodellType
|
|
22
|
+
</baseType>
|
|
23
|
+
<is>
|
|
24
|
+
Root Urmodell document — every parsed BML file
|
|
25
|
+
</is>
|
|
26
|
+
<documentation>
|
|
27
|
+
Immutable after parse or BomBuilder.seal(). kind is always "block" in V1.
|
|
28
|
+
</documentation>
|
|
33
29
|
<examples>
|
|
34
|
-
<example title="Calibrator reference shape">
|
|
30
|
+
<example title="Calibrator reference shape">
|
|
31
|
+
Reference BomDocument from com.machineblocks.bml.calibration.Calibrator. Root BlockDefinition with declared members, subBlocks (Utils, Base, StudDiameter, …), and compositions from _utils/_parts aggregations. Inherited native properties are NOT in members[].
|
|
32
|
+
</example>
|
|
35
33
|
</examples>
|
|
36
|
-
|
|
37
34
|
<properties>
|
|
38
35
|
<kind type="type:Text">
|
|
39
|
-
<documentation>
|
|
36
|
+
<documentation>
|
|
37
|
+
V1: always "block". (required)
|
|
38
|
+
</documentation>
|
|
40
39
|
</kind>
|
|
41
40
|
<source type="bomcommon:SourceInfo">
|
|
42
|
-
<documentation>
|
|
41
|
+
<documentation>
|
|
42
|
+
source (required). TS type: bomcommon:SourceInfo.
|
|
43
|
+
</documentation>
|
|
43
44
|
</source>
|
|
44
45
|
<block type="bomblock:BlockDefinition">
|
|
45
|
-
<documentation>
|
|
46
|
+
<documentation>
|
|
47
|
+
block (required). TS type: bomblock:BlockDefinition.
|
|
48
|
+
</documentation>
|
|
46
49
|
</block>
|
|
47
50
|
</properties>
|
|
48
|
-
|
|
49
|
-
</block>
|
|
51
|
+
</bomdoc:BomDocument>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — AbstractionPrinciple
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.AbstractionPrinciple-->
|
|
3
|
+
<bomdocumentation:AbstractionPrinciple xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,23 +18,24 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Lossless representation and roundtrip guarantee
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
A BOM document is a lossless representation of BML source. It preserves authored
|
|
33
29
|
structure and values — directives, aggregation declarations, literal syntax, unresolved
|
|
34
30
|
type references, namespace bindings, and bml:xml metadata. BOM makes no statement about
|
|
35
31
|
directive expansion, aggregation interpretation, or block rendering.
|
|
36
|
-
|
|
32
|
+
|
|
37
33
|
Maximum authored surface: render targets and the serializer must read as much of the
|
|
38
34
|
original document as the Urmodell can carry. Prefer first-class fields over hidden side channels.
|
|
39
|
-
|
|
40
|
-
BML → BOM → BML must always be possible
|
|
41
|
-
|
|
35
|
+
|
|
36
|
+
BML → BOM → BML must always be possible.
|
|
37
|
+
</documentation>
|
|
42
38
|
<references>
|
|
43
39
|
<see type="bomdocumentation:AuthoredSurfaceTable" relation="ReadNext" />
|
|
44
40
|
</references>
|
|
45
|
-
|
|
46
|
-
</block>
|
|
41
|
+
</bomdocumentation:AbstractionPrinciple>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — ArchitectureOverview
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.ArchitectureOverview-->
|
|
3
|
+
<bomdocumentation:ArchitectureOverview xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,26 +18,27 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
BML source to render pipeline
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Pipeline roles:
|
|
29
|
+
|
|
34
30
|
BML source → universal authoring and interchange format
|
|
35
31
|
Urmodell (BOM) → canonical, immutable, lossless parse/build result (SSOT, read-only)
|
|
36
32
|
BomBuilder (V3) → planned writable session; seal() → Urmodell (same types)
|
|
37
33
|
Pragmatic Model → validator default fork + optional renderer forks (resolve only)
|
|
38
34
|
Framework Utilities → derived views / merges on forks — never mutate Urmodell
|
|
39
35
|
Render Target → chooses Urmodell / pragmatic / own forks + optional target working model
|
|
40
|
-
|
|
36
|
+
|
|
41
37
|
Block in BML is the mandatory input concept — not a uniform runtime object model.
|
|
42
38
|
The parser must read block documents; validators walk baseType chains. Internal
|
|
43
|
-
representation after parse is implementation freedom
|
|
44
|
-
|
|
39
|
+
representation after parse is implementation freedom.
|
|
40
|
+
</documentation>
|
|
45
41
|
<references>
|
|
46
42
|
<see type="bomdocumentation:AbstractionPrinciple" relation="ReadNext" />
|
|
47
43
|
</references>
|
|
48
|
-
|
|
49
|
-
</block>
|
|
44
|
+
</bomdocumentation:ArchitectureOverview>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — AuthoredSurfaceTable
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.AuthoredSurfaceTable-->
|
|
3
|
+
<bomdocumentation:AuthoredSurfaceTable xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,17 +18,21 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
What BOM stores vs what downstream interprets
|
|
26
|
+
</is>
|
|
32
27
|
<documentation>
|
|
33
28
|
# What BOM stores vs what downstream interprets
|
|
34
|
-
|
|
29
|
+
|
|
35
30
|
- bml:each / bml:if / bml:with → directives[] unexpanded → Renderer expands
|
|
36
31
|
- xmlns / xmlns:prefix → SourceInfo.namespaceBindings 1:1 authored → Serializer QName emit (B21)
|
|
37
32
|
- xsi:schemaLocation / xsi:noNamespaceSchemaLocation → SourceInfo (B25) → re-emit on root
|
|
33
|
+
- document root tag → SourceInfo.rootForm ("block" | "type") → Serializer form-fidelity (doc:DocumentFormat)
|
|
34
|
+
- Sub-Block / embed wrapper tag → BlockDefinition.wrapperForm → Serializer form-fidelity
|
|
35
|
+
- child name / type elements on a definition → authoredNameChild / authoredTypeChild → style warnings (doc:DocumentFormat)
|
|
38
36
|
- bml:xml → xmlRendering block+member — NOT directives[] → Serializer, FatBlock, XSD
|
|
39
37
|
- bml:generics → BlockInstance.generics (and illegal-host copies) — NOT directives[] → Validator binds genericTypes (open params required; defaultType may be overridden)
|
|
40
38
|
- element|attribute dual placement → authoredPlacement (D9) → MUST roundtrip authored form
|
|
@@ -49,5 +47,4 @@
|
|
|
49
47
|
- Capabilities → CapabilityDefinition in BOM → Renderer interprets (not invoked at parse)
|
|
50
48
|
- XML comments → XmlTrivia on following element (B11) → Serializer re-emits
|
|
51
49
|
</documentation>
|
|
52
|
-
|
|
53
|
-
</block>
|
|
50
|
+
</bomdocumentation:AuthoredSurfaceTable>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — CalibratorExample
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.CalibratorExample-->
|
|
3
|
+
<bomdocumentation:CalibratorExample xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,30 +18,31 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Reference BomDocument walkthrough
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Source: com.machineblocks.bml.calibration.Calibrator.bml
|
|
29
|
+
|
|
34
30
|
BomDocument kind block → BlockDefinition Calibrator
|
|
35
31
|
type com.machineblocks.bml.calibration.Calibrator, baseType CompositeBlock, version 1.0.0
|
|
36
|
-
|
|
32
|
+
|
|
37
33
|
Declared members only (not inherited size, offset, baseColor):
|
|
38
34
|
numberOfSamples, font, size (ExpressionValue), _utils aggregation (Utils bean context),
|
|
39
35
|
_parts aggregation (4 calibration rows).
|
|
40
|
-
|
|
36
|
+
|
|
41
37
|
subBlocks: Utils, Base, StudDiameter, BaseWallThickness, TubeDiameter, PinDiameter.
|
|
42
|
-
|
|
38
|
+
|
|
43
39
|
compositions: _utils → Utils instance; _parts → Base, StudDiameter, Base (id=base_wall), …
|
|
44
|
-
|
|
40
|
+
|
|
45
41
|
Observations: Sub-Block refs by short name resolved via subBlocks[] tree.
|
|
46
42
|
@utils.formatValue and #math.* stored as ExpressionValue { raw }.
|
|
47
|
-
Inherited native properties not in members[] — validator uses resolveEffectiveMembers()
|
|
48
|
-
|
|
43
|
+
Inherited native properties not in members[] — validator uses resolveEffectiveMembers().
|
|
44
|
+
</documentation>
|
|
49
45
|
<references>
|
|
50
46
|
<see type="bomdoc:BomDocument" relation="SeeAlso" />
|
|
51
47
|
</references>
|
|
52
|
-
|
|
53
|
-
</block>
|
|
48
|
+
</bomdocumentation:CalibratorExample>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — CompositionDirectives
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.CompositionDirectives-->
|
|
3
|
+
<bomdocumentation:CompositionDirectives xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,13 +18,15 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Directive placement and Thymeleaf model
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Directives follow Thymeleaf model — attributes on modified element, stored unexpanded.
|
|
29
|
+
|
|
34
30
|
bml:id, bml:version, bml:bean, bml:scope, bml:generics → BlockInstance fields (NOT directives[]).
|
|
35
31
|
bml:generics binds genericTypes (attribute or child element; parentheses required).
|
|
36
32
|
Open parameters require a binding; parameters with defaultType may omit it.
|
|
@@ -38,12 +34,11 @@
|
|
|
38
34
|
Misplaced bml:generics is still stored so validate() can emit BML_GENERICS_DIRECTIVE_NOT_ALLOWED.
|
|
39
35
|
bml:with → composition, aggregation, bml:container, block instances.
|
|
40
36
|
bml:each, bml:if, bml:unless → bml:container, block instances.
|
|
41
|
-
|
|
37
|
+
|
|
42
38
|
Dynamic ids: bml:id="${ 'val_' + i }" stored as ExpressionValue or literal on BlockInstance.id.
|
|
43
|
-
Omitted bml:id stored absent — parser does not assign auto-IDs
|
|
44
|
-
|
|
39
|
+
Omitted bml:id stored absent — parser does not assign auto-IDs.
|
|
40
|
+
</documentation>
|
|
45
41
|
<references>
|
|
46
42
|
<see type="bomcomp:DirectiveAttribute" relation="Defines" />
|
|
47
43
|
</references>
|
|
48
|
-
|
|
49
|
-
</block>
|
|
44
|
+
</bomdocumentation:CompositionDirectives>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — DesignDecisions
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.DesignDecisions-->
|
|
3
|
+
<bomdocumentation:DesignDecisions xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,41 +18,43 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Normative Urmodell design decisions
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Immutability: Urmodell (BomDocument) is immutable after parse or BomBuilder.seal().
|
|
33
29
|
No utility or renderer writes derived data back. Validator/renderers use pragmatic forks.
|
|
34
|
-
|
|
30
|
+
|
|
35
31
|
Builder / LSP reuse: construction-friendly, provenance-agnostic interfaces. Parser and
|
|
36
32
|
BomBuilder produce the same graph. Source spans optional on types but populated by parser.
|
|
37
|
-
|
|
33
|
+
|
|
38
34
|
Member inheritance: utility lookup only. BOM stores declared members per block.
|
|
39
35
|
resolveEffectiveMembers() → EffectiveMemberSet — never flattened into BOM.
|
|
40
|
-
|
|
36
|
+
|
|
41
37
|
Capabilities: stored in BOM; no synthetic getter/setter generation; renderer interprets.
|
|
42
|
-
|
|
38
|
+
|
|
43
39
|
Member identity: uniqueness by resolved (namespace, name).
|
|
44
|
-
|
|
40
|
+
|
|
45
41
|
Composition: nested inside aggregation on definitions only; instances open aggregations directly.
|
|
46
|
-
|
|
42
|
+
|
|
47
43
|
Sub-Blocks: nested in BlockDefinition.subBlocks[]; FQN = parent.type + "." + name.
|
|
48
|
-
|
|
44
|
+
|
|
49
45
|
Embedded Blocks: root embeddedBlocks[] only — virtual .bml files; FQN = type element.
|
|
50
|
-
|
|
46
|
+
|
|
51
47
|
Directives: flow-control bml:* → directives[] unexpanded. bml:id/version → BlockInstance fields.
|
|
52
48
|
bml:xml → first-class xmlRendering (not directives[]).
|
|
53
|
-
|
|
49
|
+
|
|
54
50
|
XML comments (B11): bind to following element; trailing on next line + blank line (B22).
|
|
55
51
|
Whitespace (B13): not on Urmodell. Dual placement (D9): store authoredPlacement.
|
|
56
52
|
Visibility (B14): logical name in BOM; emit _/__ from visibility.
|
|
57
|
-
|
|
53
|
+
|
|
58
54
|
Instance version: bml:version optional exact assert on external refs (BML_UNKNOWN_VERSION).
|
|
59
55
|
Definition version: effectiveBlockVersion = own version | library.version | error.
|
|
60
56
|
Instance id: bml:id only on BlockInstance.id; no auto-ID in BomDocument; bml:each requires id.
|
|
61
|
-
|
|
62
|
-
Property values: deep copy only — never linked. FQN::id cross-instance refs only on associations
|
|
63
|
-
|
|
64
|
-
</
|
|
57
|
+
|
|
58
|
+
Property values: deep copy only — never linked. FQN::id cross-instance refs only on associations.
|
|
59
|
+
</documentation>
|
|
60
|
+
</bomdocumentation:DesignDecisions>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — InstanceIdRules
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.InstanceIdRules-->
|
|
3
|
+
<bomdocumentation:InstanceIdRules xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,22 +18,24 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
bml:id identity and cross-instance references
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
bml:id identifies child within parent composition tree. No FQN fallback.
|
|
29
|
+
|
|
34
30
|
Pipeline: Parse stores authored id → Validate cross-refs → Expand directives →
|
|
35
31
|
Resolve/auto-ID static unreferenced children → Render.
|
|
36
|
-
|
|
32
|
+
|
|
37
33
|
Auto-IDs NOT in BomDocument — only on expanded composition tree.
|
|
38
34
|
Referenced instances and bml:each require explicit bml:id (BML_MISSING_ID).
|
|
39
|
-
|
|
35
|
+
|
|
40
36
|
Auto-ID: hash(typeFqn, sibling index post-expansion, parent partId) → 6 hex chars.
|
|
41
|
-
|
|
37
|
+
|
|
42
38
|
Qualified FQN::id: target in public aggregation, literal id, literal reference token.
|
|
43
|
-
Same-document unqualified ids resolve within visible aggregations
|
|
44
|
-
|
|
45
|
-
</
|
|
39
|
+
Same-document unqualified ids resolve within visible aggregations.
|
|
40
|
+
</documentation>
|
|
41
|
+
</bomdocumentation:InstanceIdRules>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — Introduction
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.Introduction-->
|
|
3
|
+
<bomdocumentation:Introduction xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,27 +18,28 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Purpose and scope of the BOM Urmodell package
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
The @blockml/bom package defines the formal Block Object Model (Urmodell) — canonical,
|
|
33
29
|
immutable, lossless parse/build results produced by @blockml/parser (or V3 BomBuilder.seal())
|
|
34
30
|
and consumed by serializer, validator, compiler, LSP, and render targets.
|
|
35
|
-
|
|
31
|
+
|
|
36
32
|
This library (org.blockml.bml.bom.*) is the SSOT. TypeScript in packages/bom/src/ implements
|
|
37
33
|
it. Parity tests in packages/bom/test/ verify BML ↔ TS alignment.
|
|
38
|
-
|
|
34
|
+
|
|
39
35
|
Related reading outside this package:
|
|
40
36
|
• Conceptual foundations — 01_bom_core.md
|
|
41
37
|
• BML authoring syntax — org.blockml.bml.documentation.* (@blockml/core)
|
|
42
38
|
• BML → BOM mapping — @blockml/parser (13_bml_to_bom_mapping.md)
|
|
43
|
-
• Expression AST — 10_expression_language.md
|
|
44
|
-
|
|
39
|
+
• Expression AST — 10_expression_language.md
|
|
40
|
+
</documentation>
|
|
45
41
|
<references>
|
|
46
42
|
<see type="bomdocumentation:LayerSeparation" relation="ReadNext" />
|
|
47
43
|
<see type="bomdocumentation:ArchitectureOverview" relation="SeeAlso" />
|
|
48
44
|
</references>
|
|
49
|
-
|
|
50
|
-
</block>
|
|
45
|
+
</bomdocumentation:Introduction>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — LayerSeparation
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.LayerSeparation-->
|
|
3
|
+
<bomdocumentation:LayerSeparation xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,24 +18,25 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Urmodell types vs BML definition meta-model
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Two layers share names but differ in semantics:
|
|
29
|
+
|
|
34
30
|
org.blockml.bml.definition.* (@blockml/core) — BML meta-model. Describes what block
|
|
35
31
|
definition documents mean (PropertyDefinition, BlockDefinition meta-type, …).
|
|
36
|
-
|
|
32
|
+
|
|
37
33
|
org.blockml.bml.bom.* (this package) — Urmodell runtime. Parse-result data structures
|
|
38
34
|
(BomDocument, BlockDefinition as TS interface, MemberDefinition, …).
|
|
39
|
-
|
|
35
|
+
|
|
40
36
|
Example: org.blockml.bml.definition.BlockDefinition describes BML syntax; org.blockml.bml.bom.block.BlockDefinition
|
|
41
|
-
describes the parser output shape. See 19_definition_blocks_and_bml_xml.md
|
|
42
|
-
|
|
37
|
+
describes the parser output shape. See 19_definition_blocks_and_bml_xml.md.
|
|
38
|
+
</documentation>
|
|
43
39
|
<references>
|
|
44
40
|
<see type="def:BlockDefinition" relation="SeeAlso" />
|
|
45
41
|
</references>
|
|
46
|
-
|
|
47
|
-
</block>
|
|
42
|
+
</bomdocumentation:LayerSeparation>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
"
|
|
1
|
+
<!--BOM Documentation — MemberValueSemantics
|
|
2
|
+
FQN: org.blockml.bml.bom.documentation.MemberValueSemantics-->
|
|
3
|
+
<bomdocumentation:MemberValueSemantics xmlns="http://blockml.org/bml"
|
|
10
4
|
xmlns:blockml="org.blockml.bml"
|
|
11
5
|
xmlns:bom="org.blockml.bml.bom"
|
|
12
6
|
xmlns:bomapi="org.blockml.bml.bom.api"
|
|
@@ -24,26 +18,27 @@
|
|
|
24
18
|
xmlns:type="org.blockml.bml.type"
|
|
25
19
|
xmlns:doc="org.blockml.bml.documentation">
|
|
26
20
|
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<is>
|
|
31
|
-
|
|
32
|
-
|
|
21
|
+
<baseType>
|
|
22
|
+
core:Documentation
|
|
23
|
+
</baseType>
|
|
24
|
+
<is>
|
|
25
|
+
Property value deep-copy rules
|
|
26
|
+
</is>
|
|
27
|
+
<documentation>
|
|
28
|
+
Property values are never linked — always deep copies on instances and definitions.
|
|
33
29
|
Cross-instance FQN::id references exist only on associations (basePresets, Step.part, …).
|
|
34
|
-
|
|
30
|
+
|
|
35
31
|
EnumType tokens (Standard, FQN::id) are resolution keys — BOM stores id + typeFqn only.
|
|
36
32
|
Struct/primitive literals stay inline in authored form — not normalized at parse time.
|
|
37
|
-
|
|
33
|
+
|
|
38
34
|
LiteralValue: kind literal, opaque value, typeFqn, optional authoredPlacement (D9).
|
|
39
35
|
ExpressionValue: kind expression, raw ${} text only in BOM; AST via parseExpression().
|
|
40
36
|
InterpolatedTextValue: kind interpolated, full authored text with ${} holes; AST via parseInterpolatedText().
|
|
41
37
|
AddressValue: parsed org.blockml.bml.type.Address shape.
|
|
42
|
-
|
|
43
|
-
Preset/config merge copies into render-time view — never writes references back to BomDocument
|
|
44
|
-
|
|
38
|
+
|
|
39
|
+
Preset/config merge copies into render-time view — never writes references back to BomDocument.
|
|
40
|
+
</documentation>
|
|
45
41
|
<references>
|
|
46
42
|
<see type="bomvalue:MemberValue" relation="Defines" />
|
|
47
43
|
</references>
|
|
48
|
-
|
|
49
|
-
</block>
|
|
44
|
+
</bomdocumentation:MemberValueSemantics>
|