metanorma-ieee 1.1.10 → 1.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3a6c74c844149f002a1ebd200b398e2d5ab166858d2a8131fea9f348f5f2d58
4
- data.tar.gz: dd9a99edeaa959c3d199eb6906baedd93af2f3e189ee9dd18fb6ea033fc26a97
3
+ metadata.gz: daaebf8c438f244ad1a0cc4c804f1aac05fcdf3252bb9b2847f0ab056ed5ffc0
4
+ data.tar.gz: 4cf01847b8a56f6e9a520cd7509cc56cec8077d891bef18beed30262688e87bf
5
5
  SHA512:
6
- metadata.gz: bd5300a786ae9e99557b8bdb96cd60f79a23fbcd713a512229eef84e38c33e3196d840e9ac9d4c5ba44070d3ab4aa4dee3910d49cce5b372dec7b4196f97a713
7
- data.tar.gz: f0d1fafb3146544b1423ec9f4e7d3b5daebe5d6584d320d06040c40d2b645902e49af7a7a427e53e2e8dd3632bf099fd930c91d1f5bc4489fdb997872be40bb7
6
+ metadata.gz: 8af52bc41555e8ef7ff4f296dd65522cab8896226b9cbdad0b443f49a4a428343c0c205ff733845f8a4e93f707f543e152897b5895456ab2b72494e3c0a2cddc
7
+ data.tar.gz: f2b0d65f7e1e5e853363ac60dd7608b90d04f97368360dd60701e60d115f09d7973bd4791edd76b990f13d5628224c78e0883185743187efb532e1e1a68dad00
@@ -5622,7 +5622,9 @@
5622
5622
  </xsl:template> <!-- license-statement/p -->
5623
5623
 
5624
5624
  <xsl:template match="*[local-name()='legal-statement']">
5625
+ <xsl:param name="isLegacy">false</xsl:param>
5625
5626
  <fo:block xsl:use-attribute-sets="legal-statement-style">
5627
+
5626
5628
  <xsl:apply-templates/>
5627
5629
  </fo:block>
5628
5630
  </xsl:template> <!-- legal-statement -->
@@ -7915,13 +7917,14 @@
7915
7917
  <!-- ================= -->
7916
7918
  <!-- Added,deleted text -->
7917
7919
  <!-- ================= -->
7918
- <xsl:template match="*[local-name()='add']" name="tag_add">
7920
+ <xsl:template match="*[local-name()='add'] | *[local-name() = 'change-open-tag'] | *[local-name() = 'change-close-tag']" name="tag_add">
7919
7921
  <xsl:param name="skip">true</xsl:param>
7920
7922
  <xsl:param name="block">false</xsl:param>
7921
7923
  <xsl:param name="type"/>
7922
7924
  <xsl:param name="text-align"/>
7923
7925
  <xsl:choose>
7924
- <xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start -->
7926
+ <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
7927
+ <change-open-tag>A<sub>1</sub></change-open-tag>, <change-close-tag>A<sub>1</sub></change-close-tag> -->
7925
7928
  <xsl:choose>
7926
7929
  <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>
7927
7930
  <xsl:otherwise>
@@ -7929,12 +7932,32 @@
7929
7932
  <xsl:call-template name="insertTag">
7930
7933
  <xsl:with-param name="type">
7931
7934
  <xsl:choose>
7935
+ <xsl:when test="local-name() = 'change-open-tag'">start</xsl:when>
7936
+ <xsl:when test="local-name() = 'change-close-tag'">end</xsl:when>
7932
7937
  <xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
7933
7938
  <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
7934
7939
  </xsl:choose>
7935
7940
  </xsl:with-param>
7936
- <xsl:with-param name="kind" select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
7937
- <xsl:with-param name="value" select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
7941
+ <xsl:with-param name="kind">
7942
+ <xsl:choose>
7943
+ <xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
7944
+ <xsl:value-of select="text()"/>
7945
+ </xsl:when>
7946
+ <xsl:otherwise>
7947
+ <xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
7948
+ </xsl:otherwise>
7949
+ </xsl:choose>
7950
+ </xsl:with-param>
7951
+ <xsl:with-param name="value">
7952
+ <xsl:choose>
7953
+ <xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
7954
+ <xsl:value-of select="*[local-name() = 'sub']"/>
7955
+ </xsl:when>
7956
+ <xsl:otherwise>
7957
+ <xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
7958
+ </xsl:otherwise>
7959
+ </xsl:choose>
7960
+ </xsl:with-param>
7938
7961
  </xsl:call-template>
7939
7962
  </xsl:variable>
7940
7963
  <xsl:choose>
@@ -10144,11 +10167,17 @@
10144
10167
  </xsl:when>
10145
10168
  <xsl:otherwise>
10146
10169
 
10170
+ <xsl:variable name="image_class" select="ancestor::*[local-name() = 'image']/@class"/>
10171
+ <xsl:variable name="ancestor_table_cell" select="normalize-space(ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])"/>
10172
+
10147
10173
  <xsl:variable name="element">
10148
10174
  <xsl:choose>
10149
10175
  <xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
10150
10176
  <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
10151
10177
  </xsl:when>
10178
+ <xsl:when test="not(ancestor::*[local-name() = 'figure'])">
10179
+ <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
10180
+ </xsl:when>
10152
10181
  <xsl:otherwise>
10153
10182
  <fo:block xsl:use-attribute-sets="image-style">
10154
10183
  <xsl:if test="ancestor::*[local-name() = 'dt']">
@@ -10164,10 +10193,24 @@
10164
10193
  <xsl:copy-of select="@*"/>
10165
10194
  <!-- <fo:block xsl:use-attribute-sets="image-style"> -->
10166
10195
  <fo:instream-foreign-object fox:alt-text="{$alt-text}">
10167
- <xsl:if test="$isGenerateTableIF = 'false'">
10168
- <xsl:attribute name="width">100%</xsl:attribute>
10169
- </xsl:if>
10170
- <xsl:attribute name="content-height">100%</xsl:attribute>
10196
+
10197
+ <xsl:choose>
10198
+ <xsl:when test="$image_class = 'corrigenda-tag'">
10199
+ <xsl:attribute name="fox:alt-text">CorrigendaTag</xsl:attribute>
10200
+ <xsl:attribute name="baseline-shift">-10%</xsl:attribute>
10201
+ <xsl:if test="$ancestor_table_cell = 'true'">
10202
+ <xsl:attribute name="baseline-shift">-25%</xsl:attribute>
10203
+ </xsl:if>
10204
+ <xsl:attribute name="height">3.5mm</xsl:attribute>
10205
+ </xsl:when>
10206
+ <xsl:otherwise>
10207
+ <xsl:if test="$isGenerateTableIF = 'false'">
10208
+ <xsl:attribute name="width">100%</xsl:attribute>
10209
+ </xsl:if>
10210
+ <xsl:attribute name="content-height">100%</xsl:attribute>
10211
+ </xsl:otherwise>
10212
+ </xsl:choose>
10213
+
10171
10214
  <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
10172
10215
  <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
10173
10216
  <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
@@ -12335,14 +12378,16 @@
12335
12378
 
12336
12379
  <xsl:template match="*[local-name() = 'annex']">
12337
12380
  <fo:block break-after="page"/>
12338
- <fo:block id="{@id}">
12381
+ <fo:block>
12339
12382
 
12340
12383
  <xsl:call-template name="setBlockSpanAll"/>
12341
12384
 
12342
12385
  <xsl:call-template name="refine_annex_style"/>
12343
12386
 
12344
12387
  </fo:block>
12345
- <xsl:apply-templates/>
12388
+ <fo:block id="{@id}">
12389
+ <xsl:apply-templates/>
12390
+ </fo:block>
12346
12391
  </xsl:template>
12347
12392
 
12348
12393
  <xsl:template name="refine_annex_style">
@@ -12362,13 +12407,19 @@
12362
12407
  <fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12363
12408
  </xsl:when>
12364
12409
  <!-- if there isn't element with id 'from', then create 'bookmark' here -->
12365
- <xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
12410
+ <xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
12411
+ <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12412
+ </xsl:when>
12413
+ <xsl:when test="not(//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
12366
12414
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12367
12415
  </xsl:when>
12368
12416
  </xsl:choose>
12369
12417
 
12370
12418
  </xsl:template>
12371
12419
 
12420
+ <!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
12421
+ <xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
12422
+
12372
12423
  <xsl:template match="*[local-name() = 'name']/text()">
12373
12424
  <!-- 0xA0 to space replacement -->
12374
12425
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
@@ -14135,7 +14186,7 @@
14135
14186
 
14136
14187
  <xsl:template name="printEdition">
14137
14188
  <xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
14138
- <xsl:text> </xsl:text>
14189
+
14139
14190
  <xsl:choose>
14140
14191
  <xsl:when test="$edition_i18n != ''">
14141
14192
  <!-- Example: <edition language="fr">deuxième édition</edition> -->
@@ -5622,7 +5622,9 @@
5622
5622
  </xsl:template> <!-- license-statement/p -->
5623
5623
 
5624
5624
  <xsl:template match="*[local-name()='legal-statement']">
5625
+ <xsl:param name="isLegacy">false</xsl:param>
5625
5626
  <fo:block xsl:use-attribute-sets="legal-statement-style">
5627
+
5626
5628
  <xsl:apply-templates/>
5627
5629
  </fo:block>
5628
5630
  </xsl:template> <!-- legal-statement -->
@@ -7915,13 +7917,14 @@
7915
7917
  <!-- ================= -->
7916
7918
  <!-- Added,deleted text -->
7917
7919
  <!-- ================= -->
7918
- <xsl:template match="*[local-name()='add']" name="tag_add">
7920
+ <xsl:template match="*[local-name()='add'] | *[local-name() = 'change-open-tag'] | *[local-name() = 'change-close-tag']" name="tag_add">
7919
7921
  <xsl:param name="skip">true</xsl:param>
7920
7922
  <xsl:param name="block">false</xsl:param>
7921
7923
  <xsl:param name="type"/>
7922
7924
  <xsl:param name="text-align"/>
7923
7925
  <xsl:choose>
7924
- <xsl:when test="starts-with(., $ace_tag)"> <!-- examples: ace-tag_A1_start, ace-tag_A2_end, C1_start, AC_start -->
7926
+ <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
7927
+ <change-open-tag>A<sub>1</sub></change-open-tag>, <change-close-tag>A<sub>1</sub></change-close-tag> -->
7925
7928
  <xsl:choose>
7926
7929
  <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>
7927
7930
  <xsl:otherwise>
@@ -7929,12 +7932,32 @@
7929
7932
  <xsl:call-template name="insertTag">
7930
7933
  <xsl:with-param name="type">
7931
7934
  <xsl:choose>
7935
+ <xsl:when test="local-name() = 'change-open-tag'">start</xsl:when>
7936
+ <xsl:when test="local-name() = 'change-close-tag'">end</xsl:when>
7932
7937
  <xsl:when test="$type = ''"><xsl:value-of select="substring-after(substring-after(., $ace_tag), '_')"/> <!-- start or end --></xsl:when>
7933
7938
  <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
7934
7939
  </xsl:choose>
7935
7940
  </xsl:with-param>
7936
- <xsl:with-param name="kind" select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
7937
- <xsl:with-param name="value" select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
7941
+ <xsl:with-param name="kind">
7942
+ <xsl:choose>
7943
+ <xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
7944
+ <xsl:value-of select="text()"/>
7945
+ </xsl:when>
7946
+ <xsl:otherwise>
7947
+ <xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 1, 1)"/> <!-- A or C -->
7948
+ </xsl:otherwise>
7949
+ </xsl:choose>
7950
+ </xsl:with-param>
7951
+ <xsl:with-param name="value">
7952
+ <xsl:choose>
7953
+ <xsl:when test="local-name() = 'change-open-tag' or local-name() = 'change-close-tag'">
7954
+ <xsl:value-of select="*[local-name() = 'sub']"/>
7955
+ </xsl:when>
7956
+ <xsl:otherwise>
7957
+ <xsl:value-of select="substring(substring-before(substring-after(., $ace_tag), '_'), 2)"/> <!-- 1, 2, C -->
7958
+ </xsl:otherwise>
7959
+ </xsl:choose>
7960
+ </xsl:with-param>
7938
7961
  </xsl:call-template>
7939
7962
  </xsl:variable>
7940
7963
  <xsl:choose>
@@ -10144,11 +10167,17 @@
10144
10167
  </xsl:when>
10145
10168
  <xsl:otherwise>
10146
10169
 
10170
+ <xsl:variable name="image_class" select="ancestor::*[local-name() = 'image']/@class"/>
10171
+ <xsl:variable name="ancestor_table_cell" select="normalize-space(ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])"/>
10172
+
10147
10173
  <xsl:variable name="element">
10148
10174
  <xsl:choose>
10149
10175
  <xsl:when test="ancestor::*[local-name() = 'tr'] and $isGenerateTableIF = 'true'">
10150
10176
  <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
10151
10177
  </xsl:when>
10178
+ <xsl:when test="not(ancestor::*[local-name() = 'figure'])">
10179
+ <fo:inline xsl:use-attribute-sets="image-style" text-align="left"/>
10180
+ </xsl:when>
10152
10181
  <xsl:otherwise>
10153
10182
  <fo:block xsl:use-attribute-sets="image-style">
10154
10183
  <xsl:if test="ancestor::*[local-name() = 'dt']">
@@ -10164,10 +10193,24 @@
10164
10193
  <xsl:copy-of select="@*"/>
10165
10194
  <!-- <fo:block xsl:use-attribute-sets="image-style"> -->
10166
10195
  <fo:instream-foreign-object fox:alt-text="{$alt-text}">
10167
- <xsl:if test="$isGenerateTableIF = 'false'">
10168
- <xsl:attribute name="width">100%</xsl:attribute>
10169
- </xsl:if>
10170
- <xsl:attribute name="content-height">100%</xsl:attribute>
10196
+
10197
+ <xsl:choose>
10198
+ <xsl:when test="$image_class = 'corrigenda-tag'">
10199
+ <xsl:attribute name="fox:alt-text">CorrigendaTag</xsl:attribute>
10200
+ <xsl:attribute name="baseline-shift">-10%</xsl:attribute>
10201
+ <xsl:if test="$ancestor_table_cell = 'true'">
10202
+ <xsl:attribute name="baseline-shift">-25%</xsl:attribute>
10203
+ </xsl:if>
10204
+ <xsl:attribute name="height">3.5mm</xsl:attribute>
10205
+ </xsl:when>
10206
+ <xsl:otherwise>
10207
+ <xsl:if test="$isGenerateTableIF = 'false'">
10208
+ <xsl:attribute name="width">100%</xsl:attribute>
10209
+ </xsl:if>
10210
+ <xsl:attribute name="content-height">100%</xsl:attribute>
10211
+ </xsl:otherwise>
10212
+ </xsl:choose>
10213
+
10171
10214
  <xsl:attribute name="content-width">scale-down-to-fit</xsl:attribute>
10172
10215
  <xsl:variable name="svg_width" select="xalan:nodeset($svg_content)/*/@width"/>
10173
10216
  <xsl:variable name="svg_height" select="xalan:nodeset($svg_content)/*/@height"/>
@@ -12335,14 +12378,16 @@
12335
12378
 
12336
12379
  <xsl:template match="*[local-name() = 'annex']">
12337
12380
  <fo:block break-after="page"/>
12338
- <fo:block id="{@id}">
12381
+ <fo:block>
12339
12382
 
12340
12383
  <xsl:call-template name="setBlockSpanAll"/>
12341
12384
 
12342
12385
  <xsl:call-template name="refine_annex_style"/>
12343
12386
 
12344
12387
  </fo:block>
12345
- <xsl:apply-templates/>
12388
+ <fo:block id="{@id}">
12389
+ <xsl:apply-templates/>
12390
+ </fo:block>
12346
12391
  </xsl:template>
12347
12392
 
12348
12393
  <xsl:template name="refine_annex_style">
@@ -12362,13 +12407,19 @@
12362
12407
  <fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12363
12408
  </xsl:when>
12364
12409
  <!-- if there isn't element with id 'from', then create 'bookmark' here -->
12365
- <xsl:when test="not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
12410
+ <xsl:when test="ancestor::*[contains(local-name(), '-standard')] and not(ancestor::*[contains(local-name(), '-standard')]//*[@id = $id_from])">
12411
+ <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12412
+ </xsl:when>
12413
+ <xsl:when test="not(//*[@id = $id_from]) and not(preceding-sibling::*[@id = $id_from])">
12366
12414
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12367
12415
  </xsl:when>
12368
12416
  </xsl:choose>
12369
12417
 
12370
12418
  </xsl:template>
12371
12419
 
12420
+ <!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
12421
+ <xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
12422
+
12372
12423
  <xsl:template match="*[local-name() = 'name']/text()">
12373
12424
  <!-- 0xA0 to space replacement -->
12374
12425
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
@@ -14135,7 +14186,7 @@
14135
14186
 
14136
14187
  <xsl:template name="printEdition">
14137
14188
  <xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
14138
- <xsl:text> </xsl:text>
14189
+
14139
14190
  <xsl:choose>
14140
14191
  <xsl:when test="$edition_i18n != ''">
14141
14192
  <!-- Example: <edition language="fr">deuxième édition</edition> -->
@@ -143,8 +143,7 @@ module IsoDoc
143
143
  end
144
144
 
145
145
  def ddMMMyyyy(isodate)
146
- return nil if isodate.nil?
147
-
146
+ isodate.nil? and return nil
148
147
  arr = isodate.split("-")
149
148
  if arr.size == 1 && (/^\d+$/.match isodate)
150
149
  Date.new(*arr.map(&:to_i)).strftime("%Y")
@@ -17,8 +17,7 @@ module IsoDoc
17
17
  end
18
18
 
19
19
  def ddMMMyyyy(isodate)
20
- return nil if isodate.nil?
21
-
20
+ isodate.nil? and return nil
22
21
  arr = isodate.split("-")
23
22
  if arr.size == 1 && (/^\d+$/.match isodate)
24
23
  Date.new(*arr.map(&:to_i)).strftime("%Y")
@@ -62,11 +61,17 @@ module IsoDoc
62
61
  key = ""
63
62
  map = list.xpath(ns(".//dt | .//dd")).each_with_object({}) do |dtd, m|
64
63
  (dtd.name == "dt" and key = dtd.text) or
65
- m[key] = @c.encode(dtd.text.strip, :hexadecimal)
64
+ m[key] = text_from_paras(dtd)
65
+ .gsub(/\*/, "<span class='cite_fn'>*</span>")
66
66
  end
67
67
  list.replace(participant_para(map, idx))
68
68
  end
69
69
 
70
+ def text_from_paras(node)
71
+ r = node.at(ns("./p")) and node = r
72
+ node.children.to_xml.strip
73
+ end
74
+
70
75
  def participant_para(map, idx)
71
76
  name = participant_name(map)
72
77
  if map["role"]&.casecmp("member")&.zero?
@@ -89,7 +94,7 @@ module IsoDoc
89
94
  name = "<strong>#{name}</strong>" if idx.zero?
90
95
  br = map["role"].size > 30 ? "<br/>" : ""
91
96
  "<p type='officeholder' align='center'>#{name}, #{br}" \
92
- "<em>#{map['role']}</em></p>"
97
+ "<em><span class='au_role'>#{map['role']}</span></em></p>"
93
98
  end
94
99
 
95
100
  def participant_name(map)
@@ -50,10 +50,10 @@ module IsoDoc
50
50
 
51
51
  def bibrender_relaton(xml, renderings)
52
52
  f = renderings[xml["id"]][:formattedref]
53
- f &&= "<formattedref>#{f}</formattedref>"
53
+ fn = availability_note(xml)
54
+ f &&= "<formattedref>#{f}#{fn}</formattedref>"
54
55
  keep = "./docidentifier | ./uri | ./note | ./title | ./biblio-tag"
55
- xml.children =
56
- "#{f}#{xml.xpath(ns(keep)).to_xml}"
56
+ xml.children = "#{f}#{xml.xpath(ns(keep)).to_xml}"
57
57
  @author[xml["id"]] = renderings[xml["id"]][:author]
58
58
  end
59
59
 
@@ -82,6 +82,12 @@ module IsoDoc
82
82
  def expand_citeas(text)
83
83
  std_docid_semantic(super)
84
84
  end
85
+
86
+ def availability_note(bib)
87
+ note = bib.at(ns("./note[@type = 'Availability']")) or return ""
88
+ id = UUIDTools::UUID.random_create.to_s
89
+ "<fn reference='#{id}'><p>#{note.content}</p></fn>"
90
+ end
85
91
  end
86
92
  end
87
93
  end
@@ -34,8 +34,7 @@ module IsoDoc
34
34
 
35
35
  def unwrap_definition(docxml)
36
36
  docxml.xpath(ns(".//definition/verbal-definition")).each do |v|
37
- next unless v.elements.all? { |e| %w(termsource p).include?(e.name) }
38
-
37
+ v.elements.all? { |e| %w(termsource p).include?(e.name) } or next
39
38
  p = v.xpath(ns("./p"))
40
39
  v.children =
41
40
  "<p>#{p.map(&:children).map { |x| to_xml(x) }.join("\n")}</p>" \
@@ -73,7 +72,7 @@ module IsoDoc
73
72
  "./preferred/graphical-symbol/figure/@id | " \
74
73
  "./preferred"))
75
74
  f = term.at(ns("./field-of-application")) || term.at(ns("./domain"))
76
- HTMLEntities.new.decode("#{sort_terms_key1(d)} :: #{sort_terms_key1(f)}")
75
+ @c.decode("#{sort_terms_key1(d)} :: #{sort_terms_key1(f)}")
77
76
  end
78
77
 
79
78
  def sort_terms_key1(elem)
@@ -190,8 +189,7 @@ module IsoDoc
190
189
  end
191
190
 
192
191
  def collapse_unwrap_definition(defn)
193
- return nil if defn.nil?
194
-
192
+ defn.nil? and return nil
195
193
  s = defn.remove.xpath(ns("./termsource"))
196
194
  p = defn.at(ns("./p"))
197
195
  !s.empty? && p and p << s.map(&:remove).map(&:children)
@@ -134,6 +134,8 @@ module IsoDoc
134
134
  table_columnhead: "IEEEStdsTableColumnHead",
135
135
  nameslist: "IEEEStdsNamesList",
136
136
  intro: "IEEEStdsIntroduction",
137
+ surname: "au_surname",
138
+ forename: "au_fname",
137
139
  }
138
140
  end
139
141
 
@@ -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
- <choice>
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
- <choice>
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="BibliographicItem"/>
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">
@@ -382,7 +382,7 @@ role::: Member
382
382
  ++++
383
383
 
384
384
  [type=emeritus_sign]
385
- *Member Emeritus
385
+ span:cite_fn[*]Member Emeritus
386
386
 
387
387
  == feedback-statement
388
388
  === {blank}
@@ -190,14 +190,13 @@ module Metanorma
190
190
 
191
191
  def populate_participants2(list)
192
192
  curr = list
193
- p = curr.at("./p") and curr = p
193
+ p = curr.at("./p[text() != '']") and curr = p
194
194
  if dl = curr.at("./dl")
195
195
  ret = extract_participants(dl)
196
196
  dl.children = ret.keys.map do |k|
197
197
  "<dt>#{k}</dt><dd><p>#{ret[k]}</p></dd>"
198
198
  end.join
199
- else
200
- list.children = "<dl><dt>name</dt><dd><p>#{curr.children.to_xml}" \
199
+ else list.children = "<dl><dt>name</dt><dd><p>#{curr.children.to_xml}" \
201
200
  "</p></dd><dt>role</dt><dd><p>member</p></dd></dl>"
202
201
  end
203
202
  end
@@ -206,13 +205,18 @@ module Metanorma
206
205
  key = ""
207
206
  map = dlist.xpath("./dt | ./dd").each_with_object({}) do |dtd, m|
208
207
  (dtd.name == "dt" and key = dtd.text.sub(/:+$/, "")) or
209
- m[key.strip.downcase] =
210
- @c.encode(@c.decode(dtd.text.strip), :hexadecimal)
208
+ m[key.strip.downcase] = text_from_paras(dtd)
211
209
  end
210
+ map["company"] &&= "<span class='organization'>#{map['company']}</span>"
212
211
  map["role"] ||= "member"
213
212
  map
214
213
  end
215
214
 
215
+ def text_from_paras(node)
216
+ r = node.at("./p") and node = r
217
+ node.children.to_xml.strip
218
+ end
219
+
216
220
  def bibdata_cleanup(xmldoc)
217
221
  super
218
222
  provenance_title(xmldoc)
@@ -15,13 +15,11 @@ module Metanorma
15
15
  if ref.at("./note[@type = 'boilerplate']")
16
16
  unwrap_boilerplate_clauses(ref, ".")
17
17
  else
18
- pref = @i18n.biblio_pref
19
- ref.at("./title").next = "<p>#{pref}</p>"
18
+ ref.at("./title").next = "<p>#{@i18n.biblio_pref}</p>"
20
19
  end
21
20
  end
22
21
 
23
22
  def sort_biblio(bib)
24
- @c = HTMLEntities.new
25
23
  @i = IsoDoc::IEEE::PresentationXMLConvert
26
24
  .new({ lang: @lang, script: @script, locale: @locale })
27
25
  @i.i18n_init(@lang, @script, @locale)
@@ -75,12 +73,13 @@ module Metanorma
75
73
  trademark_ieee_erefs(xmldoc)
76
74
  end
77
75
 
76
+ IEEE = "Institute of Electrical and Electronics Engineers".freeze
77
+
78
78
  # Style manual 12.3.5
79
79
  def trademark_ieee_erefs(xmldoc)
80
80
  ieee = xmldoc.xpath("//references/bibitem")
81
81
  .each_with_object({}) do |b, m|
82
- n = b.at("./contributor[role/@type = 'publisher']/organization/name")
83
- n&.text == "Institute of Electrical and Electronics Engineers" and
82
+ bib_pubs(b).include?(IEEE) and
84
83
  m[b["id"]] = b.at("./docidentifier[@scope = 'trademark']")&.text
85
84
  end
86
85
  trademark_ieee_erefs1(xmldoc, "//preface//eref", ieee)
@@ -127,10 +126,114 @@ module Metanorma
127
126
  end
128
127
 
129
128
  def section_names_refs_cleanup(xml)
130
- if @doctype == "whitepaper"
131
- replace_title(xml, "//bibliography/references",
132
- @i18n&.references, true)
133
- else super
129
+ @doctype == "whitepaper" or return super
130
+ replace_title(xml, "//bibliography/references", @i18n&.references, true)
131
+ end
132
+
133
+ def bibitem_cleanup(xmldoc)
134
+ super
135
+ f = File.join(File.dirname(__FILE__), "ieee-footnotes.yaml")
136
+ @provenance_notes = YAML.safe_load(File.read(f))
137
+ withdrawn_note(xmldoc, @provenance_notes)
138
+ end
139
+
140
+ def biblio_reorder(xmldoc)
141
+ super
142
+ available_note(xmldoc, @provenance_notes)
143
+ end
144
+
145
+ def bib_pubs(bib)
146
+ bib.xpath("./contributor[role/@type = 'publisher']/organization/name")
147
+ .map(&:text)
148
+ end
149
+
150
+ BIBITEM_NO_AVAIL =
151
+ "//references/bibitem[not(note[@type = 'Availability'])]".freeze
152
+
153
+ def withdrawn_note(xmldoc, provenance_notes)
154
+ xmldoc.xpath(BIBITEM_NO_AVAIL).each do |b|
155
+ bib_pubs(b).include?(IEEE) or next
156
+ b.at("./status/stage")&.text == "withdrawn" or next
157
+ docid = b.at("./docidentifier[@type = 'IEEE'][not(@scope)]")
158
+ note = provenance_notes["ieee-withdrawn"].sub("%", docid.text)
159
+ insert_availability_note(b, note)
160
+ end
161
+ end
162
+
163
+ AVAIL_PUBS = {
164
+ ieee: IEEE,
165
+ cispr: "International special committee on radio interference",
166
+ etsi: "European Telecommunications Standards Institute",
167
+ oasis: "OASIS",
168
+ "w3c": "World Wide Web Consortium",
169
+ "3gpp": "3rd Generation Partnership Project",
170
+ }.freeze
171
+
172
+ def available_note(xmldoc, provenance_notes)
173
+ iso_iec_available_note(xmldoc, provenance_notes["iso-iec"], true, true)
174
+ iso_iec_available_note(xmldoc, provenance_notes["iso"], true, false)
175
+ iso_iec_available_note(xmldoc, provenance_notes["iec"], false, true)
176
+ itu_available_note(xmldoc, provenance_notes["itut"], true)
177
+ itu_available_note(xmldoc, provenance_notes["itur"], false)
178
+ nist_available_note(xmldoc, provenance_notes["fips"], true)
179
+ nist_available_note(xmldoc, provenance_notes["nist"], false)
180
+ ietf_available_note(xmldoc, provenance_notes["ietf"])
181
+ AVAIL_PUBS.each do |k, v|
182
+ sdo_available_note(xmldoc, provenance_notes[k.to_s], v)
183
+ end
184
+ end
185
+
186
+ def sdo_available_note(xmldoc, note, publisher)
187
+ ret = xmldoc.xpath(BIBITEM_NO_AVAIL).detect do |b|
188
+ bib_pubs(b).include?(publisher)
189
+ end
190
+ insert_availability_note(ret, note)
191
+ end
192
+
193
+ def iso_iec_available_note(xmldoc, note, iso, iec)
194
+ ret = xmldoc.xpath(BIBITEM_NO_AVAIL).detect do |b|
195
+ pubs = bib_pubs(b)
196
+ has_iec = pubs.include?("International Electrotechnical Commission")
197
+ has_iso = pubs.include?("International Organization for Standardization")
198
+ ((has_iec && iec) || (!has_iec && !iec)) &&
199
+ ((has_iso && iso) || (!has_iso && !iso))
200
+ end
201
+ insert_availability_note(ret, note)
202
+ end
203
+
204
+ def ietf_available_note(xmldoc, note)
205
+ ret = xmldoc.xpath(BIBITEM_NO_AVAIL).detect do |b|
206
+ b.at("./docidentifier[@type = 'IETF']")
207
+ end
208
+ insert_availability_note(ret, note)
209
+ end
210
+
211
+ def itu_available_note(xmldoc, note, itu_t)
212
+ ret = xmldoc.xpath(BIBITEM_NO_AVAIL).detect do |b|
213
+ has_itu_t = /^ITU-T/.match?(b.at("./docidentifier[@type = 'ITU']")&.text)
214
+ bib_pubs(b).include?("International Telecommunication Union") &&
215
+ (!has_itu_t && !itu_t) || (has_itu_t && itu_t)
216
+ end
217
+ insert_availability_note(ret, note)
218
+ end
219
+
220
+ def nist_available_note(xmldoc, note, fips)
221
+ ret = xmldoc.xpath(BIBITEM_NO_AVAIL).detect do |b|
222
+ id = b.at("./docidentifier[@type = 'NIST']")
223
+ has_fips = /\bFIPS\b/.match?(id&.text)
224
+ id && ((has_fips && !fips) || (!has_fips && fips))
225
+ end
226
+ insert_availability_note(ret, note)
227
+ end
228
+
229
+ def insert_availability_note(bib, msg)
230
+ bib or return
231
+ note = %(<note type="Availability"><p>#{msg}</p></note>)
232
+ if b = bib.at("./language | ./script | ./abstract | ./status")
233
+ b.previous = note
234
+ else b = bib.at("./contributor") || bib.at("./date") ||
235
+ bib.at("./docnumber") || bib.at("./docidentifier") ||
236
+ bib.at("./title") and b.next = note
134
237
  end
135
238
  end
136
239
  end
@@ -1,4 +1,5 @@
1
1
  require "isoics"
2
+ require "pubid-ieee"
2
3
 
3
4
  module Metanorma
4
5
  module IEEE
@@ -16,7 +17,8 @@ module Metanorma
16
17
  def metadata_committee_prep(node)
17
18
  node.attr("doctype") == "whitepaper" &&
18
19
  node.attr("docsubtype") == "industry-connection-report" and
19
- node.set_attr("working-group", "IEEE SA Industry Connections activity")
20
+ node.set_attr("working-group",
21
+ "IEEE SA Industry Connections activity")
20
22
  node.attr("committee") || node.attr("society") ||
21
23
  node.attr("working-group") or return
22
24
  node.attr("balloting-group") && !node.attr("balloting-group-type") and
@@ -32,8 +34,10 @@ module Metanorma
32
34
  end
33
35
 
34
36
  def metadata_id(node, xml)
35
- id = node.attr("docnumber") || ""
36
- xml.docidentifier (node.attr("docidentifier") || id), type: "IEEE"
37
+ if id = node.attr("docidentifier")
38
+ xml.docidentifier id, **attr_code(type: "IEEE")
39
+ else ieee_id(node, xml)
40
+ end
37
41
  id = node.attr("stdid-pdf") and
38
42
  xml.docidentifier id, type: "IEEE", scope: "PDF"
39
43
  id = node.attr("stdid-print") and
@@ -41,6 +45,65 @@ module Metanorma
41
45
  xml.docnumber node.attr("docnumber")
42
46
  end
43
47
 
48
+ def ieee_id(node, xml)
49
+ params = ieee_id_params(node)
50
+ params[:number] or return
51
+ ieee_id_out(xml, params)
52
+ end
53
+
54
+ def ieee_id_params(node)
55
+ core = ieee_id_params_core(node)
56
+ amd = ieee_id_params_amd(node, core) || {}
57
+ core.merge(amd)
58
+ end
59
+
60
+ def ieee_id_params_core(node)
61
+ pub = ieee_id_pub(node)
62
+ ret = { number: node.attr("docnumber"),
63
+ part: node.attr("partnumber"),
64
+ year: ieee_id_year(node, initial: true),
65
+ redline: @doctype == "redline",
66
+ publisher: pub[0],
67
+ copublisher: pub[1..-1] }.compact
68
+ ret[:copublisher].empty? and ret.delete(:copublisher)
69
+ ret
70
+ end
71
+
72
+ def ieee_id_params_amd(node, core)
73
+ if a = node.attr("corrigendum-number")
74
+ { corrigendum: { version: a,
75
+ year: ieee_id_year(node, initial: false) } }
76
+ elsif node.attr("amendment-number")
77
+ { amendment: pubid_select(core).create(**core) }
78
+ end
79
+ end
80
+
81
+ def ieee_id_pub(node)
82
+ (node.attr("publisher") || default_publisher).split(/[;,]/)
83
+ .map(&:strip).map { |x| org_abbrev[x] || x }
84
+ end
85
+
86
+ def ieee_id_year(node, initial: false)
87
+ unless initial
88
+ y = node.attr("copyright-year") || node.attr("updated-date")
89
+ end
90
+ y ||= node.attr("published-date") || node.attr("copyright-year")
91
+ y&.sub(/-.*$/, "") || Date.today.year
92
+ end
93
+
94
+ def ieee_id_out(xml, params)
95
+ id = pubid_select(params).create(**params)
96
+ xml.docidentifier id.to_s, type: "IEEE"
97
+ end
98
+
99
+ def pubid_select(_params)
100
+ base_pubid
101
+ end
102
+
103
+ def base_pubid
104
+ Pubid::Ieee::Identifier
105
+ end
106
+
44
107
  def default_publisher
45
108
  "IEEE"
46
109
  end
@@ -63,7 +126,9 @@ module Metanorma
63
126
  end
64
127
 
65
128
  def org_abbrev
66
- { "Institute of Electrical and Electronic Engineers" => "IEEE" }
129
+ { "Institute of Electrical and Electronic Engineers" => "IEEE",
130
+ "International Organization for Standardization" => "ISO",
131
+ "International Electrotechnical Commission" => "IEC" }
67
132
  end
68
133
 
69
134
  def relaton_relations
@@ -0,0 +1,77 @@
1
+ ---
2
+ ieee: |
3
+ IEEE publications are available from The Institute of Electrical and
4
+ Electronics Engineers (http://standards.ieee.org/).
5
+
6
+ iec: |
7
+ IEC publications are available from the International Electrotechnical
8
+ Commission (http://www.iec.ch/). IEC publications are also available in
9
+ the United States from the American National Standards Institute
10
+ (http://www.ansi.org/).
11
+
12
+ cispr: |
13
+ CISPR documents are available from the International Electrotechnical
14
+ Commission (http://www.iec.ch/). CISPR documents are also available in
15
+ the United States from the American National Standards Institute
16
+ (http://www.ansi.org)
17
+
18
+ ietf: |
19
+ IETF documents (e.g., RFCs) are available from the Internet Engineering Task Force (http://www.ietf.org/).
20
+
21
+ iso: |
22
+ ISO publications are available from the ISO Central Secretariat
23
+ (http://www.iso.org/). ISO publications are also available in the United
24
+ States from the American National Standards Institute
25
+ (http://www.ansi.org/).
26
+
27
+ iso-iec: |
28
+ ISO/IEC documents are available from the International Organization for
29
+ Standardization (https://www.iso.org/). ISO/IEC publications are also
30
+ available in the United States from Global Engineering Documents
31
+ (https://global.ihs.com/). Electronic copies are available in the United
32
+ States from the American National Standards Institute
33
+ (https://www.ansi.org/)
34
+
35
+ fips: |
36
+ FIPS publications are available from the National Technical Information
37
+ Service (NTIS) (http://csrc.nist.gov).
38
+
39
+ nist: |
40
+ NIST publications are available from the National Institute of Standards
41
+ and Technology (http://www.nist.gov/).
42
+
43
+ astm: |
44
+ ASTM publications are available from the American Society for Testing
45
+ and Materials (http://www.astm.org/).
46
+
47
+ etsi: |
48
+ ETSI publications are available the European Telecommunications
49
+ Standards Institute (http://www.etsi.org).
50
+
51
+ ansi: |
52
+ ANSI publications are available from the American National Standards
53
+ Institute (http://www.ansi.org/).
54
+
55
+ itut: |
56
+ ITU-T publications are available from the International
57
+ Telecommunications Union (http://www.itu.int/).
58
+
59
+ itur: |
60
+ ITU publications are available from the International Telecommunications
61
+ Union (http://www.itu.int/).
62
+
63
+ w3c: |
64
+ W3C recommendations are available from the World Wide Web Consortium
65
+ (https://www.w3.org).
66
+
67
+ oasis: |
68
+ OASIS publications are available from the Organization for the
69
+ Organization for the Advancement of Structured Information Standards
70
+ (http://www.oasis-open.org)
71
+
72
+ 3gpp: |
73
+ 3GPP(TM) documents are available from the 3rd Generation Partnership
74
+ Project Web site (http://www.3gpp.org).
75
+
76
+ ieee-withdrawn: |
77
+ % has been withdrawn; however, copies can be obtained from Global Engineering, 15 Inverness Way East, Englewood, CO 80112-5704, USA, tel. (303) 792-2181 (http://global.ihs.com/).
@@ -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.2.9 -->
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">
@@ -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>
@@ -149,7 +149,6 @@ module Metanorma
149
149
  (xmldoc.xpath("//figure") - xmldoc.xpath("//table//figure"))
150
150
  .each do |f|
151
151
  (i = f.at("./image") and !i["src"]&.start_with?("data:")) or next
152
-
153
152
  num = xrefs.anchor(f["id"], :label)
154
153
  base = File.basename(i["src"], ".*")
155
154
  base == "#{pref}_fig#{num}" or
@@ -170,7 +169,6 @@ module Metanorma
170
169
  xmldoc.xpath("//table[.//figure]").each do |t|
171
170
  xmldoc.xpath(".//figure").each do |f|
172
171
  (i = f.at("./image") and !i["src"]&.start_with?("data:")) or next
173
-
174
172
  num = tablefigurenumber(t, f, xrefs)
175
173
  base = File.basename(i["src"])
176
174
  base == num or
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module IEEE
3
- VERSION = "1.1.10".freeze
3
+ VERSION = "1.2.1".freeze
4
4
  end
5
5
  end
@@ -25,9 +25,9 @@ Gem::Specification.new do |spec|
25
25
  spec.require_paths = ["lib"]
26
26
  spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
27
27
 
28
- spec.add_dependency "metanorma-standoc", "~> 2.7.0"
28
+ spec.add_dependency "metanorma-standoc", "~> 2.8.0"
29
29
  spec.add_dependency "mnconvert", "~> 1.20"
30
- #spec.add_dependency "pubid-ieee", "~> 0.1.1"
30
+ spec.add_dependency "pubid-ieee"
31
31
  #spec.add_dependency "pubid-iso", "~> 0.5.3"
32
32
  #spec.add_dependency "relaton-iso", "~> 1.15.4"
33
33
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ieee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.10
4
+ version: 1.2.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: 2023-12-22 00:00:00.000000000 Z
11
+ date: 2024-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.7.0
19
+ version: 2.8.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.7.0
26
+ version: 2.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mnconvert
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.20'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pubid-ieee
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: debug
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -252,11 +266,14 @@ files:
252
266
  - lib/isodoc/ieee/html/wordstyle_wp.scss
253
267
  - lib/isodoc/ieee/html/wp_image001.emz
254
268
  - lib/isodoc/ieee/html/wp_image001_icap.emz
269
+ - lib/isodoc/ieee/html/wp_image001_icr.emz
255
270
  - lib/isodoc/ieee/html/wp_image003.emz
256
271
  - lib/isodoc/ieee/html/wp_image003_icap.emz
272
+ - lib/isodoc/ieee/html/wp_image003_icr.emz
257
273
  - lib/isodoc/ieee/html/wp_image007_icr.emz
258
274
  - lib/isodoc/ieee/html/wp_image008.emz
259
275
  - lib/isodoc/ieee/html/wp_image008_icap.emz
276
+ - lib/isodoc/ieee/html/wp_image008_icr.emz
260
277
  - lib/isodoc/ieee/html_convert.rb
261
278
  - lib/isodoc/ieee/i18n-en.yaml
262
279
  - lib/isodoc/ieee/i18n.rb
@@ -289,6 +306,7 @@ files:
289
306
  - lib/metanorma/ieee/cleanup_ref.rb
290
307
  - lib/metanorma/ieee/converter.rb
291
308
  - lib/metanorma/ieee/front.rb
309
+ - lib/metanorma/ieee/ieee-footnotes.yaml
292
310
  - lib/metanorma/ieee/ieee.rng
293
311
  - lib/metanorma/ieee/isodoc.rng
294
312
  - lib/metanorma/ieee/processor.rb