metanorma-iso 1.5.13 → 1.5.14
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.
- checksums.yaml +4 -4
- data/lib/asciidoctor/iso/base.rb +0 -5
- data/lib/asciidoctor/iso/basicdoc.rng +32 -0
- data/lib/asciidoctor/iso/cleanup.rb +0 -6
- data/lib/asciidoctor/iso/isodoc.rng +15 -0
- data/lib/asciidoctor/iso/isostandard.rng +3 -0
- data/lib/isodoc/iso/iso.amendment.xsl +65 -28
- data/lib/isodoc/iso/iso.international-standard.xsl +65 -28
- data/lib/metanorma/iso/version.rb +1 -1
- metadata +2 -5
- data/lib/asciidoctor/iso/macros.rb +0 -21
- data/lib/asciidoctor/iso/term_lookup_cleanup.rb +0 -86
- data/spec/asciidoctor-iso/macros_spec.rb +0 -310
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e01ee8230b538949046cc2891d993eb0c6f3c3b9d3276d7e16ad05617c075eb
|
4
|
+
data.tar.gz: b1f87a4bc24143414ff469dc73541e4e581c04a803231a1ad10e60faf2a8d6aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e5582b6f64fd353fdcf5dd67fe897a91fb1d500b240cc4ddf7cfceba99435eb75935d4eceb70e5b6512ba3a0a3d68c373e2ecfc2f7a4ee718524449d7891870
|
7
|
+
data.tar.gz: 386d6f98b45ff9b03dc56e06177a0fa3b7b750732093c3697c1c32935b1b6e7c931f769d6f3ce4073c562ada67e7fc24e4ae6187337182a9d3234a7d72b6c5fe
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -5,7 +5,6 @@ require "pathname"
|
|
5
5
|
require "open-uri"
|
6
6
|
require "isodoc"
|
7
7
|
require "fileutils"
|
8
|
-
require 'asciidoctor/iso/macros'
|
9
8
|
|
10
9
|
module Asciidoctor
|
11
10
|
module ISO
|
@@ -13,10 +12,6 @@ module Asciidoctor
|
|
13
12
|
XML_ROOT_TAG = "iso-standard".freeze
|
14
13
|
XML_NAMESPACE = "https://www.metanorma.org/ns/iso".freeze
|
15
14
|
|
16
|
-
Asciidoctor::Extensions.register do
|
17
|
-
inline_macro Asciidoctor::Iso::TermRefInlineMacro
|
18
|
-
end
|
19
|
-
|
20
15
|
def html_converter(node)
|
21
16
|
IsoDoc::Iso::HtmlConvert.new(html_extract_attributes(node))
|
22
17
|
end
|
@@ -596,6 +596,7 @@
|
|
596
596
|
<ref name="bookmark"/>
|
597
597
|
<ref name="image"/>
|
598
598
|
<ref name="index"/>
|
599
|
+
<ref name="index-xref"/>
|
599
600
|
</choice>
|
600
601
|
</define>
|
601
602
|
<define name="PureTextElement">
|
@@ -737,6 +738,37 @@
|
|
737
738
|
</optional>
|
738
739
|
</element>
|
739
740
|
</define>
|
741
|
+
<define name="index-xref">
|
742
|
+
<element name="index-xref">
|
743
|
+
<attribute name="also">
|
744
|
+
<data type="boolean"/>
|
745
|
+
</attribute>
|
746
|
+
<element name="primary">
|
747
|
+
<oneOrMore>
|
748
|
+
<ref name="PureTextElement"/>
|
749
|
+
</oneOrMore>
|
750
|
+
</element>
|
751
|
+
<optional>
|
752
|
+
<element name="secondary">
|
753
|
+
<oneOrMore>
|
754
|
+
<ref name="PureTextElement"/>
|
755
|
+
</oneOrMore>
|
756
|
+
</element>
|
757
|
+
</optional>
|
758
|
+
<optional>
|
759
|
+
<element name="tertiary">
|
760
|
+
<oneOrMore>
|
761
|
+
<ref name="PureTextElement"/>
|
762
|
+
</oneOrMore>
|
763
|
+
</element>
|
764
|
+
</optional>
|
765
|
+
<element name="target">
|
766
|
+
<oneOrMore>
|
767
|
+
<ref name="PureTextElement"/>
|
768
|
+
</oneOrMore>
|
769
|
+
</element>
|
770
|
+
</element>
|
771
|
+
</define>
|
740
772
|
<!-- bare ID element, used for referencing arbitrary spans of text -->
|
741
773
|
<define name="bookmark">
|
742
774
|
<element name="bookmark">
|
@@ -4,7 +4,6 @@ require "htmlentities"
|
|
4
4
|
require "json"
|
5
5
|
require "pathname"
|
6
6
|
require "open-uri"
|
7
|
-
require "asciidoctor/iso/term_lookup_cleanup"
|
8
7
|
|
9
8
|
module Asciidoctor
|
10
9
|
module ISO
|
@@ -89,11 +88,6 @@ module Asciidoctor
|
|
89
88
|
end
|
90
89
|
end
|
91
90
|
|
92
|
-
def termdef_cleanup(xmldoc)
|
93
|
-
Asciidoctor::ISO::TermLookupCleanup.new(xmldoc, @log).call
|
94
|
-
super
|
95
|
-
end
|
96
|
-
|
97
91
|
# TODO sort by authors
|
98
92
|
# sort by: doc class (ISO, IEC, other standard (not DOI &c), other
|
99
93
|
# then standard class (docid class other than DOI &c)
|
@@ -246,6 +246,9 @@
|
|
246
246
|
<data type="boolean"/>
|
247
247
|
</attribute>
|
248
248
|
</optional>
|
249
|
+
<optional>
|
250
|
+
<ref name="colgroup"/>
|
251
|
+
</optional>
|
249
252
|
<optional>
|
250
253
|
<ref name="tname"/>
|
251
254
|
</optional>
|
@@ -764,6 +767,18 @@
|
|
764
767
|
</define>
|
765
768
|
</include>
|
766
769
|
<!-- end overrides -->
|
770
|
+
<define name="colgroup">
|
771
|
+
<element name="colgroup">
|
772
|
+
<oneOrMore>
|
773
|
+
<ref name="col"/>
|
774
|
+
</oneOrMore>
|
775
|
+
</element>
|
776
|
+
</define>
|
777
|
+
<define name="col">
|
778
|
+
<element name="col">
|
779
|
+
<attribute name="width"/>
|
780
|
+
</element>
|
781
|
+
</define>
|
767
782
|
<define name="TextElement" combine="choice">
|
768
783
|
<ref name="concept"/>
|
769
784
|
</define>
|
@@ -1363,10 +1363,10 @@
|
|
1363
1363
|
<xsl:otherwise> <!-- for ordered lists -->
|
1364
1364
|
<xsl:choose>
|
1365
1365
|
<xsl:when test="../@type = 'arabic'">
|
1366
|
-
<xsl:number format="a)"/>
|
1366
|
+
<xsl:number format="a)" lang="en"/>
|
1367
1367
|
</xsl:when>
|
1368
1368
|
<xsl:when test="../@type = 'alphabet'">
|
1369
|
-
<xsl:number format="a)"/>
|
1369
|
+
<xsl:number format="a)" lang="en"/>
|
1370
1370
|
</xsl:when>
|
1371
1371
|
<xsl:otherwise>
|
1372
1372
|
<xsl:number format="1."/>
|
@@ -2702,10 +2702,12 @@
|
|
2702
2702
|
|
2703
2703
|
|
2704
2704
|
<xsl:variable name="colwidths">
|
2705
|
-
<xsl:
|
2706
|
-
<xsl:
|
2707
|
-
|
2708
|
-
|
2705
|
+
<xsl:if test="not(*[local-name()='colgroup']/*[local-name()='col'])">
|
2706
|
+
<xsl:call-template name="calculate-column-widths">
|
2707
|
+
<xsl:with-param name="cols-count" select="$cols-count"/>
|
2708
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
2709
|
+
</xsl:call-template>
|
2710
|
+
</xsl:if>
|
2709
2711
|
</xsl:variable>
|
2710
2712
|
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
|
2711
2713
|
|
@@ -2788,16 +2790,25 @@
|
|
2788
2790
|
<xsl:attribute name="border-bottom">0pt solid black</xsl:attribute> <!-- set 0pt border, because there is a separete table below for footer -->
|
2789
2791
|
</xsl:if>
|
2790
2792
|
|
2791
|
-
<xsl:
|
2792
|
-
<xsl:
|
2793
|
-
<xsl:
|
2794
|
-
<fo:table-column column-width="
|
2795
|
-
</xsl:
|
2796
|
-
|
2797
|
-
|
2798
|
-
|
2799
|
-
|
2800
|
-
|
2793
|
+
<xsl:choose>
|
2794
|
+
<xsl:when test="*[local-name()='colgroup']/*[local-name()='col']">
|
2795
|
+
<xsl:for-each select="*[local-name()='colgroup']/*[local-name()='col']">
|
2796
|
+
<fo:table-column column-width="{@width}"/>
|
2797
|
+
</xsl:for-each>
|
2798
|
+
</xsl:when>
|
2799
|
+
<xsl:otherwise>
|
2800
|
+
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
2801
|
+
<xsl:choose>
|
2802
|
+
<xsl:when test=". = 1 or . = 0">
|
2803
|
+
<fo:table-column column-width="proportional-column-width(2)"/>
|
2804
|
+
</xsl:when>
|
2805
|
+
<xsl:otherwise>
|
2806
|
+
<fo:table-column column-width="proportional-column-width({.})"/>
|
2807
|
+
</xsl:otherwise>
|
2808
|
+
</xsl:choose>
|
2809
|
+
</xsl:for-each>
|
2810
|
+
</xsl:otherwise>
|
2811
|
+
</xsl:choose>
|
2801
2812
|
|
2802
2813
|
<xsl:choose>
|
2803
2814
|
<xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
|
@@ -2810,10 +2821,12 @@
|
|
2810
2821
|
|
2811
2822
|
</fo:table>
|
2812
2823
|
|
2824
|
+
<xsl:variable name="colgroup" select="*[local-name()='colgroup']"/>
|
2813
2825
|
<xsl:for-each select="*[local-name()='tbody']"><!-- select context to tbody -->
|
2814
2826
|
<xsl:call-template name="insertTableFooterInSeparateTable">
|
2815
2827
|
<xsl:with-param name="table_attributes" select="$table_attributes"/>
|
2816
2828
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2829
|
+
<xsl:with-param name="colgroup" select="$colgroup"/>
|
2817
2830
|
</xsl:call-template>
|
2818
2831
|
</xsl:for-each>
|
2819
2832
|
|
@@ -3075,12 +3088,22 @@
|
|
3075
3088
|
</xsl:template><xsl:template name="insertTableFooterInSeparateTable">
|
3076
3089
|
<xsl:param name="table_attributes"/>
|
3077
3090
|
<xsl:param name="colwidths"/>
|
3091
|
+
<xsl:param name="colgroup"/>
|
3078
3092
|
|
3079
3093
|
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
3080
3094
|
|
3081
3095
|
<xsl:if test="$isNoteOrFnExist = 'true'">
|
3082
3096
|
|
3083
|
-
<xsl:variable name="cols-count"
|
3097
|
+
<xsl:variable name="cols-count">
|
3098
|
+
<xsl:choose>
|
3099
|
+
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3100
|
+
<xsl:value-of select="count(xalan:nodeset($colgroup)//*[local-name()='col'])"/>
|
3101
|
+
</xsl:when>
|
3102
|
+
<xsl:otherwise>
|
3103
|
+
<xsl:value-of select="count(xalan:nodeset($colwidths)//column)"/>
|
3104
|
+
</xsl:otherwise>
|
3105
|
+
</xsl:choose>
|
3106
|
+
</xsl:variable>
|
3084
3107
|
|
3085
3108
|
<fo:table keep-with-previous="always">
|
3086
3109
|
<xsl:for-each select="xalan:nodeset($table_attributes)/attribute">
|
@@ -3098,16 +3121,25 @@
|
|
3098
3121
|
</xsl:choose>
|
3099
3122
|
</xsl:for-each>
|
3100
3123
|
|
3101
|
-
<xsl:
|
3102
|
-
<xsl:
|
3103
|
-
<xsl:
|
3104
|
-
<fo:table-column column-width="
|
3105
|
-
</xsl:
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
-
|
3124
|
+
<xsl:choose>
|
3125
|
+
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3126
|
+
<xsl:for-each select="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3127
|
+
<fo:table-column column-width="{@width}"/>
|
3128
|
+
</xsl:for-each>
|
3129
|
+
</xsl:when>
|
3130
|
+
<xsl:otherwise>
|
3131
|
+
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
3132
|
+
<xsl:choose>
|
3133
|
+
<xsl:when test=". = 1 or . = 0">
|
3134
|
+
<fo:table-column column-width="proportional-column-width(2)"/>
|
3135
|
+
</xsl:when>
|
3136
|
+
<xsl:otherwise>
|
3137
|
+
<fo:table-column column-width="proportional-column-width({.})"/>
|
3138
|
+
</xsl:otherwise>
|
3139
|
+
</xsl:choose>
|
3140
|
+
</xsl:for-each>
|
3141
|
+
</xsl:otherwise>
|
3142
|
+
</xsl:choose>
|
3111
3143
|
|
3112
3144
|
<fo:table-body>
|
3113
3145
|
<fo:table-row>
|
@@ -5378,7 +5410,8 @@
|
|
5378
5410
|
<fo:table-column column-width="107mm"/>
|
5379
5411
|
<fo:table-column column-width="15mm"/>
|
5380
5412
|
<fo:table-body>
|
5381
|
-
<fo:table-row
|
5413
|
+
<fo:table-row text-align="center" font-weight="bold" background-color="black" color="white">
|
5414
|
+
|
5382
5415
|
<fo:table-cell border="1pt solid black"><fo:block>Date</fo:block></fo:table-cell>
|
5383
5416
|
<fo:table-cell border="1pt solid black"><fo:block>Type</fo:block></fo:table-cell>
|
5384
5417
|
<fo:table-cell border="1pt solid black"><fo:block>Change</fo:block></fo:table-cell>
|
@@ -5396,6 +5429,10 @@
|
|
5396
5429
|
<fo:block><xsl:apply-templates/></fo:block>
|
5397
5430
|
</fo:table-cell>
|
5398
5431
|
</xsl:template><xsl:template name="processBibitem">
|
5432
|
+
|
5433
|
+
|
5434
|
+
<!-- end BIPM bibitem processing-->
|
5435
|
+
|
5399
5436
|
|
5400
5437
|
|
5401
5438
|
|
@@ -1363,10 +1363,10 @@
|
|
1363
1363
|
<xsl:otherwise> <!-- for ordered lists -->
|
1364
1364
|
<xsl:choose>
|
1365
1365
|
<xsl:when test="../@type = 'arabic'">
|
1366
|
-
<xsl:number format="a)"/>
|
1366
|
+
<xsl:number format="a)" lang="en"/>
|
1367
1367
|
</xsl:when>
|
1368
1368
|
<xsl:when test="../@type = 'alphabet'">
|
1369
|
-
<xsl:number format="a)"/>
|
1369
|
+
<xsl:number format="a)" lang="en"/>
|
1370
1370
|
</xsl:when>
|
1371
1371
|
<xsl:otherwise>
|
1372
1372
|
<xsl:number format="1."/>
|
@@ -2702,10 +2702,12 @@
|
|
2702
2702
|
|
2703
2703
|
|
2704
2704
|
<xsl:variable name="colwidths">
|
2705
|
-
<xsl:
|
2706
|
-
<xsl:
|
2707
|
-
|
2708
|
-
|
2705
|
+
<xsl:if test="not(*[local-name()='colgroup']/*[local-name()='col'])">
|
2706
|
+
<xsl:call-template name="calculate-column-widths">
|
2707
|
+
<xsl:with-param name="cols-count" select="$cols-count"/>
|
2708
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
2709
|
+
</xsl:call-template>
|
2710
|
+
</xsl:if>
|
2709
2711
|
</xsl:variable>
|
2710
2712
|
<!-- colwidths=<xsl:copy-of select="$colwidths"/> -->
|
2711
2713
|
|
@@ -2788,16 +2790,25 @@
|
|
2788
2790
|
<xsl:attribute name="border-bottom">0pt solid black</xsl:attribute> <!-- set 0pt border, because there is a separete table below for footer -->
|
2789
2791
|
</xsl:if>
|
2790
2792
|
|
2791
|
-
<xsl:
|
2792
|
-
<xsl:
|
2793
|
-
<xsl:
|
2794
|
-
<fo:table-column column-width="
|
2795
|
-
</xsl:
|
2796
|
-
|
2797
|
-
|
2798
|
-
|
2799
|
-
|
2800
|
-
|
2793
|
+
<xsl:choose>
|
2794
|
+
<xsl:when test="*[local-name()='colgroup']/*[local-name()='col']">
|
2795
|
+
<xsl:for-each select="*[local-name()='colgroup']/*[local-name()='col']">
|
2796
|
+
<fo:table-column column-width="{@width}"/>
|
2797
|
+
</xsl:for-each>
|
2798
|
+
</xsl:when>
|
2799
|
+
<xsl:otherwise>
|
2800
|
+
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
2801
|
+
<xsl:choose>
|
2802
|
+
<xsl:when test=". = 1 or . = 0">
|
2803
|
+
<fo:table-column column-width="proportional-column-width(2)"/>
|
2804
|
+
</xsl:when>
|
2805
|
+
<xsl:otherwise>
|
2806
|
+
<fo:table-column column-width="proportional-column-width({.})"/>
|
2807
|
+
</xsl:otherwise>
|
2808
|
+
</xsl:choose>
|
2809
|
+
</xsl:for-each>
|
2810
|
+
</xsl:otherwise>
|
2811
|
+
</xsl:choose>
|
2801
2812
|
|
2802
2813
|
<xsl:choose>
|
2803
2814
|
<xsl:when test="not(*[local-name()='tbody']) and *[local-name()='thead']">
|
@@ -2810,10 +2821,12 @@
|
|
2810
2821
|
|
2811
2822
|
</fo:table>
|
2812
2823
|
|
2824
|
+
<xsl:variable name="colgroup" select="*[local-name()='colgroup']"/>
|
2813
2825
|
<xsl:for-each select="*[local-name()='tbody']"><!-- select context to tbody -->
|
2814
2826
|
<xsl:call-template name="insertTableFooterInSeparateTable">
|
2815
2827
|
<xsl:with-param name="table_attributes" select="$table_attributes"/>
|
2816
2828
|
<xsl:with-param name="colwidths" select="$colwidths"/>
|
2829
|
+
<xsl:with-param name="colgroup" select="$colgroup"/>
|
2817
2830
|
</xsl:call-template>
|
2818
2831
|
</xsl:for-each>
|
2819
2832
|
|
@@ -3075,12 +3088,22 @@
|
|
3075
3088
|
</xsl:template><xsl:template name="insertTableFooterInSeparateTable">
|
3076
3089
|
<xsl:param name="table_attributes"/>
|
3077
3090
|
<xsl:param name="colwidths"/>
|
3091
|
+
<xsl:param name="colgroup"/>
|
3078
3092
|
|
3079
3093
|
<xsl:variable name="isNoteOrFnExist" select="../*[local-name()='note'] or ..//*[local-name()='fn'][local-name(..) != 'name']"/>
|
3080
3094
|
|
3081
3095
|
<xsl:if test="$isNoteOrFnExist = 'true'">
|
3082
3096
|
|
3083
|
-
<xsl:variable name="cols-count"
|
3097
|
+
<xsl:variable name="cols-count">
|
3098
|
+
<xsl:choose>
|
3099
|
+
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3100
|
+
<xsl:value-of select="count(xalan:nodeset($colgroup)//*[local-name()='col'])"/>
|
3101
|
+
</xsl:when>
|
3102
|
+
<xsl:otherwise>
|
3103
|
+
<xsl:value-of select="count(xalan:nodeset($colwidths)//column)"/>
|
3104
|
+
</xsl:otherwise>
|
3105
|
+
</xsl:choose>
|
3106
|
+
</xsl:variable>
|
3084
3107
|
|
3085
3108
|
<fo:table keep-with-previous="always">
|
3086
3109
|
<xsl:for-each select="xalan:nodeset($table_attributes)/attribute">
|
@@ -3098,16 +3121,25 @@
|
|
3098
3121
|
</xsl:choose>
|
3099
3122
|
</xsl:for-each>
|
3100
3123
|
|
3101
|
-
<xsl:
|
3102
|
-
<xsl:
|
3103
|
-
<xsl:
|
3104
|
-
<fo:table-column column-width="
|
3105
|
-
</xsl:
|
3106
|
-
|
3107
|
-
|
3108
|
-
|
3109
|
-
|
3110
|
-
|
3124
|
+
<xsl:choose>
|
3125
|
+
<xsl:when test="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3126
|
+
<xsl:for-each select="xalan:nodeset($colgroup)//*[local-name()='col']">
|
3127
|
+
<fo:table-column column-width="{@width}"/>
|
3128
|
+
</xsl:for-each>
|
3129
|
+
</xsl:when>
|
3130
|
+
<xsl:otherwise>
|
3131
|
+
<xsl:for-each select="xalan:nodeset($colwidths)//column">
|
3132
|
+
<xsl:choose>
|
3133
|
+
<xsl:when test=". = 1 or . = 0">
|
3134
|
+
<fo:table-column column-width="proportional-column-width(2)"/>
|
3135
|
+
</xsl:when>
|
3136
|
+
<xsl:otherwise>
|
3137
|
+
<fo:table-column column-width="proportional-column-width({.})"/>
|
3138
|
+
</xsl:otherwise>
|
3139
|
+
</xsl:choose>
|
3140
|
+
</xsl:for-each>
|
3141
|
+
</xsl:otherwise>
|
3142
|
+
</xsl:choose>
|
3111
3143
|
|
3112
3144
|
<fo:table-body>
|
3113
3145
|
<fo:table-row>
|
@@ -5378,7 +5410,8 @@
|
|
5378
5410
|
<fo:table-column column-width="107mm"/>
|
5379
5411
|
<fo:table-column column-width="15mm"/>
|
5380
5412
|
<fo:table-body>
|
5381
|
-
<fo:table-row
|
5413
|
+
<fo:table-row text-align="center" font-weight="bold" background-color="black" color="white">
|
5414
|
+
|
5382
5415
|
<fo:table-cell border="1pt solid black"><fo:block>Date</fo:block></fo:table-cell>
|
5383
5416
|
<fo:table-cell border="1pt solid black"><fo:block>Type</fo:block></fo:table-cell>
|
5384
5417
|
<fo:table-cell border="1pt solid black"><fo:block>Change</fo:block></fo:table-cell>
|
@@ -5396,6 +5429,10 @@
|
|
5396
5429
|
<fo:block><xsl:apply-templates/></fo:block>
|
5397
5430
|
</fo:table-cell>
|
5398
5431
|
</xsl:template><xsl:template name="processBibitem">
|
5432
|
+
|
5433
|
+
|
5434
|
+
<!-- end BIPM bibitem processing-->
|
5435
|
+
|
5399
5436
|
|
5400
5437
|
|
5401
5438
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-jing
|
@@ -292,10 +292,8 @@ files:
|
|
292
292
|
- lib/asciidoctor/iso/isostandard-amd.rng
|
293
293
|
- lib/asciidoctor/iso/isostandard.rnc
|
294
294
|
- lib/asciidoctor/iso/isostandard.rng
|
295
|
-
- lib/asciidoctor/iso/macros.rb
|
296
295
|
- lib/asciidoctor/iso/reqt.rng
|
297
296
|
- lib/asciidoctor/iso/section.rb
|
298
|
-
- lib/asciidoctor/iso/term_lookup_cleanup.rb
|
299
297
|
- lib/asciidoctor/iso/validate.rb
|
300
298
|
- lib/asciidoctor/iso/validate_requirements.rb
|
301
299
|
- lib/asciidoctor/iso/validate_section.rb
|
@@ -346,7 +344,6 @@ files:
|
|
346
344
|
- spec/asciidoctor-iso/cleanup_spec.rb
|
347
345
|
- spec/asciidoctor-iso/inline_spec.rb
|
348
346
|
- spec/asciidoctor-iso/lists_spec.rb
|
349
|
-
- spec/asciidoctor-iso/macros_spec.rb
|
350
347
|
- spec/asciidoctor-iso/refs_spec.rb
|
351
348
|
- spec/asciidoctor-iso/section_spec.rb
|
352
349
|
- spec/asciidoctor-iso/table_spec.rb
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'asciidoctor/extensions'
|
4
|
-
|
5
|
-
module Asciidoctor
|
6
|
-
module Iso
|
7
|
-
# Macro to transform `term[X,Y]` into em, termxref xml
|
8
|
-
class TermRefInlineMacro < Asciidoctor::Extensions::InlineMacroProcessor
|
9
|
-
use_dsl
|
10
|
-
|
11
|
-
named :term
|
12
|
-
name_positional_attributes 'name', 'termxref'
|
13
|
-
using_format :short
|
14
|
-
|
15
|
-
def process(_parent, _target, attrs)
|
16
|
-
termref = attrs['termxref'] || attrs['name']
|
17
|
-
"<em>#{attrs['name']}</em> (<termxref>#{termref}</termxref>)"
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,86 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true.
|
2
|
-
|
3
|
-
module Asciidoctor
|
4
|
-
module ISO
|
5
|
-
# Intelligent term lookup xml modifier
|
6
|
-
# Lookup all `term` and `calause` tags and replace `termxref` tags with
|
7
|
-
# `xref`:target tag
|
8
|
-
class TermLookupCleanup
|
9
|
-
AUTOMATIC_GENERATED_ID_REGEXP = /\A_/
|
10
|
-
EXISTING_TERM_REGEXP = /\Aterm-/
|
11
|
-
|
12
|
-
attr_reader :xmldoc, :termlookup, :log
|
13
|
-
|
14
|
-
def initialize(xmldoc, log)
|
15
|
-
@xmldoc = xmldoc
|
16
|
-
@log = log
|
17
|
-
@termlookup = {}
|
18
|
-
end
|
19
|
-
|
20
|
-
def call
|
21
|
-
@termlookup = replace_automatic_generated_ids_terms
|
22
|
-
set_termxref_tags_target
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def set_termxref_tags_target
|
28
|
-
xmldoc.xpath('//termxref').each do |node|
|
29
|
-
target = normalize_ref_id(node.text)
|
30
|
-
if termlookup[target].nil?
|
31
|
-
remove_missing_ref(node, target)
|
32
|
-
next
|
33
|
-
end
|
34
|
-
modify_ref_node(node, target)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def remove_missing_ref(node, target)
|
39
|
-
log.add('AsciiDoc Input', node,
|
40
|
-
%(Error: Term reference in `term[#{target}]` missing: \
|
41
|
-
"#{target}" is not defined in document))
|
42
|
-
term_name_node = node.previous.previous
|
43
|
-
term_name_node.remove
|
44
|
-
term_name_node.name = "strong"
|
45
|
-
term_name_node.children.first.content =
|
46
|
-
%(term "#{term_name_node.text}" not resolved)
|
47
|
-
node.add_previous_sibling(term_name_node)
|
48
|
-
node.remove
|
49
|
-
end
|
50
|
-
|
51
|
-
def modify_ref_node(node, target)
|
52
|
-
node.name = 'xref'
|
53
|
-
node['target'] = termlookup[target]
|
54
|
-
node.children.remove
|
55
|
-
node.remove_attribute('defaultref')
|
56
|
-
end
|
57
|
-
|
58
|
-
def replace_automatic_generated_ids_terms
|
59
|
-
xmldoc.xpath('//term').each.with_object({}) do |term_node, res|
|
60
|
-
normalize_id_and_memorize(term_node, res, './preferred')
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def normalize_id_and_memorize(term_node, res_table, text_selector)
|
65
|
-
term_text = normalize_ref_id(term_node.at(text_selector).text)
|
66
|
-
unless AUTOMATIC_GENERATED_ID_REGEXP.match(term_node['id']).nil?
|
67
|
-
term_node['id'] = unique_text_id(term_text)
|
68
|
-
end
|
69
|
-
res_table[term_text] = term_node['id']
|
70
|
-
end
|
71
|
-
|
72
|
-
def normalize_ref_id(text)
|
73
|
-
text.downcase.gsub(/[[:space:]]/, '-')
|
74
|
-
end
|
75
|
-
|
76
|
-
def unique_text_id(text)
|
77
|
-
return "term-#{text}" if xmldoc.at("//*[@id = 'term-#{text}']").nil?
|
78
|
-
(1..Float::INFINITY).lazy.each do |index|
|
79
|
-
if xmldoc.at("//*[@id = 'term-#{text}-#{index}']").nil?
|
80
|
-
break("term-#{text}-#{index}")
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
@@ -1,310 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
RSpec.describe Asciidoctor::ISO do
|
4
|
-
it "processes the Asciidoctor::ISO inline macros" do
|
5
|
-
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
6
|
-
#{ASCIIDOC_BLANK_HDR}
|
7
|
-
alt:[term1]
|
8
|
-
deprecated:[term1]
|
9
|
-
domain:[term1]
|
10
|
-
INPUT
|
11
|
-
#{BLANK_HDR}
|
12
|
-
<sections>
|
13
|
-
<admitted>term1</admitted>
|
14
|
-
<deprecates>term1</deprecates>
|
15
|
-
<domain>term1</domain>
|
16
|
-
</sections>
|
17
|
-
</iso-standard>
|
18
|
-
OUTPUT
|
19
|
-
end
|
20
|
-
|
21
|
-
describe 'term inline macros' do
|
22
|
-
subject(:convert) do
|
23
|
-
xmlpp(
|
24
|
-
strip_guid(
|
25
|
-
Asciidoctor.convert(
|
26
|
-
input, backend: :iso, header_footer: true)))
|
27
|
-
end
|
28
|
-
let(:input) do
|
29
|
-
<<~XML
|
30
|
-
#{ASCIIDOC_BLANK_HDR}
|
31
|
-
== Terms and Definitions
|
32
|
-
|
33
|
-
=== name2
|
34
|
-
|
35
|
-
== Main
|
36
|
-
|
37
|
-
term:[name,name2] is a term
|
38
|
-
XML
|
39
|
-
end
|
40
|
-
let(:output) do
|
41
|
-
<<~XML
|
42
|
-
#{BLANK_HDR}
|
43
|
-
<sections>
|
44
|
-
<terms id='_' obligation='normative'>
|
45
|
-
<title>Terms and definitions</title>
|
46
|
-
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
47
|
-
<p id='_'>
|
48
|
-
ISO and IEC maintain terminological databases for use in standardization
|
49
|
-
at the following addresses:
|
50
|
-
</p>
|
51
|
-
<ul id='_'>
|
52
|
-
<li>
|
53
|
-
<p id='_'>
|
54
|
-
ISO Online browsing platform: available at
|
55
|
-
<link target='http://www.iso.org/obp'/>
|
56
|
-
</p>
|
57
|
-
</li>
|
58
|
-
<li>
|
59
|
-
<p id='_'>
|
60
|
-
IEC Electropedia: available at
|
61
|
-
<link target='http://www.electropedia.org'/>
|
62
|
-
</p>
|
63
|
-
</li>
|
64
|
-
</ul>
|
65
|
-
<term id='term-name2'>
|
66
|
-
<preferred>name2</preferred>
|
67
|
-
</term>
|
68
|
-
</terms>
|
69
|
-
<clause id='_' inline-header='false' obligation='normative'>
|
70
|
-
<title>Main</title>
|
71
|
-
<p id='_'>
|
72
|
-
<em>name</em>
|
73
|
-
(
|
74
|
-
<xref target='term-name2'/>
|
75
|
-
) is a term
|
76
|
-
</p>
|
77
|
-
</clause>
|
78
|
-
</sections>
|
79
|
-
</iso-standard>
|
80
|
-
XML
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'converts macro into the correct xml' do
|
84
|
-
expect(convert).to(be_equivalent_to(xmlpp(output)))
|
85
|
-
end
|
86
|
-
|
87
|
-
context 'default params' do
|
88
|
-
let(:input) do
|
89
|
-
<<~XML
|
90
|
-
#{ASCIIDOC_BLANK_HDR}
|
91
|
-
|
92
|
-
== Terms and Definitions
|
93
|
-
|
94
|
-
=== name
|
95
|
-
|
96
|
-
== Main
|
97
|
-
|
98
|
-
term:[name] is a term
|
99
|
-
XML
|
100
|
-
end
|
101
|
-
let(:output) do
|
102
|
-
<<~XML
|
103
|
-
#{BLANK_HDR}
|
104
|
-
<sections>
|
105
|
-
<terms id='_' obligation='normative'>
|
106
|
-
<title>Terms and definitions</title>
|
107
|
-
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
108
|
-
<p id='_'>
|
109
|
-
ISO and IEC maintain terminological databases for use in standardization
|
110
|
-
at the following addresses:
|
111
|
-
</p>
|
112
|
-
<ul id='_'>
|
113
|
-
<li>
|
114
|
-
<p id='_'>
|
115
|
-
ISO Online browsing platform: available at
|
116
|
-
<link target='http://www.iso.org/obp' />
|
117
|
-
</p>
|
118
|
-
</li>
|
119
|
-
<li>
|
120
|
-
<p id='_'>
|
121
|
-
IEC Electropedia: available at
|
122
|
-
<link target='http://www.electropedia.org' />
|
123
|
-
</p>
|
124
|
-
</li>
|
125
|
-
</ul>
|
126
|
-
<term id='term-name'>
|
127
|
-
<preferred>name</preferred>
|
128
|
-
</term>
|
129
|
-
</terms>
|
130
|
-
<clause id='_' inline-header='false' obligation='normative'>
|
131
|
-
<title>Main</title>
|
132
|
-
<p id='_'>
|
133
|
-
<em>name</em>
|
134
|
-
(
|
135
|
-
<xref target='term-name' />
|
136
|
-
) is a term
|
137
|
-
</p>
|
138
|
-
</clause>
|
139
|
-
</sections>
|
140
|
-
</iso-standard>
|
141
|
-
XML
|
142
|
-
end
|
143
|
-
|
144
|
-
it 'uses `name` as termref name' do
|
145
|
-
expect(convert).to(be_equivalent_to(xmlpp(output)))
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
context 'multiply exising ids in document' do
|
150
|
-
let(:input) do
|
151
|
-
<<~XML
|
152
|
-
#{ASCIIDOC_BLANK_HDR}
|
153
|
-
|
154
|
-
== Terms and Definitions
|
155
|
-
|
156
|
-
=== name
|
157
|
-
=== name2
|
158
|
-
|
159
|
-
[[term-name]]
|
160
|
-
== Main
|
161
|
-
|
162
|
-
paragraph
|
163
|
-
|
164
|
-
[[term-name2]]
|
165
|
-
== Second
|
166
|
-
|
167
|
-
term:[name] is a term
|
168
|
-
term:[name2] is a term
|
169
|
-
XML
|
170
|
-
end
|
171
|
-
let(:output) do
|
172
|
-
<<~XML
|
173
|
-
#{BLANK_HDR}
|
174
|
-
<sections>
|
175
|
-
<terms id='_' obligation='normative'>
|
176
|
-
<title>Terms and definitions</title>
|
177
|
-
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
178
|
-
<p id='_'>
|
179
|
-
ISO and IEC maintain terminological databases for use in standardization
|
180
|
-
at the following addresses:
|
181
|
-
</p>
|
182
|
-
<ul id='_'>
|
183
|
-
<li>
|
184
|
-
<p id='_'>
|
185
|
-
ISO Online browsing platform: available at
|
186
|
-
<link target='http://www.iso.org/obp' />
|
187
|
-
</p>
|
188
|
-
</li>
|
189
|
-
<li>
|
190
|
-
<p id='_'>
|
191
|
-
IEC Electropedia: available at
|
192
|
-
<link target='http://www.electropedia.org' />
|
193
|
-
</p>
|
194
|
-
</li>
|
195
|
-
</ul>
|
196
|
-
<term id='term-name-1'>
|
197
|
-
<preferred>name</preferred>
|
198
|
-
</term>
|
199
|
-
<term id='term-name2-1'>
|
200
|
-
<preferred>name2</preferred>
|
201
|
-
</term>
|
202
|
-
</terms>
|
203
|
-
<clause id='term-name' inline-header='false' obligation='normative'>
|
204
|
-
<title>Main</title>
|
205
|
-
<p id='_'>paragraph</p>
|
206
|
-
</clause>
|
207
|
-
<clause id='term-name2' inline-header='false' obligation='normative'>
|
208
|
-
<title>Second</title>
|
209
|
-
<p id='_'>
|
210
|
-
<em>name</em>
|
211
|
-
(
|
212
|
-
<xref target='term-name-1' />
|
213
|
-
) is a term
|
214
|
-
<em>name2</em>
|
215
|
-
(
|
216
|
-
<xref target='term-name2-1' />
|
217
|
-
) is a term
|
218
|
-
</p>
|
219
|
-
</clause>
|
220
|
-
</sections>
|
221
|
-
</iso-standard>
|
222
|
-
XML
|
223
|
-
end
|
224
|
-
|
225
|
-
it 'generates unique ids which dont match existing ids' do
|
226
|
-
expect(convert).to(be_equivalent_to(xmlpp(output)))
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
|
-
context 'when missing actual ref' do
|
231
|
-
let(:input) do
|
232
|
-
<<~XML
|
233
|
-
#{ASCIIDOC_BLANK_HDR}
|
234
|
-
|
235
|
-
== Terms and Definitions
|
236
|
-
|
237
|
-
=== name identity
|
238
|
-
|
239
|
-
[[name-check]]
|
240
|
-
=== name check
|
241
|
-
|
242
|
-
paragraph
|
243
|
-
|
244
|
-
term:[name check] is a term
|
245
|
-
|
246
|
-
term:[name identity] is a term
|
247
|
-
|
248
|
-
Moreover, term:[missing] is a term
|
249
|
-
XML
|
250
|
-
end
|
251
|
-
let(:output) do
|
252
|
-
<<~XML
|
253
|
-
#{BLANK_HDR}
|
254
|
-
<sections>
|
255
|
-
<terms id='_' obligation='normative'>
|
256
|
-
<title>Terms and definitions</title>
|
257
|
-
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
258
|
-
<p id='_'>
|
259
|
-
ISO and IEC maintain terminological databases for use in standardization
|
260
|
-
at the following addresses:
|
261
|
-
</p>
|
262
|
-
<ul id='_'>
|
263
|
-
<li>
|
264
|
-
<p id='_'>
|
265
|
-
ISO Online browsing platform: available at
|
266
|
-
<link target='http://www.iso.org/obp'/>
|
267
|
-
</p>
|
268
|
-
</li>
|
269
|
-
<li>
|
270
|
-
<p id='_'>
|
271
|
-
IEC Electropedia: available at
|
272
|
-
<link target='http://www.electropedia.org'/>
|
273
|
-
</p>
|
274
|
-
</li>
|
275
|
-
</ul>
|
276
|
-
<term id='term-name-identity'>
|
277
|
-
<preferred>name identity</preferred>
|
278
|
-
</term>
|
279
|
-
<term id='name-check'>
|
280
|
-
<preferred>name check</preferred>
|
281
|
-
<definition>
|
282
|
-
<p id='_'>paragraph</p>
|
283
|
-
<p id='_'>
|
284
|
-
<em>name check</em>
|
285
|
-
(
|
286
|
-
<xref target='name-check'/>
|
287
|
-
) is a term
|
288
|
-
</p>
|
289
|
-
<p id='_'>
|
290
|
-
<em>name identity</em>
|
291
|
-
(
|
292
|
-
<xref target='term-name-identity'/>
|
293
|
-
) is a term
|
294
|
-
</p>
|
295
|
-
<p id="_">Moreover, (<strong>term “missing” not resolved</strong>) is a term
|
296
|
-
</p>
|
297
|
-
</definition>
|
298
|
-
</term>
|
299
|
-
</terms>
|
300
|
-
</sections>
|
301
|
-
</iso-standard>
|
302
|
-
XML
|
303
|
-
end
|
304
|
-
|
305
|
-
it 'generates unique ids which dont match existing ids' do
|
306
|
-
expect(convert).to(be_equivalent_to(xmlpp(output)))
|
307
|
-
end
|
308
|
-
end
|
309
|
-
end
|
310
|
-
end
|