metanorma-ieee 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c8b36f29257a62401c8357b433057740ec7d9a1a94bf0f1d44916aaf7bcb2ad
4
- data.tar.gz: c1e3293746afb9c5af22399b9cc5c896f92caa2cbca50000802ee401378a3029
3
+ metadata.gz: daaebf8c438f244ad1a0cc4c804f1aac05fcdf3252bb9b2847f0ab056ed5ffc0
4
+ data.tar.gz: 4cf01847b8a56f6e9a520cd7509cc56cec8077d891bef18beed30262688e87bf
5
5
  SHA512:
6
- metadata.gz: d405aac6ed448e8763c5f0de08b8edefffb6a883f394dffb8d59205085d07a0c4436d8ac13c115d84c3258de97205bf28eb3fd2857b675124d9da1966f2784b7
7
- data.tar.gz: c509c9af29dbd57d59189adbd85e636d198c14702dd5cb4f530a6e4af7383066845c04df1b3595a08cc03debdbcf0517acd7b19a62ac37bf6b574a921874461c
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"/>
@@ -12364,13 +12407,19 @@
12364
12407
  <fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12365
12408
  </xsl:when>
12366
12409
  <!-- if there isn't element with id 'from', then create 'bookmark' here -->
12367
- <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])">
12368
12414
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12369
12415
  </xsl:when>
12370
12416
  </xsl:choose>
12371
12417
 
12372
12418
  </xsl:template>
12373
12419
 
12420
+ <!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
12421
+ <xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
12422
+
12374
12423
  <xsl:template match="*[local-name() = 'name']/text()">
12375
12424
  <!-- 0xA0 to space replacement -->
12376
12425
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
@@ -14137,7 +14186,7 @@
14137
14186
 
14138
14187
  <xsl:template name="printEdition">
14139
14188
  <xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
14140
- <xsl:text> </xsl:text>
14189
+
14141
14190
  <xsl:choose>
14142
14191
  <xsl:when test="$edition_i18n != ''">
14143
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"/>
@@ -12364,13 +12407,19 @@
12364
12407
  <fo:block id="{@id}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12365
12408
  </xsl:when>
12366
12409
  <!-- if there isn't element with id 'from', then create 'bookmark' here -->
12367
- <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])">
12368
12414
  <fo:block id="{@from}" font-size="1pt"><xsl:value-of select="$hair_space"/></fo:block>
12369
12415
  </xsl:when>
12370
12416
  </xsl:choose>
12371
12417
 
12372
12418
  </xsl:template>
12373
12419
 
12420
+ <!-- https://github.com/metanorma/mn-samples-bsi/issues/312 -->
12421
+ <xsl:template match="*[local-name() = 'review'][@type = 'other']"/>
12422
+
12374
12423
  <xsl:template match="*[local-name() = 'name']/text()">
12375
12424
  <!-- 0xA0 to space replacement -->
12376
12425
  <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.),' ',' ')"/>
@@ -14137,7 +14186,7 @@
14137
14186
 
14138
14187
  <xsl:template name="printEdition">
14139
14188
  <xsl:variable name="edition_i18n" select="normalize-space((//*[contains(local-name(), '-standard')])[1]/*[local-name() = 'bibdata']/*[local-name() = 'edition'][normalize-space(@language) != ''])"/>
14140
- <xsl:text> </xsl:text>
14189
+
14141
14190
  <xsl:choose>
14142
14191
  <xsl:when test="$edition_i18n != ''">
14143
14192
  <!-- Example: <edition language="fr">deuxième édition</edition> -->
@@ -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)
@@ -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
 
@@ -244,6 +244,9 @@
244
244
  <data type="ID"/>
245
245
  </attribute>
246
246
  <attribute name="reviewer"/>
247
+ <optional>
248
+ <attribute name="type"/>
249
+ </optional>
247
250
  <optional>
248
251
  <attribute name="date">
249
252
  <data type="dateTime"/>
@@ -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)
@@ -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
@@ -17,7 +17,7 @@
17
17
  these elements; we just want one namespace for any child grammars
18
18
  of this.
19
19
  -->
20
- <!-- VERSION v1.2.12 -->
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">
@@ -146,6 +146,9 @@
146
146
  <data type="boolean"/>
147
147
  </attribute>
148
148
  </optional>
149
+ <optional>
150
+ <attribute name="style"/>
151
+ </optional>
149
152
  <oneOrMore>
150
153
  <ref name="PureTextElement"/>
151
154
  </oneOrMore>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module IEEE
3
- VERSION = "1.2.0".freeze
3
+ VERSION = "1.2.1".freeze
4
4
  end
5
5
  end
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
 
28
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.2.0
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: 2024-01-09 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
@@ -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