metanorma-standoc 1.3.29 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/lib/asciidoctor/standoc/base.rb +2 -25
  4. data/lib/asciidoctor/standoc/biblio.rng +13 -3
  5. data/lib/asciidoctor/standoc/blocks.rb +20 -17
  6. data/lib/asciidoctor/standoc/cleanup.rb +2 -0
  7. data/lib/asciidoctor/standoc/cleanup_block.rb +2 -2
  8. data/lib/asciidoctor/standoc/cleanup_section.rb +8 -125
  9. data/lib/asciidoctor/standoc/cleanup_terms.rb +134 -0
  10. data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +57 -0
  11. data/lib/asciidoctor/standoc/datamodel/diagram_preprocessor.rb +102 -0
  12. data/lib/asciidoctor/standoc/datamodel/plantuml_renderer.rb +408 -0
  13. data/lib/asciidoctor/standoc/inline.rb +10 -5
  14. data/lib/asciidoctor/standoc/isodoc.rng +17 -1
  15. data/lib/asciidoctor/standoc/macros.rb +13 -8
  16. data/lib/asciidoctor/standoc/macros_yaml2text.rb +19 -13
  17. data/lib/asciidoctor/standoc/ref.rb +13 -56
  18. data/lib/asciidoctor/standoc/ref_sect.rb +124 -0
  19. data/lib/asciidoctor/standoc/section.rb +2 -46
  20. data/lib/asciidoctor/standoc/views/datamodel/model_representation.adoc.erb +30 -0
  21. data/lib/asciidoctor/standoc/views/datamodel/plantuml_representation.adoc.erb +20 -0
  22. data/lib/metanorma/standoc/version.rb +1 -1
  23. data/metanorma-standoc.gemspec +1 -1
  24. data/spec/asciidoctor-standoc/cleanup_spec.rb +51 -0
  25. data/spec/asciidoctor-standoc/datamodel/attributes_table_preprocessor_spec.rb +76 -0
  26. data/spec/asciidoctor-standoc/datamodel/diagram_preprocessor_spec.rb +72 -0
  27. data/spec/asciidoctor-standoc/inline_spec.rb +5 -1
  28. data/spec/asciidoctor-standoc/macros_spec.rb +50 -0
  29. data/spec/asciidoctor-standoc/macros_yaml2text_spec.rb +2 -1
  30. data/spec/asciidoctor-standoc/refs_spec.rb +0 -4
  31. data/spec/examples/datamodel/address_class_profile.adoc +4 -0
  32. data/spec/examples/datamodel/address_component_profile.adoc +4 -0
  33. data/spec/examples/datamodel/common_models_diagram.adoc +4 -0
  34. data/spec/examples/datamodel/models/models/AddressClassProfile.yml +90 -0
  35. data/spec/examples/datamodel/models/models/AddressComponentProfile.yml +63 -0
  36. data/spec/examples/datamodel/models/models/AddressComponentSpecification.yml +15 -0
  37. data/spec/examples/datamodel/models/models/AddressProfile.yml +36 -0
  38. data/spec/examples/datamodel/models/models/AttributeProfile.yml +32 -0
  39. data/spec/examples/datamodel/models/models/InterchangeAddressClassProfile.yml +79 -0
  40. data/spec/examples/datamodel/models/models/Localization copy.yml +23 -0
  41. data/spec/examples/datamodel/models/models/Localization.yml +23 -0
  42. data/spec/examples/datamodel/models/models/ProfileCompliantAddress.yml +36 -0
  43. data/spec/examples/datamodel/models/models/ProfileCompliantAddressComponent.yml +15 -0
  44. data/spec/examples/datamodel/models/models/Signature copy.yml +20 -0
  45. data/spec/examples/datamodel/models/models/Signature.yml +20 -0
  46. data/spec/examples/datamodel/models/models/TextDirectionCode copy.yml +16 -0
  47. data/spec/examples/datamodel/models/models/TextDirectionCode.yml +16 -0
  48. data/spec/examples/datamodel/models/models/Validity.yml +14 -0
  49. data/spec/examples/datamodel/models/models/iso19160-1/Address.yml +22 -0
  50. data/spec/examples/datamodel/models/models/iso19160-1/AddressComponent.yml +2 -0
  51. data/spec/examples/datamodel/models/style.uml.inc +37 -0
  52. data/spec/examples/datamodel/models/views/CommonModels.yml +9 -0
  53. data/spec/examples/datamodel/models/views/TopDown.yml +62 -0
  54. data/spec/examples/datamodel/top_down_diagram.adoc +4 -0
  55. data/spec/fixtures/macros_datamodel/address_class_profile.xml +149 -0
  56. data/spec/fixtures/macros_datamodel/address_component_profile.xml +71 -0
  57. data/spec/fixtures/macros_datamodel/common_models_diagram.xml +7 -0
  58. data/spec/fixtures/macros_datamodel/top_down_diagram.xml +7 -0
  59. data/spec/spec_helper.rb +13 -2
  60. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +66 -66
  61. data/spec/vcr_cassettes/isobib_get_123.yml +36 -36
  62. data/spec/vcr_cassettes/isobib_get_123_2001.yml +16 -16
  63. data/spec/vcr_cassettes/isobib_get_124.yml +17 -17
  64. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
  65. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +41 -38
  66. metadata +41 -4
@@ -0,0 +1,63 @@
1
+ name: AddressComponentProfile
2
+ modelType: class
3
+ definition: |
4
+ An `AddressComponentProfile` represents a profile of a `ProfileCompliantAddressComponent`,
5
+ which is extended from the `AddressComponent` model defined in <<ISO19160-1>>.
6
+
7
+ It represents additional attributes and restrictions to the `Address` model
8
+ of a `ProfileCompliantAddress`. It also represents metadata for the use of
9
+ the profile.
10
+ attributes:
11
+ key:
12
+ definition: An identifier of this `AddressComponentProfile`, shall be unique within the `AddressProfile`.
13
+ type: CharacterString
14
+ description:
15
+ definition: Textual description of this component.
16
+ type: CharacterString
17
+ example:
18
+ definition: A textual example to demonstrate the correct use of this component.
19
+ type: CharacterString
20
+ cardinality:
21
+ min: 0
22
+ max: 1
23
+ relations:
24
+ - target: AddressClassProfile
25
+ relationship:
26
+ target:
27
+ type: aggregation
28
+ attribute:
29
+ componentProfile:
30
+ cardinality:
31
+ min: 0
32
+ max: "*"
33
+ association: AddressComponentSpecification
34
+ action:
35
+ verb: uses
36
+ direction: source
37
+
38
+ - target: AttributeProfile
39
+ relationship:
40
+ source:
41
+ type: aggregation
42
+ attribute:
43
+ addressClassProfile:
44
+ target:
45
+ type: direct
46
+ attribute:
47
+ attributeProfile:
48
+ cardinality:
49
+ min: 0
50
+ max: '*'
51
+
52
+ - target: ProfileCompliantAddressComponent
53
+ relationship:
54
+ target:
55
+ type: direct
56
+ attribute:
57
+ profile:
58
+ cardinality:
59
+ min: 1
60
+ max: 1
61
+ action:
62
+ verb: compliesWith
63
+ direction: source
@@ -0,0 +1,15 @@
1
+ name: AddressComponentSpecification
2
+ modelType: class
3
+ definition: |
4
+ An `AddressComponentSpecification` specifies the cardinalities between a
5
+ `ProfileCompliantAddress` and `ProfileCompliantAddressComponents`.
6
+
7
+ A `ProfileComplinatAddress` MUST conform to this
8
+ `AddressComponentSpecification` to specifies its components.
9
+ attributes:
10
+ maxCardinality:
11
+ definition: The maximum number of instances of the specific `ProfileCompliantAddressComponent` of a `ProfileCompliantAddress`.
12
+ type: Integer
13
+ minCardinality:
14
+ definition: The minimum number of instances of the specific `ProfileCompliantAddressComponent` of a `ProfileCompliantAddress`.
15
+ type: Integer
@@ -0,0 +1,36 @@
1
+ name: AddressProfile
2
+ modelType: class
3
+ definition:
4
+ attributes:
5
+ country:
6
+ definition: The country of which this AddressProfile represents.
7
+ type: iso3166Code
8
+ cardinality:
9
+ min: 0
10
+ max: "*"
11
+ relations:
12
+ - target: AddressComponentProfile
13
+ relationship:
14
+ source:
15
+ type: aggregation
16
+ attribute:
17
+ componentProfile:
18
+ cardinality:
19
+ min: 0
20
+ max: "*"
21
+ action:
22
+ verb: defines
23
+ direction: target
24
+
25
+ - target: AddressClassProfile
26
+ relationship:
27
+ source:
28
+ type: aggregation
29
+ attribute:
30
+ addressProfile:
31
+ cardinality:
32
+ min: 0
33
+ max: "*"
34
+ action:
35
+ verb: defines
36
+ direction: target
@@ -0,0 +1,32 @@
1
+ modelType: class
2
+ definition: |
3
+ An `AttributeProfile` represents name, cardinalities and value type of an
4
+ attribute in a model that complies with a profile that includes this
5
+ AttributeProfile.
6
+
7
+ If it represents an attribute that has been previously defined, e.g. an
8
+ attribute in Address model defined in <<ISO19160-1>>, it extends the
9
+ definition of the attribute by redefining the name, cardinalities and value
10
+ type.
11
+ attributes:
12
+ name:
13
+ definition: The name of the attribute represented by this AttributeProfile.
14
+ type: CharacterString
15
+ minCardinality:
16
+ definition: The minimum number of occurrences of the attribute represented by this AttributeProfile.
17
+ type: Integer
18
+ cardinality:
19
+ min: 0
20
+ max: 1
21
+ maxCardinality:
22
+ definition: The maximum number of occurences of the attribute represented by this AttributeProfile.
23
+ type: Integer
24
+ cardinality:
25
+ min: 0
26
+ max: 1
27
+ valueType:
28
+ definition: The data type of values of the attribute represented by this AttributeProfile.
29
+ type: CharacterString
30
+ cardinality:
31
+ min: 0
32
+ max: 1
@@ -0,0 +1,79 @@
1
+ name: InterchangeAddressClassProfile
2
+ modelType: class
3
+ definition: |
4
+ This `InterchangeAddressClassProfile` extends from `AddressClassProfile` to
5
+ enforce the existence of several subclasses of `AttributeProfile` for
6
+ interchange.
7
+
8
+ It also introduces `FormTemplate` and `DisplayTemplate` to
9
+ to allow the display, entry of, and the interchange of an
10
+ `ProfileCompliantAddress` (address
11
+ instance complying with an `InterchangeAddressClassProfile`).
12
+ --
13
+ attributes:
14
+ relations:
15
+ - target: AddressClassProfile
16
+ relationship:
17
+ target:
18
+ type: inheritance
19
+
20
+ - target: AttributeProfileSignature
21
+ relationship:
22
+ source:
23
+ type: aggregation
24
+ attribute:
25
+ attributeProfile:
26
+ target:
27
+ type: direct
28
+ attribute:
29
+ addressClassProfile:
30
+
31
+ - target: AttributeProfileAddressFeature
32
+ relationship:
33
+ source:
34
+ type: aggregation
35
+ attribute:
36
+ attributeProfile:
37
+ target:
38
+ type: direct
39
+ attribute:
40
+ addressClassProfile:
41
+
42
+ - target: AttributeProfileValidity
43
+ relationship:
44
+ source:
45
+ type: aggregation
46
+ attribute:
47
+ attributeProfile:
48
+ target:
49
+ type: direct
50
+ attribute:
51
+ addressClassProfile:
52
+
53
+ - target: FormTemplate
54
+ relationship:
55
+ source:
56
+ type: aggregation
57
+ target:
58
+ attribute:
59
+ formTemplate:
60
+ cardinality:
61
+ min: 0
62
+ max: "*"
63
+ action:
64
+ verb: defines
65
+ direction: target
66
+
67
+ - target: DisplayTemplate
68
+ relationship:
69
+ source:
70
+ type: aggregation
71
+ target:
72
+ attribute:
73
+ displayTemplate:
74
+ cardinality:
75
+ min: 0
76
+ max: "*"
77
+ action:
78
+ verb: defines
79
+ direction: target
@@ -0,0 +1,23 @@
1
+ name: Localization
2
+ modelType: class
3
+ definition: |
4
+ The language and script used within the parent object.
5
+
6
+ Represented by the `PT_Locale` object defined in <<ISO19115-1>> and an
7
+ <<ISO15924>> script code.
8
+ attributes:
9
+ locale:
10
+ definition: The locale of the parent object.
11
+ type: iso19115PT_Locale
12
+ script:
13
+ definition: The type of written script used in the parent object.
14
+ type: iso15924Code
15
+ textDirection:
16
+ definition: Indicating in which direction the text of the parent should be read.
17
+ type: TextDirectionCode
18
+ relations:
19
+ - target: Validity
20
+ relationship:
21
+ target:
22
+ type: direct
23
+ direction: "[hidden]"
@@ -0,0 +1,23 @@
1
+ name: Localization
2
+ modelType: class
3
+ definition: |
4
+ The language and script used within the parent object.
5
+
6
+ Represented by the `PT_Locale` object defined in <<ISO19115-1>> and an
7
+ <<ISO15924>> script code.
8
+ attributes:
9
+ locale:
10
+ definition: The locale of the parent object.
11
+ type: iso19115PT_Locale
12
+ script:
13
+ definition: The type of written script used in the parent object.
14
+ type: iso15924Code
15
+ textDirection:
16
+ definition: Indicating in which direction the text of the parent should be read.
17
+ type: TextDirectionCode
18
+ relations:
19
+ - target: Validity
20
+ relationship:
21
+ target:
22
+ type: direct
23
+ direction: "[hidden]"
@@ -0,0 +1,36 @@
1
+ name: ProfileCompliantAddress
2
+ modelType: class
3
+ definition: |
4
+ ProfileCompliantAddress extends from the `Address` model defined in
5
+ <<ISO19160-1>> to represent an `Address` complying with an
6
+ `AddressClassProfile`.
7
+
8
+ A `ProfileCompliantAddress` MUST conform to the constraints and
9
+ requirements specified in `AddressClassProfile`, and its associated
10
+ profiles and specifications.
11
+ relations:
12
+ - target: Address
13
+ relationship:
14
+ target:
15
+ type: inheritance
16
+
17
+ - target: ProfileCompliantAddressComponent
18
+ relationship:
19
+ source:
20
+ type: aggregation
21
+ attributes:
22
+ address:
23
+ cardinality:
24
+ min: 1
25
+ max: "*"
26
+ target:
27
+ type: direct
28
+ attributes:
29
+ addressComponent:
30
+ cardinality:
31
+ min: 1
32
+ max: "*"
33
+ association: AddressComponentSpecification
34
+ action:
35
+ verb: comprises
36
+ direction: target
@@ -0,0 +1,15 @@
1
+ name: ProfileCompliantAddressComponent
2
+ modelType: class
3
+ definition: |
4
+ ProfileCompliantAddressComponent extends from the AddressComponent model
5
+ defined in <<ISO19160-1>> to represent an Address complying with an
6
+ AddressClassProfile.
7
+
8
+ A ProfileCompliantAddressComponent MUST conform to the constraints and
9
+ requirements specified in AddressComponentProfile, and its associated
10
+ profiles and specifications.
11
+ relations:
12
+ - target: AddressComponent
13
+ relationship:
14
+ target:
15
+ type: inheritance
@@ -0,0 +1,20 @@
1
+ name: Signature
2
+ modelType: class
3
+ definition: |
4
+ A cryptographic signature used to determine data integrity and validity of the object it belongs to.
5
+ attributes:
6
+ algorithm:
7
+ definition: The public key cryptographic algorithm used for this digital signature.
8
+ type: iso14888Oid
9
+ publicKey:
10
+ definition: A reference to the actual public key used to verify the digital signature, a URI where the public key of the signer used for this signature is found.
11
+ type: Uri
12
+ signature:
13
+ definition: The actual digital signature value encoded in Base64 format.
14
+ type: CharacterString
15
+ relations:
16
+ - target: Localization
17
+ relationship:
18
+ target:
19
+ type: direct
20
+ direction: "[hidden]"
@@ -0,0 +1,20 @@
1
+ name: Signature
2
+ modelType: class
3
+ definition: |
4
+ A cryptographic signature used to determine data integrity and validity of the object it belongs to.
5
+ attributes:
6
+ algorithm:
7
+ definition: The public key cryptographic algorithm used for this digital signature.
8
+ type: iso14888Oid
9
+ publicKey:
10
+ definition: A reference to the actual public key used to verify the digital signature, a URI where the public key of the signer used for this signature is found.
11
+ type: Uri
12
+ signature:
13
+ definition: The actual digital signature value encoded in Base64 format.
14
+ type: CharacterString
15
+ relations:
16
+ - target: Localization
17
+ relationship:
18
+ target:
19
+ type: direct
20
+ direction: "[hidden]"
@@ -0,0 +1,16 @@
1
+ name: TextDirectionCode
2
+ modelType: enum
3
+ definition: |
4
+ An enumeration value of TextDirectionCode represents the reading
5
+ direction of textual data whether it is from left to right or right to
6
+ left, and from top to bottom or bottom to top.
7
+ type: enumeration
8
+ values:
9
+ leftToRightTopToBottom:
10
+ definition: Indicating that text should be read left to right, and top to bottom.
11
+ rightToLeftTopToBottom:
12
+ definition: Indicating that text should be read right to left, and top to bottom.
13
+ leftToRightBottomToTop:
14
+ definition: Indicating that text should be read left to right, and bottom to top.
15
+ rightToLeftBottomToTop:
16
+ definition: Indicating that text should be read right to left, and bottom to top.
@@ -0,0 +1,16 @@
1
+ name: TextDirectionCode
2
+ modelType: enum
3
+ definition: |
4
+ An enumeration value of TextDirectionCode represents the reading
5
+ direction of textual data whether it is from left to right or right to
6
+ left, and from top to bottom or bottom to top.
7
+ type: enumeration
8
+ values:
9
+ leftToRightTopToBottom:
10
+ definition: Indicating that text should be read left to right, and top to bottom.
11
+ rightToLeftTopToBottom:
12
+ definition: Indicating that text should be read right to left, and top to bottom.
13
+ leftToRightBottomToTop:
14
+ definition: Indicating that text should be read left to right, and bottom to top.
15
+ rightToLeftBottomToTop:
16
+ definition: Indicating that text should be read right to left, and bottom to top.
@@ -0,0 +1,14 @@
1
+ name: Validity
2
+ modelType: class
3
+ definition: |
4
+ The time interval where this interchange address profile is determined valid, and the revision number (represented as a date).
5
+ attributes:
6
+ validityBegins:
7
+ definition: The date and time when this object becomes valid.
8
+ type: iso19115CI_Date
9
+ validityEnds:
10
+ definition: The date and time when this object becomes invalid.
11
+ type: iso19115CI_Date
12
+ revision:
13
+ definition: Issuance date/time of this object.
14
+ type: iso19115CI_Date
@@ -0,0 +1,22 @@
1
+ name: Address
2
+ modelType: class
3
+ relations:
4
+ - target: AddressComponent
5
+ relationship:
6
+ source:
7
+ type: aggregation
8
+ attributes:
9
+ address:
10
+ cardinality:
11
+ min: 1
12
+ max: "*"
13
+ target:
14
+ type: direct
15
+ attributes:
16
+ addressComponent:
17
+ cardinality:
18
+ min: 1
19
+ max: "*"
20
+ action:
21
+ verb: comprises
22
+ direction: target