metanorma-iho 0.8.7 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/iho/i18n-en.yaml +1 -0
- data/lib/isodoc/iho/iho.specification.xsl +63 -12
- data/lib/isodoc/iho/iho.standard.xsl +63 -12
- data/lib/isodoc/iho/presentation_xml_convert.rb +87 -0
- data/lib/metanorma/iho/basicdoc.rng +94 -8
- data/lib/metanorma/iho/biblio-standoc.rng +44 -1
- data/lib/metanorma/iho/biblio.rng +11 -0
- data/lib/metanorma/iho/isodoc.rng +13 -64
- data/lib/metanorma/iho/reqt.rng +0 -16
- data/lib/metanorma/iho/version.rb +1 -1
- data/metanorma-iho.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0222564e4000d5ef484f0f0a82838f1c3ece8a0d2546e795e992c62dc69ae5fa
|
4
|
+
data.tar.gz: 3db4ef3f58e77c33f55c228c6714c67ba8e278262f6de0706b2ee8ad784ff984
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fc6726f6a56ad1fbf42489bddd54d972563e638dd83cbed938176d7ad98635a41a1e2be48f70a18f56c594a5adaf489badbafda07bd0b3d26297da7f0535369
|
7
|
+
data.tar.gz: 5217fe26eda5262afd14ae27c9fcc4a651c172593d7c427ca7d2e60dcf35f67964dbe6309fa66708319a8dd174ffeaa28fcb5abb4a11b0def1da95b97fd72c4c
|
data/lib/isodoc/iho/i18n-en.yaml
CHANGED
@@ -2606,7 +2606,9 @@
|
|
2606
2606
|
</xsl:template> <!-- license-statement/p -->
|
2607
2607
|
|
2608
2608
|
<xsl:template match="*[local-name()='legal-statement']">
|
2609
|
+
<xsl:param name="isLegacy">false</xsl:param>
|
2609
2610
|
<fo:block xsl:use-attribute-sets="legal-statement-style">
|
2611
|
+
|
2610
2612
|
<xsl:apply-templates/>
|
2611
2613
|
</fo:block>
|
2612
2614
|
</xsl:template> <!-- legal-statement -->
|
@@ -4875,13 +4877,14 @@
|
|
4875
4877
|
<!-- ================= -->
|
4876
4878
|
<!-- Added,deleted text -->
|
4877
4879
|
<!-- ================= -->
|
4878
|
-
<xsl:template match="*[local-name()='add']" name="tag_add">
|
4880
|
+
<xsl:template match="*[local-name()='add'] | *[local-name() = 'change-open-tag'] | *[local-name() = 'change-close-tag']" name="tag_add">
|
4879
4881
|
<xsl:param name="skip">true</xsl:param>
|
4880
4882
|
<xsl:param name="block">false</xsl:param>
|
4881
4883
|
<xsl:param name="type"/>
|
4882
4884
|
<xsl:param name="text-align"/>
|
4883
4885
|
<xsl:choose>
|
4884
|
-
<xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start
|
4886
|
+
<xsl:when test="starts-with(., $ace_tag) or local-name() = 'change-open-tag' or local-name() = 'change-close-tag'"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start, or
|
4887
|
+
<change-open-tag>A<sub>1</sub></change-open-tag>, <change-close-tag>A<sub>1</sub></change-close-tag> -->
|
4885
4888
|
<xsl:choose>
|
4886
4889
|
<xsl:when test="$skip = 'true' and ((local-name(../..) = 'note' and not(preceding-sibling::node())) or (local-name(..) = 'title' and preceding-sibling::node()[1][local-name() = 'tab']) or local-name(..) = 'formattedref' and not(preceding-sibling::node())) and ../node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]"><!-- start tag displayed in template name="note" and title --></xsl:when>
|
4887
4890
|
<xsl:otherwise>
|
@@ -4889,12 +4892,32 @@
|
|
4889
4892
|
<xsl:call-template name="insertTag">
|
4890
4893
|
<xsl:with-param name="type">
|
4891
4894
|
<xsl:choose>
|
4895
|
+
<xsl:when test="local-name() = 'change-open-tag'">start</xsl:when>
|
4896
|
+
<xsl:when test="local-name() = 'change-close-tag'">end</xsl:when>
|
4892
4897
|
<xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
|
4893
4898
|
<xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
|
4894
4899
|
</xsl:choose>
|
4895
4900
|
</xsl:with-param>
|
4896
|
-
<xsl:with-param name="kind"
|
4897
|
-
|
4901
|
+
<xsl:with-param name="kind">
|
4902
|
+
<xsl:choose>
|
4903
|
+
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
|
4904
|
+
<xsl:value-of select="text()"/>
|
4905
|
+
</xsl:when>
|
4906
|
+
<xsl:otherwise>
|
4907
|
+
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
|
4908
|
+
</xsl:otherwise>
|
4909
|
+
</xsl:choose>
|
4910
|
+
</xsl:with-param>
|
4911
|
+
<xsl:with-param name="value">
|
4912
|
+
<xsl:choose>
|
4913
|
+
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
|
4914
|
+
<xsl:value-of select="*[local-name() = 'sub']"/>
|
4915
|
+
</xsl:when>
|
4916
|
+
<xsl:otherwise>
|
4917
|
+
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
|
4918
|
+
</xsl:otherwise>
|
4919
|
+
</xsl:choose>
|
4920
|
+
</xsl:with-param>
|
4898
4921
|
</xsl:call-template>
|
4899
4922
|
</xsl:variable>
|
4900
4923
|
<xsl:choose>
|
@@ -7171,11 +7194,17 @@
|
|
7171
7194
|
</xsl:when>
|
7172
7195
|
<xsl:otherwise>
|
7173
7196
|
|
7197
|
+
<xsl:variable name="image_class" select="ancestor::*[local-name() = 'image']/@class"/>
|
7198
|
+
<xsl:variable name="ancestor_table_cell" select="normalize-space(ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])"/>
|
7199
|
+
|
7174
7200
|
<xsl:variable name="element">
|
7175
7201
|
<xsl:choose>
|
7176
7202
|
<xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
|
7177
7203
|
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
|
7178
7204
|
</xsl:when>
|
7205
|
+
<xsl:when test="not(ancestor::*[local-name() = 'figure'])">
|
7206
|
+
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
|
7207
|
+
</xsl:when>
|
7179
7208
|
<xsl:otherwise>
|
7180
7209
|
<fo:block xsl:use-attribute-sets="image-style">
|
7181
7210
|
<xsl:if test="ancestor::*[local-name() = 'dt']">
|
@@ -7191,10 +7220,24 @@
|
|
7191
7220
|
<xsl:copy-of select="@*"/>
|
7192
7221
|
<!-- <fo:block xsl:use-attribute-sets="image-style"> -->
|
7193
7222
|
<fo:instream-foreign-object fox:alt-text="{$alt-text}">
|
7194
|
-
|
7195
|
-
|
7196
|
-
|
7197
|
-
|
7223
|
+
|
7224
|
+
<xsl:choose>
|
7225
|
+
<xsl:when test="$image_class = 'corrigenda-tag'">
|
7226
|
+
<xsl:attribute name="fox:alt-text">CorrigendaTag</xsl:attribute>
|
7227
|
+
<xsl:attribute name="baseline-shift">-10%</xsl:attribute>
|
7228
|
+
<xsl:if test="$ancestor_table_cell = 'true'">
|
7229
|
+
<xsl:attribute name="baseline-shift">-25%</xsl:attribute>
|
7230
|
+
</xsl:if>
|
7231
|
+
<xsl:attribute name="height">3.5mm</xsl:attribute>
|
7232
|
+
</xsl:when>
|
7233
|
+
<xsl:otherwise>
|
7234
|
+
<xsl:if test="$isGenerateTableIF = 'false'">
|
7235
|
+
<xsl:attribute name="width">100%</xsl:attribute>
|
7236
|
+
</xsl:if>
|
7237
|
+
<xsl:attribute name="content-height">100%</xsl:attribute>
|
7238
|
+
</xsl:otherwise>
|
7239
|
+
</xsl:choose>
|
7240
|
+
|
7198
7241
|
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
|
7199
7242
|
<xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
|
7200
7243
|
<xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
|
@@ -9365,14 +9408,16 @@
|
|
9365
9408
|
|
9366
9409
|
<xsl:template match="*[local-name() = 'annex']">
|
9367
9410
|
<fo:block break-after="page"/>
|
9368
|
-
<fo:block
|
9411
|
+
<fo:block>
|
9369
9412
|
|
9370
9413
|
<xsl:call-template name="setBlockSpanAll"/>
|
9371
9414
|
|
9372
9415
|
<xsl:call-template name="refine_annex_style"/>
|
9373
9416
|
|
9374
9417
|
</fo:block>
|
9375
|
-
<
|
9418
|
+
<fo:block id="{@id}">
|
9419
|
+
<xsl:apply-templates/>
|
9420
|
+
</fo:block>
|
9376
9421
|
</xsl:template>
|
9377
9422
|
|
9378
9423
|
<xsl:template name="refine_annex_style">
|
@@ -9392,13 +9437,19 @@
|
|
9392
9437
|
<fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9393
9438
|
</xsl:when>
|
9394
9439
|
<!-- if there isn't element with id 'from', then create 'bookmark' here -->
|
9395
|
-
<xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
|
9440
|
+
<xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
|
9441
|
+
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9442
|
+
</xsl:when>
|
9443
|
+
<xsl:when test="not(//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
|
9396
9444
|
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9397
9445
|
</xsl:when>
|
9398
9446
|
</xsl:choose>
|
9399
9447
|
|
9400
9448
|
</xsl:template>
|
9401
9449
|
|
9450
|
+
<!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
|
9451
|
+
<xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
|
9452
|
+
|
9402
9453
|
<xsl:template match="*[local-name() = 'name']/text()">
|
9403
9454
|
<!-- 0xA0 to space replacement -->
|
9404
9455
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
|
@@ -11007,7 +11058,7 @@
|
|
11007
11058
|
|
11008
11059
|
<xsl:template name="printEdition">
|
11009
11060
|
<xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
|
11010
|
-
|
11061
|
+
|
11011
11062
|
<xsl:choose>
|
11012
11063
|
<xsl:when test="$edition_i18n != ''">
|
11013
11064
|
<!-- Example: <edition language="fr">deuxième édition</edition> -->
|
@@ -2606,7 +2606,9 @@
|
|
2606
2606
|
</xsl:template> <!-- license-statement/p -->
|
2607
2607
|
|
2608
2608
|
<xsl:template match="*[local-name()='legal-statement']">
|
2609
|
+
<xsl:param name="isLegacy">false</xsl:param>
|
2609
2610
|
<fo:block xsl:use-attribute-sets="legal-statement-style">
|
2611
|
+
|
2610
2612
|
<xsl:apply-templates/>
|
2611
2613
|
</fo:block>
|
2612
2614
|
</xsl:template> <!-- legal-statement -->
|
@@ -4875,13 +4877,14 @@
|
|
4875
4877
|
<!-- ================= -->
|
4876
4878
|
<!-- Added,deleted text -->
|
4877
4879
|
<!-- ================= -->
|
4878
|
-
<xsl:template match="*[local-name()='add']" name="tag_add">
|
4880
|
+
<xsl:template match="*[local-name()='add'] | *[local-name() = 'change-open-tag'] | *[local-name() = 'change-close-tag']" name="tag_add">
|
4879
4881
|
<xsl:param name="skip">true</xsl:param>
|
4880
4882
|
<xsl:param name="block">false</xsl:param>
|
4881
4883
|
<xsl:param name="type"/>
|
4882
4884
|
<xsl:param name="text-align"/>
|
4883
4885
|
<xsl:choose>
|
4884
|
-
<xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start
|
4886
|
+
<xsl:when test="starts-with(., $ace_tag) or local-name() = 'change-open-tag' or local-name() = 'change-close-tag'"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start, or
|
4887
|
+
<change-open-tag>A<sub>1</sub></change-open-tag>, <change-close-tag>A<sub>1</sub></change-close-tag> -->
|
4885
4888
|
<xsl:choose>
|
4886
4889
|
<xsl:when test="$skip = 'true' and ((local-name(../..) = 'note' and not(preceding-sibling::node())) or (local-name(..) = 'title' and preceding-sibling::node()[1][local-name() = 'tab']) or local-name(..) = 'formattedref' and not(preceding-sibling::node())) and ../node()[last()][local-name() = 'add'][starts-with(text(), $ace_tag)]"><!-- start tag displayed in template name="note" and title --></xsl:when>
|
4887
4890
|
<xsl:otherwise>
|
@@ -4889,12 +4892,32 @@
|
|
4889
4892
|
<xsl:call-template name="insertTag">
|
4890
4893
|
<xsl:with-param name="type">
|
4891
4894
|
<xsl:choose>
|
4895
|
+
<xsl:when test="local-name() = 'change-open-tag'">start</xsl:when>
|
4896
|
+
<xsl:when test="local-name() = 'change-close-tag'">end</xsl:when>
|
4892
4897
|
<xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
|
4893
4898
|
<xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
|
4894
4899
|
</xsl:choose>
|
4895
4900
|
</xsl:with-param>
|
4896
|
-
<xsl:with-param name="kind"
|
4897
|
-
|
4901
|
+
<xsl:with-param name="kind">
|
4902
|
+
<xsl:choose>
|
4903
|
+
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
|
4904
|
+
<xsl:value-of select="text()"/>
|
4905
|
+
</xsl:when>
|
4906
|
+
<xsl:otherwise>
|
4907
|
+
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
|
4908
|
+
</xsl:otherwise>
|
4909
|
+
</xsl:choose>
|
4910
|
+
</xsl:with-param>
|
4911
|
+
<xsl:with-param name="value">
|
4912
|
+
<xsl:choose>
|
4913
|
+
<xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
|
4914
|
+
<xsl:value-of select="*[local-name() = 'sub']"/>
|
4915
|
+
</xsl:when>
|
4916
|
+
<xsl:otherwise>
|
4917
|
+
<xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
|
4918
|
+
</xsl:otherwise>
|
4919
|
+
</xsl:choose>
|
4920
|
+
</xsl:with-param>
|
4898
4921
|
</xsl:call-template>
|
4899
4922
|
</xsl:variable>
|
4900
4923
|
<xsl:choose>
|
@@ -7171,11 +7194,17 @@
|
|
7171
7194
|
</xsl:when>
|
7172
7195
|
<xsl:otherwise>
|
7173
7196
|
|
7197
|
+
<xsl:variable name="image_class" select="ancestor::*[local-name() = 'image']/@class"/>
|
7198
|
+
<xsl:variable name="ancestor_table_cell" select="normalize-space(ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])"/>
|
7199
|
+
|
7174
7200
|
<xsl:variable name="element">
|
7175
7201
|
<xsl:choose>
|
7176
7202
|
<xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
|
7177
7203
|
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
|
7178
7204
|
</xsl:when>
|
7205
|
+
<xsl:when test="not(ancestor::*[local-name() = 'figure'])">
|
7206
|
+
<fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
|
7207
|
+
</xsl:when>
|
7179
7208
|
<xsl:otherwise>
|
7180
7209
|
<fo:block xsl:use-attribute-sets="image-style">
|
7181
7210
|
<xsl:if test="ancestor::*[local-name() = 'dt']">
|
@@ -7191,10 +7220,24 @@
|
|
7191
7220
|
<xsl:copy-of select="@*"/>
|
7192
7221
|
<!-- <fo:block xsl:use-attribute-sets="image-style"> -->
|
7193
7222
|
<fo:instream-foreign-object fox:alt-text="{$alt-text}">
|
7194
|
-
|
7195
|
-
|
7196
|
-
|
7197
|
-
|
7223
|
+
|
7224
|
+
<xsl:choose>
|
7225
|
+
<xsl:when test="$image_class = 'corrigenda-tag'">
|
7226
|
+
<xsl:attribute name="fox:alt-text">CorrigendaTag</xsl:attribute>
|
7227
|
+
<xsl:attribute name="baseline-shift">-10%</xsl:attribute>
|
7228
|
+
<xsl:if test="$ancestor_table_cell = 'true'">
|
7229
|
+
<xsl:attribute name="baseline-shift">-25%</xsl:attribute>
|
7230
|
+
</xsl:if>
|
7231
|
+
<xsl:attribute name="height">3.5mm</xsl:attribute>
|
7232
|
+
</xsl:when>
|
7233
|
+
<xsl:otherwise>
|
7234
|
+
<xsl:if test="$isGenerateTableIF = 'false'">
|
7235
|
+
<xsl:attribute name="width">100%</xsl:attribute>
|
7236
|
+
</xsl:if>
|
7237
|
+
<xsl:attribute name="content-height">100%</xsl:attribute>
|
7238
|
+
</xsl:otherwise>
|
7239
|
+
</xsl:choose>
|
7240
|
+
|
7198
7241
|
<xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
|
7199
7242
|
<xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
|
7200
7243
|
<xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
|
@@ -9365,14 +9408,16 @@
|
|
9365
9408
|
|
9366
9409
|
<xsl:template match="*[local-name() = 'annex']">
|
9367
9410
|
<fo:block break-after="page"/>
|
9368
|
-
<fo:block
|
9411
|
+
<fo:block>
|
9369
9412
|
|
9370
9413
|
<xsl:call-template name="setBlockSpanAll"/>
|
9371
9414
|
|
9372
9415
|
<xsl:call-template name="refine_annex_style"/>
|
9373
9416
|
|
9374
9417
|
</fo:block>
|
9375
|
-
<
|
9418
|
+
<fo:block id="{@id}">
|
9419
|
+
<xsl:apply-templates/>
|
9420
|
+
</fo:block>
|
9376
9421
|
</xsl:template>
|
9377
9422
|
|
9378
9423
|
<xsl:template name="refine_annex_style">
|
@@ -9392,13 +9437,19 @@
|
|
9392
9437
|
<fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9393
9438
|
</xsl:when>
|
9394
9439
|
<!-- if there isn't element with id 'from', then create 'bookmark' here -->
|
9395
|
-
<xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
|
9440
|
+
<xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
|
9441
|
+
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9442
|
+
</xsl:when>
|
9443
|
+
<xsl:when test="not(//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
|
9396
9444
|
<fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
|
9397
9445
|
</xsl:when>
|
9398
9446
|
</xsl:choose>
|
9399
9447
|
|
9400
9448
|
</xsl:template>
|
9401
9449
|
|
9450
|
+
<!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
|
9451
|
+
<xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
|
9452
|
+
|
9402
9453
|
<xsl:template match="*[local-name() = 'name']/text()">
|
9403
9454
|
<!-- 0xA0 to space replacement -->
|
9404
9455
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
|
@@ -11007,7 +11058,7 @@
|
|
11007
11058
|
|
11008
11059
|
<xsl:template name="printEdition">
|
11009
11060
|
<xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
|
11010
|
-
|
11061
|
+
|
11011
11062
|
<xsl:choose>
|
11012
11063
|
<xsl:when test="$edition_i18n != ''">
|
11013
11064
|
<!-- Example: <edition language="fr">deuxième édition</edition> -->
|
@@ -34,6 +34,93 @@ _bib)
|
|
34
34
|
%w(), doc)
|
35
35
|
end
|
36
36
|
|
37
|
+
def bibdata(docxml)
|
38
|
+
super
|
39
|
+
dochistory(docxml)
|
40
|
+
end
|
41
|
+
|
42
|
+
UPDATE_RELATIONS = <<~XPATH.freeze
|
43
|
+
//bibdata/relation[@type = 'updatedBy' or @type = 'merges' or @type = 'splits' or @type = 'hasDraft']/bibitem
|
44
|
+
XPATH
|
45
|
+
|
46
|
+
def dochistory(docxml)
|
47
|
+
updates = docxml.xpath(ns(UPDATE_RELATIONS))
|
48
|
+
updates.empty? and return
|
49
|
+
pref = preface_insert_point(docxml)
|
50
|
+
generate_dochistory(updates, pref)
|
51
|
+
end
|
52
|
+
|
53
|
+
def preface_insert_point(docxml)
|
54
|
+
docxml.at(ns("//preface")) || docxml.at(ns("//sections"))
|
55
|
+
.add_previous_sibling("<preface> </preface>").first
|
56
|
+
end
|
57
|
+
|
58
|
+
def generate_dochistory(updates, pref)
|
59
|
+
ret = updates.map { |u| generate_dochistory_row(u) }.flatten.join("\n")
|
60
|
+
pref << <<~XML
|
61
|
+
<clause id='_#{UUIDTools::UUID.random_create}'>
|
62
|
+
<title>#{@i18n.dochistory}</title>
|
63
|
+
<table unnumbered="true"><thead>
|
64
|
+
<tr><th>Version Number</th><th>Date</th><th>Author</th><th>Description</th></tr>
|
65
|
+
</thead><tbody>
|
66
|
+
#{ret}
|
67
|
+
</tbody></table></clause>
|
68
|
+
XML
|
69
|
+
end
|
70
|
+
|
71
|
+
def generate_dochistory_row(item)
|
72
|
+
e = item.at(ns("./edition"))&.text
|
73
|
+
date = dochistory_date(item)
|
74
|
+
c = dochistory_contributors(item)
|
75
|
+
desc = dochistory_description(item)
|
76
|
+
"<tr><td>#{e}</td><td>#{date}</td><td>#{c}</td><td>#{desc}</td></tr>"
|
77
|
+
end
|
78
|
+
|
79
|
+
def dochistory_date(item)
|
80
|
+
d = item.at(ns("./date[@type = 'updated']")) ||
|
81
|
+
item.at(ns("./date[@type = 'published']")) ||
|
82
|
+
item.at(ns("./date[@type = 'issued']")) or return ""
|
83
|
+
ddMMMyyyy(d.text.strip)
|
84
|
+
end
|
85
|
+
|
86
|
+
def dochistory_contributors(item)
|
87
|
+
item.xpath(ns("./contributor")).map do |c|
|
88
|
+
dochistory_contributor(c)
|
89
|
+
end.join(", ")
|
90
|
+
end
|
91
|
+
|
92
|
+
def dochistory_contributor(contrib)
|
93
|
+
ret = contrib.at("./organization/abbreviation") ||
|
94
|
+
contrib.at("./organization/subdivision") ||
|
95
|
+
contrib.at("./organization/name") ||
|
96
|
+
contrib.at("./person/name/abbreviation") ||
|
97
|
+
contrib.at("./person/name/completename")
|
98
|
+
ret and return ret.text
|
99
|
+
format_personalname(contrib)
|
100
|
+
end
|
101
|
+
|
102
|
+
def format_personalname(contrib)
|
103
|
+
Relaton::Render::General.new(template: { book: "{{ creatornames }}" })
|
104
|
+
.render("<bibitem type='book'>#{contrib.to_xml}</bibitem>")
|
105
|
+
end
|
106
|
+
|
107
|
+
def dochistory_description(item)
|
108
|
+
d = item.at(ns("./amend/description")) or return ""
|
109
|
+
d.children.to_xml
|
110
|
+
end
|
111
|
+
|
112
|
+
def ddMMMyyyy(isodate)
|
113
|
+
isodate.nil? and return nil
|
114
|
+
arr = isodate.split("-")
|
115
|
+
if arr.size == 1 && (/^\d+$/.match isodate)
|
116
|
+
Date.new(*arr.map(&:to_i)).strftime("%Y")
|
117
|
+
elsif arr.size == 2
|
118
|
+
Date.new(*arr.map(&:to_i)).strftime("%B %Y")
|
119
|
+
else
|
120
|
+
Date.parse(isodate).strftime("%d %B %Y")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
37
124
|
include Init
|
38
125
|
end
|
39
126
|
end
|
@@ -95,8 +95,89 @@
|
|
95
95
|
<ref name="pagebreak"/>
|
96
96
|
<ref name="hr"/>
|
97
97
|
<ref name="bookmark"/>
|
98
|
+
<ref name="amend"/>
|
98
99
|
</choice>
|
99
100
|
</define>
|
101
|
+
<define name="amend">
|
102
|
+
<element name="amend">
|
103
|
+
<ref name="AmendType"/>
|
104
|
+
</element>
|
105
|
+
</define>
|
106
|
+
<define name="AmendType">
|
107
|
+
<optional>
|
108
|
+
<attribute name="id">
|
109
|
+
<data type="ID"/>
|
110
|
+
</attribute>
|
111
|
+
</optional>
|
112
|
+
<attribute name="change">
|
113
|
+
<choice>
|
114
|
+
<value>add</value>
|
115
|
+
<value>modify</value>
|
116
|
+
<value>delete</value>
|
117
|
+
<value>replace</value>
|
118
|
+
</choice>
|
119
|
+
</attribute>
|
120
|
+
<optional>
|
121
|
+
<attribute name="path"/>
|
122
|
+
</optional>
|
123
|
+
<optional>
|
124
|
+
<attribute name="path_end"/>
|
125
|
+
</optional>
|
126
|
+
<optional>
|
127
|
+
<attribute name="title"/>
|
128
|
+
</optional>
|
129
|
+
<optional>
|
130
|
+
<element name="location">
|
131
|
+
<zeroOrMore>
|
132
|
+
<choice>
|
133
|
+
<ref name="locality"/>
|
134
|
+
<ref name="localityStack"/>
|
135
|
+
</choice>
|
136
|
+
</zeroOrMore>
|
137
|
+
</element>
|
138
|
+
</optional>
|
139
|
+
<optional>
|
140
|
+
<element name="description">
|
141
|
+
<zeroOrMore>
|
142
|
+
<ref name="BasicBlock"/>
|
143
|
+
</zeroOrMore>
|
144
|
+
</element>
|
145
|
+
</optional>
|
146
|
+
<optional>
|
147
|
+
<element name="newcontent">
|
148
|
+
<optional>
|
149
|
+
<attribute name="id">
|
150
|
+
<data type="ID"/>
|
151
|
+
</attribute>
|
152
|
+
</optional>
|
153
|
+
<zeroOrMore>
|
154
|
+
<ref name="BasicBlock"/>
|
155
|
+
</zeroOrMore>
|
156
|
+
</element>
|
157
|
+
</optional>
|
158
|
+
<zeroOrMore>
|
159
|
+
<ref name="classification"/>
|
160
|
+
</zeroOrMore>
|
161
|
+
<zeroOrMore>
|
162
|
+
<ref name="contributor"/>
|
163
|
+
</zeroOrMore>
|
164
|
+
</define>
|
165
|
+
<define name="classification">
|
166
|
+
<element name="classification">
|
167
|
+
<ref name="classification_tag"/>
|
168
|
+
<ref name="classification_value"/>
|
169
|
+
</element>
|
170
|
+
</define>
|
171
|
+
<define name="classification_tag">
|
172
|
+
<element name="tag">
|
173
|
+
<text/>
|
174
|
+
</element>
|
175
|
+
</define>
|
176
|
+
<define name="classification_value">
|
177
|
+
<element name="value">
|
178
|
+
<text/>
|
179
|
+
</element>
|
180
|
+
</define>
|
100
181
|
<define name="paragraph">
|
101
182
|
<element name="p">
|
102
183
|
<ref name="ParagraphType"/>
|
@@ -163,6 +244,9 @@
|
|
163
244
|
<data type="ID"/>
|
164
245
|
</attribute>
|
165
246
|
<attribute name="reviewer"/>
|
247
|
+
<optional>
|
248
|
+
<attribute name="type"/>
|
249
|
+
</optional>
|
166
250
|
<optional>
|
167
251
|
<attribute name="date">
|
168
252
|
<data type="dateTime"/>
|
@@ -939,18 +1023,12 @@
|
|
939
1023
|
</optional>
|
940
1024
|
<optional>
|
941
1025
|
<attribute name="width">
|
942
|
-
<
|
943
|
-
<data type="int"/>
|
944
|
-
<value>auto</value>
|
945
|
-
</choice>
|
1026
|
+
<ref name="ImageSize"/>
|
946
1027
|
</attribute>
|
947
1028
|
</optional>
|
948
1029
|
<optional>
|
949
1030
|
<attribute name="height">
|
950
|
-
<
|
951
|
-
<data type="int"/>
|
952
|
-
<value>auto</value>
|
953
|
-
</choice>
|
1031
|
+
<ref name="ImageSize"/>
|
954
1032
|
</attribute>
|
955
1033
|
</optional>
|
956
1034
|
<optional>
|
@@ -965,6 +1043,14 @@
|
|
965
1043
|
</attribute>
|
966
1044
|
</optional>
|
967
1045
|
</define>
|
1046
|
+
<define name="ImageSize">
|
1047
|
+
<choice>
|
1048
|
+
<data type="string">
|
1049
|
+
<param name="pattern">\d+([.]\d+)?(%?)</param>
|
1050
|
+
</data>
|
1051
|
+
<value>auto</value>
|
1052
|
+
</choice>
|
1053
|
+
</define>
|
968
1054
|
<define name="video">
|
969
1055
|
<element name="video">
|
970
1056
|
<attribute name="id">
|
@@ -9,11 +9,42 @@
|
|
9
9
|
-->
|
10
10
|
<include href="biblio.rng">
|
11
11
|
<define name="BibData">
|
12
|
-
<ref name="
|
12
|
+
<ref name="StandardBibliographicItem"/>
|
13
13
|
<optional>
|
14
14
|
<ref name="ext"/>
|
15
15
|
</optional>
|
16
16
|
</define>
|
17
|
+
<define name="docrelation">
|
18
|
+
<element name="relation">
|
19
|
+
<attribute name="type">
|
20
|
+
<ref name="DocRelationType"/>
|
21
|
+
</attribute>
|
22
|
+
<optional>
|
23
|
+
<element name="description">
|
24
|
+
<ref name="FormattedString"/>
|
25
|
+
</element>
|
26
|
+
</optional>
|
27
|
+
<element name="bibitem">
|
28
|
+
<ref name="StandardReducedBibliographicItem"/>
|
29
|
+
</element>
|
30
|
+
<choice>
|
31
|
+
<zeroOrMore>
|
32
|
+
<ref name="locality"/>
|
33
|
+
</zeroOrMore>
|
34
|
+
<zeroOrMore>
|
35
|
+
<ref name="localityStack"/>
|
36
|
+
</zeroOrMore>
|
37
|
+
</choice>
|
38
|
+
<choice>
|
39
|
+
<zeroOrMore>
|
40
|
+
<ref name="sourceLocality"/>
|
41
|
+
</zeroOrMore>
|
42
|
+
<zeroOrMore>
|
43
|
+
<ref name="sourceLocalityStack"/>
|
44
|
+
</zeroOrMore>
|
45
|
+
</choice>
|
46
|
+
</element>
|
47
|
+
</define>
|
17
48
|
</include>
|
18
49
|
<define name="ext">
|
19
50
|
<element name="ext">
|
@@ -161,4 +192,16 @@
|
|
161
192
|
</optional>
|
162
193
|
</element>
|
163
194
|
</define>
|
195
|
+
<define name="StandardBibliographicItem">
|
196
|
+
<ref name="BibliographicItem"/>
|
197
|
+
<zeroOrMore>
|
198
|
+
<ref name="amend"/>
|
199
|
+
</zeroOrMore>
|
200
|
+
</define>
|
201
|
+
<define name="StandardReducedBibliographicItem">
|
202
|
+
<ref name="ReducedBibliographicItem"/>
|
203
|
+
<zeroOrMore>
|
204
|
+
<ref name="amend"/>
|
205
|
+
</zeroOrMore>
|
206
|
+
</define>
|
164
207
|
</grammar>
|
@@ -241,6 +241,9 @@
|
|
241
241
|
</element>
|
242
242
|
</define>
|
243
243
|
<define name="FullNameType">
|
244
|
+
<optional>
|
245
|
+
<ref name="name_abbreviation"/>
|
246
|
+
</optional>
|
244
247
|
<choice>
|
245
248
|
<group>
|
246
249
|
<zeroOrMore>
|
@@ -266,6 +269,11 @@
|
|
266
269
|
<ref name="variantname"/>
|
267
270
|
</zeroOrMore>
|
268
271
|
</define>
|
272
|
+
<define name="name_abbreviation">
|
273
|
+
<element name="abbreviation">
|
274
|
+
<ref name="LocalizedString"/>
|
275
|
+
</element>
|
276
|
+
</define>
|
269
277
|
<define name="prefix">
|
270
278
|
<element name="prefix">
|
271
279
|
<ref name="LocalizedString"/>
|
@@ -870,6 +878,9 @@
|
|
870
878
|
<optional>
|
871
879
|
<ref name="validity"/>
|
872
880
|
</optional>
|
881
|
+
<optional>
|
882
|
+
<ref name="depiction"/>
|
883
|
+
</optional>
|
873
884
|
</define>
|
874
885
|
<define name="btitle">
|
875
886
|
<element name="title">
|
@@ -17,10 +17,19 @@
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
18
18
|
of this.
|
19
19
|
-->
|
20
|
-
<!-- VERSION v1.
|
20
|
+
<!-- VERSION v1.3.0 -->
|
21
21
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
24
|
+
<define name="amend">
|
25
|
+
<element name="amend">
|
26
|
+
<ref name="BlockAttributes"/>
|
27
|
+
<ref name="AmendType"/>
|
28
|
+
<zeroOrMore>
|
29
|
+
<ref name="autonumber"/>
|
30
|
+
</zeroOrMore>
|
31
|
+
</element>
|
32
|
+
</define>
|
24
33
|
<define name="admonition">
|
25
34
|
<element name="admonition">
|
26
35
|
<attribute name="type">
|
@@ -137,6 +146,9 @@
|
|
137
146
|
<data type="boolean"/>
|
138
147
|
</attribute>
|
139
148
|
</optional>
|
149
|
+
<optional>
|
150
|
+
<attribute name="style"/>
|
151
|
+
</optional>
|
140
152
|
<oneOrMore>
|
141
153
|
<ref name="PureTextElement"/>
|
142
154
|
</oneOrMore>
|
@@ -2319,69 +2331,6 @@
|
|
2319
2331
|
<ref name="CitationType"/>
|
2320
2332
|
</element>
|
2321
2333
|
</define>
|
2322
|
-
<define name="amend">
|
2323
|
-
<element name="amend">
|
2324
|
-
<optional>
|
2325
|
-
<attribute name="id">
|
2326
|
-
<data type="ID"/>
|
2327
|
-
</attribute>
|
2328
|
-
</optional>
|
2329
|
-
<attribute name="change">
|
2330
|
-
<choice>
|
2331
|
-
<value>add</value>
|
2332
|
-
<value>modify</value>
|
2333
|
-
<value>delete</value>
|
2334
|
-
<value>replace</value>
|
2335
|
-
</choice>
|
2336
|
-
</attribute>
|
2337
|
-
<optional>
|
2338
|
-
<attribute name="path"/>
|
2339
|
-
</optional>
|
2340
|
-
<optional>
|
2341
|
-
<attribute name="path_end"/>
|
2342
|
-
</optional>
|
2343
|
-
<optional>
|
2344
|
-
<attribute name="title"/>
|
2345
|
-
</optional>
|
2346
|
-
<ref name="BlockAttributes"/>
|
2347
|
-
<optional>
|
2348
|
-
<element name="location">
|
2349
|
-
<zeroOrMore>
|
2350
|
-
<ref name="locality"/>
|
2351
|
-
</zeroOrMore>
|
2352
|
-
</element>
|
2353
|
-
</optional>
|
2354
|
-
<zeroOrMore>
|
2355
|
-
<ref name="autonumber"/>
|
2356
|
-
</zeroOrMore>
|
2357
|
-
<optional>
|
2358
|
-
<element name="description">
|
2359
|
-
<zeroOrMore>
|
2360
|
-
<ref name="BasicBlock"/>
|
2361
|
-
</zeroOrMore>
|
2362
|
-
</element>
|
2363
|
-
</optional>
|
2364
|
-
<optional>
|
2365
|
-
<element name="newcontent">
|
2366
|
-
<optional>
|
2367
|
-
<attribute name="id">
|
2368
|
-
<data type="ID"/>
|
2369
|
-
</attribute>
|
2370
|
-
</optional>
|
2371
|
-
<zeroOrMore>
|
2372
|
-
<ref name="BasicBlock"/>
|
2373
|
-
</zeroOrMore>
|
2374
|
-
</element>
|
2375
|
-
</optional>
|
2376
|
-
<optional>
|
2377
|
-
<element name="description">
|
2378
|
-
<zeroOrMore>
|
2379
|
-
<ref name="BasicBlock"/>
|
2380
|
-
</zeroOrMore>
|
2381
|
-
</element>
|
2382
|
-
</optional>
|
2383
|
-
</element>
|
2384
|
-
</define>
|
2385
2334
|
<define name="autonumber">
|
2386
2335
|
<element name="autonumber">
|
2387
2336
|
<attribute name="type">
|
data/lib/metanorma/iho/reqt.rng
CHANGED
@@ -207,20 +207,4 @@
|
|
207
207
|
<value>permission</value>
|
208
208
|
</choice>
|
209
209
|
</define>
|
210
|
-
<define name="classification">
|
211
|
-
<element name="classification">
|
212
|
-
<ref name="classification_tag"/>
|
213
|
-
<ref name="classification_value"/>
|
214
|
-
</element>
|
215
|
-
</define>
|
216
|
-
<define name="classification_tag">
|
217
|
-
<element name="tag">
|
218
|
-
<text/>
|
219
|
-
</element>
|
220
|
-
</define>
|
221
|
-
<define name="classification_value">
|
222
|
-
<element name="value">
|
223
|
-
<text/>
|
224
|
-
</element>
|
225
|
-
</define>
|
226
210
|
</grammar>
|
data/metanorma-iho.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
29
29
|
|
30
|
-
spec.add_dependency "metanorma-generic", "~> 2.
|
30
|
+
spec.add_dependency "metanorma-generic", "~> 2.6.0"
|
31
31
|
|
32
32
|
spec.add_development_dependency "debug"
|
33
33
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iho
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-generic
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: debug
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|