metanorma-ieee 0.1.3 → 1.0.0

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: d8d83608460dd4f0a8b91f963553c4f9a319fe1264259f4cd51c4eaa783b2d95
4
- data.tar.gz: 7016563f5ae5736a84f1a4266d3c893ed15682e079eed0df3768b81dce174f18
3
+ metadata.gz: 403a80a30d2fd43432e4750b237712b71ad5f2af3823137d4f49b87150a67b0f
4
+ data.tar.gz: 0d98ce2b578daaa75b06800371ef595d3a11ce4a931bc267edeb63dfa17faed9
5
5
  SHA512:
6
- metadata.gz: 7a83703e3591664c3bba95732da262a9e8242fe834c223757ee52c21532c7c66e47af14d5b0d2824e22c590e134f43afbd59643749f459c3e725d78d5d30f098
7
- data.tar.gz: 2469ed39262d09ccaef4cbe0cd156453a10822156f00dc30e8717b54379b84a13e442390cf84b4f1fcd8de6616656deca4616bdd2ceca6d3c1f71cbcecabf461
6
+ metadata.gz: 4cedea29e69e7fbad2b3007b6a70f7257e0ec117b685c342a83b683c44aecf882a28774d325a163244ed74f51d93654b726704be7376a683995ab17a19785fee
7
+ data.tar.gz: 98a404455147da1f4f3ccd736218be6d6d00d69af9daddd013d82f8ec9e94a95994b9539e9826a71ef292b9c0795eebe311ac0d1d6eb5bd7ae4ad11fea6c8456
@@ -67,7 +67,7 @@ module IsoDoc
67
67
  def para_to_tr(para)
68
68
  ret = para.children.each_with_object([[]]) do |c, m|
69
69
  if c.name == "tab" then m << []
70
- else m[-1] << c.to_xml
70
+ else m[-1] << to_xml(c)
71
71
  end
72
72
  end.map { |c| "<td>#{c.join}</td>" }
73
73
  "<tr>#{ret.join}</tr>"
@@ -3,7 +3,7 @@ module IsoDoc
3
3
  class I18n < IsoDoc::I18n
4
4
  def load_yaml2x(str)
5
5
  ::YAML.load_file(File.join(File.dirname(__FILE__),
6
- "i18n-#{str}.yaml"))
6
+ "i18n-#{str}.yaml"))
7
7
  end
8
8
 
9
9
  def load_yaml1(lang, script)
@@ -77,7 +77,7 @@
77
77
  <xsl:variable name="current_template">
78
78
  <xsl:choose>
79
79
  <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and $stage = 'draft'">draft</xsl:when>
80
- <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and $stage = 'published'">standard</xsl:when>
80
+ <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and ($stage = 'published' or $stage = 'approved')">standard</xsl:when>
81
81
  <xsl:otherwise><xsl:value-of select="$doctype"/></xsl:otherwise>
82
82
  </xsl:choose>
83
83
  </xsl:variable>
@@ -768,7 +768,7 @@
768
768
  </fo:block>
769
769
  </fo:flow>
770
770
  </fo:page-sequence>
771
- </xsl:when> <!-- $stage = 'published' -->
771
+ </xsl:when> <!-- $current_template = 'standard' -->
772
772
 
773
773
  <xsl:when test="$current_template = 'whitepaper' or $current_template = 'icap-whitepaper' or $current_template = 'industry-connection-report'">
774
774
  <fo:page-sequence master-reference="document-nonstandard" force-page-count="no-force" font-family="Calibri Light">
@@ -873,7 +873,7 @@
873
873
  </fo:block>
874
874
 
875
875
  <fo:block font-family="Arial" font-size="12pt" role="H1" font-weight="bold" margin-top="12pt" margin-bottom="24pt">
876
- <xsl:if test="$stage = 'published'">
876
+ <xsl:if test="$stage = 'published' or $stage = 'approved'">
877
877
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
878
878
  </xsl:if>
879
879
  <!-- Contents -->
@@ -944,7 +944,7 @@
944
944
 
945
945
  </xsl:when> <!-- $stage = 'draft' -->
946
946
 
947
- <xsl:when test="$stage = 'published'">
947
+ <xsl:when test="$stage = 'published' or $stage = 'approved'">
948
948
 
949
949
  <xsl:variable name="provisional-distance-between-starts">10</xsl:variable>
950
950
 
@@ -1016,7 +1016,7 @@
1016
1016
  </xsl:for-each>
1017
1017
  </xsl:if>
1018
1018
 
1019
- </xsl:when> <!-- $stage = 'published' -->
1019
+ </xsl:when> <!-- $stage = 'published' or 'approved' -->
1020
1020
  </xsl:choose>
1021
1021
 
1022
1022
  </xsl:if>
@@ -1513,15 +1513,15 @@
1513
1513
  </fo:table>
1514
1514
  </fo:block>
1515
1515
 
1516
- <xsl:if test="following-sibling::*[not(@type = 'officemember' or @type = 'emeritus_sign')]">
1517
- <fo:block font-size="10pt" space-after="12pt"> </fo:block>
1516
+ <xsl:if test="following-sibling::*[1][not(@type = 'officemember' or @type = 'emeritus_sign')]">
1517
+ <fo:block font-size="10pt" space-after="12pt" keep-with-previous="always"> </fo:block>
1518
1518
  </xsl:if>
1519
1519
  </xsl:when> <!-- @type = 'officemember' -->
1520
1520
 
1521
1521
  <xsl:when test="@type = 'officemember' and preceding-sibling::*[1][self::ieee:p][@type = 'officemember']"><!-- skip --></xsl:when>
1522
1522
 
1523
1523
  <xsl:when test="@type = 'emeritus_sign'">
1524
- <fo:block font-size="9pt" margin-left="9.4mm">
1524
+ <fo:block font-size="9pt" margin-left="9.4mm" space-before="6pt" space-after="12pt" keep-with-previous="always">
1525
1525
  <xsl:apply-templates/>
1526
1526
  </fo:block>
1527
1527
  </xsl:when>
@@ -6406,6 +6406,10 @@
6406
6406
  <xsl:variable name="footnote_inline">
6407
6407
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6408
6408
 
6409
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6410
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6411
+ </xsl:if>
6412
+
6409
6413
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6410
6414
  <xsl:value-of select="$current_fn_number_text"/>
6411
6415
  </fo:basic-link>
@@ -7563,6 +7567,23 @@
7563
7567
  <xsl:apply-templates/>
7564
7568
  </xsl:template>
7565
7569
 
7570
+ <!-- Don't break standard's numbers -->
7571
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7572
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7573
+ <xsl:choose>
7574
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7575
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7576
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7577
+ </xsl:when>
7578
+ <xsl:otherwise>
7579
+ <xsl:apply-templates/>
7580
+ </xsl:otherwise>
7581
+ </xsl:choose>
7582
+ </xsl:template>
7583
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7584
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7585
+ </xsl:template>
7586
+
7566
7587
  <!-- ========================= -->
7567
7588
  <!-- END Rich text formatting -->
7568
7589
  <!-- ========================= -->
@@ -7958,7 +7979,7 @@
7958
7979
  <xsl:choose>
7959
7980
  <xsl:when test="@colspan">
7960
7981
  <xsl:variable name="td">
7961
- <xsl:element name="td">
7982
+ <xsl:element name="{local-name()}">
7962
7983
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
7963
7984
  <xsl:if test="local-name()='th'">
7964
7985
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -7973,7 +7994,7 @@
7973
7994
  </xsl:call-template>
7974
7995
  </xsl:when>
7975
7996
  <xsl:otherwise>
7976
- <xsl:element name="td">
7997
+ <xsl:element name="{local-name()}">
7977
7998
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
7978
7999
  <xsl:if test="local-name()='th'">
7979
8000
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8040,7 +8061,7 @@
8040
8061
  <xsl:variable name="currentRow" select="."/>
8041
8062
 
8042
8063
  <xsl:variable name="normalizedTDs">
8043
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8064
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@rowspan &gt; 1">
8046
8067
  <xsl:copy>
@@ -8052,7 +8073,7 @@
8052
8073
  </xsl:copy>
8053
8074
  </xsl:when>
8054
8075
  <xsl:otherwise>
8055
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8076
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8056
8077
  </xsl:otherwise>
8057
8078
  </xsl:choose>
8058
8079
  </xsl:for-each>
@@ -8736,12 +8757,6 @@
8736
8757
 
8737
8758
  <fo:block-container margin-left="0mm">
8738
8759
 
8739
- <!-- <xsl:if test="$namespace = 'iho'">
8740
- <xsl:if test="ancestor::iho:td">
8741
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8742
- </xsl:if>
8743
- </xsl:if> -->
8744
-
8745
8760
  <fo:block>
8746
8761
 
8747
8762
  <fo:inline xsl:use-attribute-sets="note-name-style">
@@ -9249,6 +9264,31 @@
9249
9264
  <xsl:apply-templates mode="svg_update"/>
9250
9265
  </xsl:copy>
9251
9266
  </xsl:template>
9267
+
9268
+ <!-- regex for 'display: inline-block;' -->
9269
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9270
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9271
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9272
+ </xsl:template>
9273
+
9274
+ <!-- replace
9275
+ stroke="rgba(r, g, b, alpha)" to
9276
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9277
+ fill="rgba(r, g, b, alpha)" to
9278
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9279
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9280
+ <xsl:variable name="components_">
9281
+ <xsl:call-template name="split">
9282
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9283
+ <xsl:with-param name="sep" select="','"/>
9284
+ </xsl:call-template>
9285
+ </xsl:variable>
9286
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9287
+ <xsl:variable name="att_name" select="local-name()"/>
9288
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9289
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9290
+ </xsl:template>
9291
+
9252
9292
  <!-- ============== -->
9253
9293
  <!-- END: svg_update -->
9254
9294
  <!-- ============== -->
@@ -12257,7 +12297,9 @@
12257
12297
  <!-- Update xml -->
12258
12298
  <!-- ===================================== -->
12259
12299
  <!-- =========================================================================== -->
12260
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12300
+ <!-- STEP1: -->
12301
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12302
+ <!-- - Ignore 'span' without style -->
12261
12303
  <!-- =========================================================================== -->
12262
12304
  <xsl:template match="@*|node()" mode="update_xml_step1">
12263
12305
  <xsl:copy>
@@ -12340,7 +12382,8 @@
12340
12382
  </xsl:copy>
12341
12383
  </xsl:template>
12342
12384
 
12343
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12385
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12386
+ <xsl:template match="*[local-name() = 'span'][@style or @class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" mode="update_xml_step1" priority="2">
12344
12387
  <xsl:copy>
12345
12388
  <xsl:copy-of select="@*"/>
12346
12389
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -77,7 +77,7 @@
77
77
  <xsl:variable name="current_template">
78
78
  <xsl:choose>
79
79
  <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and $stage = 'draft'">draft</xsl:when>
80
- <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and $stage = 'published'">standard</xsl:when>
80
+ <xsl:when test="($doctype = 'standard' or $doctype = 'guide' or $doctype = 'recommended-practice') and ($stage = 'published' or $stage = 'approved')">standard</xsl:when>
81
81
  <xsl:otherwise><xsl:value-of select="$doctype"/></xsl:otherwise>
82
82
  </xsl:choose>
83
83
  </xsl:variable>
@@ -768,7 +768,7 @@
768
768
  </fo:block>
769
769
  </fo:flow>
770
770
  </fo:page-sequence>
771
- </xsl:when> <!-- $stage = 'published' -->
771
+ </xsl:when> <!-- $current_template = 'standard' -->
772
772
 
773
773
  <xsl:when test="$current_template = 'whitepaper' or $current_template = 'icap-whitepaper' or $current_template = 'industry-connection-report'">
774
774
  <fo:page-sequence master-reference="document-nonstandard" force-page-count="no-force" font-family="Calibri Light">
@@ -873,7 +873,7 @@
873
873
  </fo:block>
874
874
 
875
875
  <fo:block font-family="Arial" font-size="12pt" role="H1" font-weight="bold" margin-top="12pt" margin-bottom="24pt">
876
- <xsl:if test="$stage = 'published'">
876
+ <xsl:if test="$stage = 'published' or $stage = 'approved'">
877
877
  <xsl:attribute name="margin-bottom">12pt</xsl:attribute>
878
878
  </xsl:if>
879
879
  <!-- Contents -->
@@ -944,7 +944,7 @@
944
944
 
945
945
  </xsl:when> <!-- $stage = 'draft' -->
946
946
 
947
- <xsl:when test="$stage = 'published'">
947
+ <xsl:when test="$stage = 'published' or $stage = 'approved'">
948
948
 
949
949
  <xsl:variable name="provisional-distance-between-starts">10</xsl:variable>
950
950
 
@@ -1016,7 +1016,7 @@
1016
1016
  </xsl:for-each>
1017
1017
  </xsl:if>
1018
1018
 
1019
- </xsl:when> <!-- $stage = 'published' -->
1019
+ </xsl:when> <!-- $stage = 'published' or 'approved' -->
1020
1020
  </xsl:choose>
1021
1021
 
1022
1022
  </xsl:if>
@@ -1513,15 +1513,15 @@
1513
1513
  </fo:table>
1514
1514
  </fo:block>
1515
1515
 
1516
- <xsl:if test="following-sibling::*[not(@type = 'officemember' or @type = 'emeritus_sign')]">
1517
- <fo:block font-size="10pt" space-after="12pt"> </fo:block>
1516
+ <xsl:if test="following-sibling::*[1][not(@type = 'officemember' or @type = 'emeritus_sign')]">
1517
+ <fo:block font-size="10pt" space-after="12pt" keep-with-previous="always"> </fo:block>
1518
1518
  </xsl:if>
1519
1519
  </xsl:when> <!-- @type = 'officemember' -->
1520
1520
 
1521
1521
  <xsl:when test="@type = 'officemember' and preceding-sibling::*[1][self::ieee:p][@type = 'officemember']"><!-- skip --></xsl:when>
1522
1522
 
1523
1523
  <xsl:when test="@type = 'emeritus_sign'">
1524
- <fo:block font-size="9pt" margin-left="9.4mm">
1524
+ <fo:block font-size="9pt" margin-left="9.4mm" space-before="6pt" space-after="12pt" keep-with-previous="always">
1525
1525
  <xsl:apply-templates/>
1526
1526
  </fo:block>
1527
1527
  </xsl:when>
@@ -6406,6 +6406,10 @@
6406
6406
  <xsl:variable name="footnote_inline">
6407
6407
  <fo:inline xsl:use-attribute-sets="fn-num-style">
6408
6408
 
6409
+ <xsl:if test="following-sibling::*[1][local-name() = 'fn']">
6410
+ <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
6411
+ </xsl:if>
6412
+
6409
6413
  <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
6410
6414
  <xsl:value-of select="$current_fn_number_text"/>
6411
6415
  </fo:basic-link>
@@ -7563,6 +7567,23 @@
7563
7567
  <xsl:apply-templates/>
7564
7568
  </xsl:template>
7565
7569
 
7570
+ <!-- Don't break standard's numbers -->
7571
+ <!-- Example : <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
7572
+ <xsl:template match="*[local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" priority="2">
7573
+ <xsl:choose>
7574
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:apply-templates/></xsl:when>
7575
+ <xsl:when test="following-sibling::*[2][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']">
7576
+ <fo:inline keep-with-next.within-line="always"><xsl:apply-templates/></fo:inline>
7577
+ </xsl:when>
7578
+ <xsl:otherwise>
7579
+ <xsl:apply-templates/>
7580
+ </xsl:otherwise>
7581
+ </xsl:choose>
7582
+ </xsl:template>
7583
+ <xsl:template match="text()[not(ancestor::*[local-name() = 'table']) and preceding-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear'] and following-sibling::*[1][local-name() = 'span'][@class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']]" priority="2">
7584
+ <fo:inline keep-with-next.within-line="always"><xsl:value-of select="."/></fo:inline>
7585
+ </xsl:template>
7586
+
7566
7587
  <!-- ========================= -->
7567
7588
  <!-- END Rich text formatting -->
7568
7589
  <!-- ========================= -->
@@ -7958,7 +7979,7 @@
7958
7979
  <xsl:choose>
7959
7980
  <xsl:when test="@colspan">
7960
7981
  <xsl:variable name="td">
7961
- <xsl:element name="td">
7982
+ <xsl:element name="{local-name()}">
7962
7983
  <xsl:attribute name="divide"><xsl:value-of select="@colspan"/></xsl:attribute>
7963
7984
  <xsl:if test="local-name()='th'">
7964
7985
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -7973,7 +7994,7 @@
7973
7994
  </xsl:call-template>
7974
7995
  </xsl:when>
7975
7996
  <xsl:otherwise>
7976
- <xsl:element name="td">
7997
+ <xsl:element name="{local-name()}">
7977
7998
  <xsl:apply-templates select="@*" mode="simple-table-colspan"/>
7978
7999
  <xsl:if test="local-name()='th'">
7979
8000
  <xsl:attribute name="font-weight">bold</xsl:attribute>
@@ -8040,7 +8061,7 @@
8040
8061
  <xsl:variable name="currentRow" select="."/>
8041
8062
 
8042
8063
  <xsl:variable name="normalizedTDs">
8043
- <xsl:for-each select="xalan:nodeset($previousRow)//td">
8064
+ <xsl:for-each select="xalan:nodeset($previousRow)//*[self::td or self::th]">
8044
8065
  <xsl:choose>
8045
8066
  <xsl:when test="@rowspan &gt; 1">
8046
8067
  <xsl:copy>
@@ -8052,7 +8073,7 @@
8052
8073
  </xsl:copy>
8053
8074
  </xsl:when>
8054
8075
  <xsl:otherwise>
8055
- <xsl:copy-of select="$currentRow/td[1 + count(current()/preceding-sibling::td[not(@rowspan) or (@rowspan = 1)])]"/>
8076
+ <xsl:copy-of select="$currentRow/*[self::td or self::th][1 + count(current()/preceding-sibling::*[self::td or self::th][not(@rowspan) or (@rowspan = 1)])]"/>
8056
8077
  </xsl:otherwise>
8057
8078
  </xsl:choose>
8058
8079
  </xsl:for-each>
@@ -8736,12 +8757,6 @@
8736
8757
 
8737
8758
  <fo:block-container margin-left="0mm">
8738
8759
 
8739
- <!-- <xsl:if test="$namespace = 'iho'">
8740
- <xsl:if test="ancestor::iho:td">
8741
- <xsl:attribute name="font-size">12pt</xsl:attribute>
8742
- </xsl:if>
8743
- </xsl:if> -->
8744
-
8745
8760
  <fo:block>
8746
8761
 
8747
8762
  <fo:inline xsl:use-attribute-sets="note-name-style">
@@ -9249,6 +9264,31 @@
9249
9264
  <xsl:apply-templates mode="svg_update"/>
9250
9265
  </xsl:copy>
9251
9266
  </xsl:template>
9267
+
9268
+ <!-- regex for 'display: inline-block;' -->
9269
+ <xsl:variable name="regex_svg_style_notsupported">display(\s|\h)*:(\s|\h)*inline-block(\s|\h)*;</xsl:variable>
9270
+ <xsl:template match="*[local-name() = 'svg']//*[local-name() = 'style']/text()" mode="svg_update">
9271
+ <xsl:value-of select="java:replaceAll(java:java.lang.String.new(.), $regex_svg_style_notsupported, '')"/>
9272
+ </xsl:template>
9273
+
9274
+ <!-- replace
9275
+ stroke="rgba(r, g, b, alpha)" to
9276
+ stroke="rgb(r,g,b)" stroke-opacity="alpha", and
9277
+ fill="rgba(r, g, b, alpha)" to
9278
+ fill="rgb(r,g,b)" fill-opacity="alpha" -->
9279
+ <xsl:template match="@*[local-name() = 'stroke' or local-name() = 'fill'][starts-with(normalize-space(.), 'rgba')]" mode="svg_update">
9280
+ <xsl:variable name="components_">
9281
+ <xsl:call-template name="split">
9282
+ <xsl:with-param name="pText" select="substring-before(substring-after(., '('), ')')"/>
9283
+ <xsl:with-param name="sep" select="','"/>
9284
+ </xsl:call-template>
9285
+ </xsl:variable>
9286
+ <xsl:variable name="components" select="xalan:nodeset($components_)"/>
9287
+ <xsl:variable name="att_name" select="local-name()"/>
9288
+ <xsl:attribute name="{$att_name}"><xsl:value-of select="concat('rgb(', $components/item[1], ',', $components/item[2], ',', $components/item[3], ')')"/></xsl:attribute>
9289
+ <xsl:attribute name="{$att_name}-opacity"><xsl:value-of select="$components/item[4]"/></xsl:attribute>
9290
+ </xsl:template>
9291
+
9252
9292
  <!-- ============== -->
9253
9293
  <!-- END: svg_update -->
9254
9294
  <!-- ============== -->
@@ -12257,7 +12297,9 @@
12257
12297
  <!-- Update xml -->
12258
12298
  <!-- ===================================== -->
12259
12299
  <!-- =========================================================================== -->
12260
- <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12300
+ <!-- STEP1: -->
12301
+ <!-- - Re-order elements in 'preface', 'sections' based on @displayorder -->
12302
+ <!-- - Ignore 'span' without style -->
12261
12303
  <!-- =========================================================================== -->
12262
12304
  <xsl:template match="@*|node()" mode="update_xml_step1">
12263
12305
  <xsl:copy>
@@ -12340,7 +12382,8 @@
12340
12382
  </xsl:copy>
12341
12383
  </xsl:template>
12342
12384
 
12343
- <xsl:template match="*[local-name() = 'span'][@style]" mode="update_xml_step1" priority="2">
12385
+ <!-- Example with 'class': <span class="stdpublisher">ISO</span> <span class="stddocNumber">10303</span>-<span class="stddocPartNumber">1</span>:<span class="stdyear">1994</span> -->
12386
+ <xsl:template match="*[local-name() = 'span'][@style or @class = 'stdpublisher' or @class = 'stddocNumber' or @class = 'stddocPartNumber' or @class = 'stdyear']" mode="update_xml_step1" priority="2">
12344
12387
  <xsl:copy>
12345
12388
  <xsl:copy-of select="@*"/>
12346
12389
  <xsl:apply-templates mode="update_xml_step1"/>
@@ -94,7 +94,7 @@ module IsoDoc
94
94
  set(:full_doctitle, fulltitle(@metadata[:doctype], draft))
95
95
  set(:abbrev_doctitle, fulltitle(@metadata[:doctype_abbrev], draft))
96
96
  prov = isoxml&.at(ns("//bibdata/title[@type='provenance']")) and
97
- set(:provenance_doctitle, prov.children.to_xml)
97
+ set(:provenance_doctitle, Common::to_xml(prov.children))
98
98
  end
99
99
 
100
100
  def fulltitle(type, draft)
@@ -26,19 +26,19 @@ module IsoDoc
26
26
  if coll.all? do |c|
27
27
  c.elements.size == 1 && c.elements.first.name == "p"
28
28
  end
29
- ret = coll.map { |c| c.elements.first.children.to_xml }
29
+ ret = coll.map { |c| to_xml(c.elements.first.children) }
30
30
  return "<p>#{ret.join}</p>"
31
31
  end
32
- coll.map { |c| c.children.to_xml }.join
32
+ coll.map { |c| to_xml(c.children) }.join
33
33
  end
34
34
 
35
35
  def unwrap_definition(docxml)
36
- docxml.xpath(ns("//definition/verbal-definition")).each do |v|
36
+ docxml.xpath(ns(".//definition/verbal-definition")).each do |v|
37
37
  next unless v.elements.all? { |e| %w(termsource p).include?(e.name) }
38
38
 
39
39
  p = v.xpath(ns("./p"))
40
40
  v.children =
41
- "<p>#{p.map(&:children).map(&:to_xml).join("\n")}</p>" \
41
+ "<p>#{p.map(&:children).map { |x| to_xml(x) }.join("\n")}</p>" \
42
42
  "#{v.xpath(ns('./termsource')).to_xml}"
43
43
  end
44
44
  super
@@ -60,8 +60,8 @@ module IsoDoc
60
60
  prev = i and next
61
61
  end
62
62
 
63
- coll[prev].at(ns("./preferred")) << "; #{r.at(ns('./preferred'))
64
- .children.to_xml}"
63
+ coll[prev].at(ns("./preferred")) << "; #{to_xml(r.at(ns('./preferred'))
64
+ .children)}"
65
65
  r.remove
66
66
  end
67
67
  end
@@ -129,10 +129,10 @@ module IsoDoc
129
129
  new = adm.dup
130
130
  adm["type"] = "equivalent"
131
131
  adm.name = "related"
132
- adm.children = "<preferred>#{adm.children.to_xml}</preferred>"
132
+ adm.children = "<preferred>#{to_xml(adm.children)}</preferred>"
133
133
  adm.parent.next = <<~TERM
134
- <term><preferred>#{new.children.to_xml}</preferred>
135
- <related type='see'><preferred>#{pref.children.to_xml}</preferred></related></term>
134
+ <term><preferred>#{to_xml(new.children)}</preferred>
135
+ <related type='see'><preferred>#{to_xml(pref.children)}</preferred></related></term>
136
136
  TERM
137
137
  end
138
138
 
@@ -172,8 +172,8 @@ module IsoDoc
172
172
  def collapse_term_related(rels)
173
173
  ret = rels.map do |r|
174
174
  p = r.at(ns("./preferred"))
175
- "<em>#{@i18n.relatedterms[r['type']]}:</em> " \
176
- "#{p&.children&.to_xml || '**RELATED TERM NOT FOUND**'}"
175
+ rel = p ? to_xml(p.children) : "**RELATED TERM NOT FOUND**"
176
+ "<em>#{@i18n.relatedterms[r['type']]}:</em> #{rel}"
177
177
  end.join(". ")
178
178
  ret += "." unless ret.empty?
179
179
  ret
@@ -182,10 +182,10 @@ module IsoDoc
182
182
  def collapse_term_template(opt)
183
183
  defn = collapse_unwrap_definition(opt[:def])
184
184
  src = nil
185
- opt[:source] and src = "(#{opt[:source].remove.children.to_xml.strip})"
185
+ opt[:source] and src = "(#{to_xml(opt[:source].remove.children).strip})"
186
+ t = opt[:pref] ? to_xml(opt[:pref].children) : "**TERM NOT FOUND**"
186
187
  <<~TERM
187
- <p>#{opt[:pref]&.children&.to_xml || '**TERM NOT FOUND**'}: #{defn}
188
- #{collapse_term_related(opt[:rels])} #{src}</p>
188
+ <p>#{t}: #{defn} #{collapse_term_related(opt[:rels])} #{src}</p>
189
189
  TERM
190
190
  end
191
191
 
@@ -194,7 +194,8 @@ module IsoDoc
194
194
 
195
195
  s = defn.remove.xpath(ns("./termsource"))
196
196
  p = defn.at(ns("./p"))
197
- !s.empty? && p and p << s.map(&:remove).map(&:children).map(&:to_xml).join
197
+ !s.empty? && p and p << s.map(&:remove).map(&:children)
198
+ .map { |x| to_xml(x) }.join
198
199
  if defn.elements.size == 1 && defn.elements.first.name == "p"
199
200
  defn.elements.first.children
200
201
  else defn.elements
@@ -203,10 +204,10 @@ module IsoDoc
203
204
 
204
205
  def termsource1(elem)
205
206
  while elem&.next_element&.name == "termsource"
206
- elem << "; #{elem.next_element.remove.children.to_xml}"
207
+ elem << "; #{to_xml(elem.next_element.remove.children)}"
207
208
  end
208
209
  adapt = termsource_adapt(elem["status"]) and
209
- elem.children = l10n("#{adapt}#{elem.children.to_xml.strip}")
210
+ elem.children = l10n("#{adapt}#{to_xml(elem.children).strip}")
210
211
  end
211
212
 
212
213
  def termsource_adapt(status)
@@ -218,7 +219,7 @@ module IsoDoc
218
219
  def designation_field(desgn, name)
219
220
  if desgn.name == "preferred"
220
221
  f = desgn.xpath(ns("./../domain | ./../subject")).map(&:remove)
221
- .map { |u| u.children.to_xml }.join(", ")
222
+ .map { |u| to_xml(u.children) }.join(", ")
222
223
  name << ", &#x3c;#{f}&#x3e;" unless f.empty?
223
224
  end
224
225
  super
@@ -231,7 +232,7 @@ module IsoDoc
231
232
  "./admitted[expression/name][abbreviation-type]"))
232
233
  (pref && !x.empty?) or return
233
234
  tail = x.map do |p|
234
- p.remove.at(ns("./expression/name")).children.to_xml.strip
235
+ to_xml(p.remove.at(ns("./expression/name")).children).strip
235
236
  end.join(", ")
236
237
  pref << " (#{tail})"
237
238
  end
@@ -17,9 +17,10 @@ module IsoDoc
17
17
  ret = resolve_eref_connectives(eref_locality_stacks(refs, target,
18
18
  node))
19
19
  node["droploc"] = droploc
20
- eref_localities1(target,
21
- prefix_clause(target, refs.first.at(ns("./locality"))),
22
- l10n(ret[1..-1].join), nil, node, @lang)
20
+ eref_localities1({ target: target, number: "pl",
21
+ type: prefix_clause(target, refs.first.at(ns("./locality"))),
22
+ from: l10n(ret[1..-1].join), node: node,
23
+ lang: @lang })
23
24
  end
24
25
 
25
26
  def prefix_clause(target, loc)
@@ -37,20 +38,18 @@ module IsoDoc
37
38
  target&.gsub(/<[^>]+>/, "")&.match(/^IEV$|^IEC 60050-/)
38
39
  end
39
40
 
40
- def eref_localities1(target, type, from, upto, node, lang = "en")
41
- return nil if type == "anchor"
41
+ def eref_localities1(opt)
42
+ return nil if opt[:type] == "anchor"
42
43
 
43
- type = type.downcase
44
- lang == "zh" and
45
- return l10n(eref_localities1_zh(target, type, from, upto,
46
- node))
44
+ opt[:type] = opt[:type].downcase
45
+ opt[:lang] == "zh" and return l10n(eref_localities1_zh(opt))
47
46
  ret = ""
48
- node["droploc"] != "true" && !subclause?(target, type,
49
- from) and
50
- ret = eref_locality_populate(type, node)
51
- ret += " #{from}" if from
52
- ret += "&#x2013;#{upto}" if upto
53
- ret += ")" if type == "list"
47
+ opt[:node]["droploc"] != "true" &&
48
+ !subclause?(opt[:target], opt[:type], opt[:from]) and
49
+ ret = eref_locality_populate(opt[:type], opt[:node], opt[:number])
50
+ ret += " #{opt[:from]}" if opt[:from]
51
+ ret += "&#x2013;#{opt[:upto]}" if opt[:upto]
52
+ ret += ")" if opt[:type] == "list"
54
53
  l10n(ret)
55
54
  end
56
55
 
@@ -85,7 +84,7 @@ module IsoDoc
85
84
  i = display_order_xpath(docxml, "//preface/*", i)
86
85
  i = display_order_at(docxml, "//clause[@type = 'overview']", i)
87
86
  i = display_order_at(docxml, @xrefs.klass.norm_ref_xpath, i)
88
- i = display_order_at(docxml, "//sections/terms | "\
87
+ i = display_order_at(docxml, "//sections/terms | " \
89
88
  "//sections/clause[descendant::terms]", i)
90
89
  i = display_order_at(docxml, "//sections/definitions", i)
91
90
  i = display_order_xpath(docxml, @xrefs.klass.middle_clause(docxml), i)
@@ -97,7 +96,7 @@ module IsoDoc
97
96
  def annex1(elem)
98
97
  lbl = @xrefs.anchor(elem["id"], :label)
99
98
  if t = elem.at(ns("./title"))
100
- t.children = "<strong>#{t.children.to_xml}</strong>"
99
+ t.children = "<strong>#{to_xml(t.children)}</strong>"
101
100
  end
102
101
  prefix_name(elem, "<br/>", lbl, "title")
103
102
  end
@@ -132,7 +131,7 @@ module IsoDoc
132
131
 
133
132
  def amend1(elem)
134
133
  elem.xpath(ns("./description/p")).each do |p|
135
- p.children = p.children.to_xml.strip
134
+ p.children = to_xml(p.children).strip
136
135
  amend_format(p)
137
136
  end
138
137
  super
@@ -144,7 +143,7 @@ module IsoDoc
144
143
  %(em strong).include?(para.children.first.name) and
145
144
  para.children = para.elements.first.children
146
145
  end
147
- para.children = "<strong><em>#{para.children.to_xml}</em></strong>"
146
+ para.children = "<strong><em>#{to_xml(para.children)}</em></strong>"
148
147
  end
149
148
 
150
149
  def section(docxml)
@@ -153,7 +152,7 @@ module IsoDoc
153
152
  end
154
153
 
155
154
  def boilerplate(docxml)
156
- docxml.xpath(ns("//clause[@id = 'boilerplate-participants']/"\
155
+ docxml.xpath(ns("//clause[@id = 'boilerplate-participants']/" \
157
156
  "clause/title")).each(&:remove)
158
157
  docxml.xpath(ns("//clause[@id = 'boilerplate-participants']/clause"))
159
158
  .each do |clause|
@@ -211,7 +210,7 @@ module IsoDoc
211
210
  def participant_officeholder_para(map, name, idx)
212
211
  name = "<strong>#{name}</strong>" if idx.zero?
213
212
  br = map["role"].size > 30 ? "<br/>" : ""
214
- "<p type='officeholder' align='center'>#{name}, #{br}"\
213
+ "<p type='officeholder' align='center'>#{name}, #{br}" \
215
214
  "<em>#{map['role']}</em></p>"
216
215
  end
217
216
 
@@ -15,7 +15,7 @@ module IsoDoc
15
15
  feedback_table(docxml)
16
16
  f = docxml.at("//div[@class = 'boilerplate-feedback']") or return
17
17
  docxml.at("//aside").previous = <<~FN
18
- <aside id="ftn0">#{f.remove.to_xml}</aside>
18
+ <aside id="ftn0">#{to_xml(f.remove)}</aside>
19
19
  FN
20
20
  end
21
21
 
@@ -103,7 +103,7 @@ module IsoDoc
103
103
  div.xpath(".//div").each { |d| d.replace(d.children) }
104
104
  div.elements.each_with_object([[]]) do |e, m|
105
105
  member = e.name == "p" && e["type"] == "officemember"
106
- (prev == member and m[-1] << e.to_xml) or m << [e.to_xml]
106
+ (prev == member and m[-1] << to_xml(e)) or m << [to_xml(e)]
107
107
  prev = member
108
108
  end.map(&:join)
109
109
  end
@@ -143,7 +143,7 @@ module IsoDoc
143
143
  i.zero? or div.elements.first.previous = "<p>&#xa0;</p>"
144
144
  i == 4 and
145
145
  div.xpath(".//p[br]").each do |p|
146
- p.replace(p.to_xml.gsub(%r{<br/>}, "</p><p>"))
146
+ p.replace(to_xml(p).gsub(%r{<br/>}, "</p><p>"))
147
147
  end
148
148
  feedback_style1(div, i)
149
149
  end
@@ -28,7 +28,7 @@ module IsoDoc
28
28
  end
29
29
  else
30
30
  t.children =
31
- "<p class='IEEEStdsTableColumnHead'>#{t.children.to_xml}</p>"
31
+ "<p class='IEEEStdsTableColumnHead'>#{to_xml(t.children)}</p>"
32
32
  end
33
33
  end
34
34
  end
@@ -45,9 +45,9 @@ module IsoDoc
45
45
 
46
46
  def tbody_head_cleanup(cell)
47
47
  cell.at("./p") or
48
- cell.children = "<p>#{cell.children.to_xml}</p>"
48
+ cell.children = "<p>#{to_xml(cell.children)}</p>"
49
49
  cell.xpath("./p").each do |p|
50
- p.replace p.to_xml.gsub(%r{<br/>}, "</p><p>")
50
+ p.replace to_xml(p).gsub(%r{<br/>}, "</p><p>")
51
51
  end
52
52
  end
53
53
 
@@ -58,7 +58,7 @@ module IsoDoc
58
58
  end
59
59
  else
60
60
  cell.children =
61
- "<p class='#{td_style(cell, 0)}'>#{cell.children.to_xml}</p>"
61
+ "<p class='#{td_style(cell, 0)}'>#{to_xml(cell.children)}</p>"
62
62
  end
63
63
  end
64
64
 
@@ -80,28 +80,28 @@ module IsoDoc
80
80
 
81
81
  def table_caption(docxml)
82
82
  docxml.xpath("//p[@class = 'TableTitle']").each do |s|
83
- s.children = s.children.to_xml
83
+ s.children = to_xml(s.children)
84
84
  .sub(/^#{@i18n.table}(\s+[A-Z0-9.]+)?/, "")
85
85
  end
86
86
  end
87
87
 
88
88
  def figure_caption(docxml)
89
89
  docxml.xpath("//p[@class = 'FigureTitle']").each do |s|
90
- s.children = s.children.to_xml
90
+ s.children = to_xml(s.children)
91
91
  .sub(/^#{@i18n.figure}(\s+[A-Z0-9.]+)?/, "")
92
92
  end
93
93
  end
94
94
 
95
95
  def example_caption(docxml)
96
96
  docxml.xpath("//p[@class = 'example-title']").each do |s|
97
- s.children = "<em>#{s.children.to_xml}</em>"
97
+ s.children = "<em>#{to_xml(s.children)}</em>"
98
98
  s["class"] = "IEEEStdsParagraph"
99
99
  end
100
100
  end
101
101
 
102
102
  def sourcecode_cleanup(docxml)
103
103
  docxml.xpath("//p[@class = 'Sourcecode']").each do |s|
104
- s.replace(s.to_xml.gsub(%r{<br/>}, "</p><p class='Sourcecode'>"))
104
+ s.replace(to_xml(s).gsub(%r{<br/>}, "</p><p class='Sourcecode'>"))
105
105
  end
106
106
  end
107
107
 
@@ -683,6 +683,9 @@
683
683
  </define>
684
684
  <define name="underline">
685
685
  <element name="underline">
686
+ <optional>
687
+ <attribute name="style"/>
688
+ </optional>
686
689
  <zeroOrMore>
687
690
  <ref name="PureTextElement"/>
688
691
  </zeroOrMore>
@@ -47,7 +47,7 @@
47
47
  </element>
48
48
  </define>
49
49
  <define name="DocumentType">
50
- <value>document</value>
50
+ <text/>
51
51
  </define>
52
52
  <define name="docsubtype">
53
53
  <element name="subdoctype">
@@ -2653,6 +2653,7 @@
2653
2653
  <value>full</value>
2654
2654
  <value>short</value>
2655
2655
  <value>id</value>
2656
+ <value>modspec</value>
2656
2657
  </choice>
2657
2658
  </define>
2658
2659
  <define name="erefTypeWithConnective">
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module IEEE
3
- VERSION = "0.1.3".freeze
3
+ VERSION = "1.0.0".freeze
4
4
  end
5
5
  end
@@ -25,7 +25,7 @@ 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.2.4"
28
+ spec.add_dependency "metanorma-standoc", "~> 2.3.0"
29
29
  spec.add_dependency "mnconvert", "~> 1.20"
30
30
 
31
31
  spec.add_development_dependency "debug"
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: 0.1.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-21 00:00:00.000000000 Z
11
+ date: 2022-12-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.2.4
19
+ version: 2.3.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.2.4
26
+ version: 2.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mnconvert
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -299,7 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
299
  - !ruby/object:Gem::Version
300
300
  version: '0'
301
301
  requirements: []
302
- rubygems_version: 3.3.7
302
+ rubygems_version: 3.3.26
303
303
  signing_key:
304
304
  specification_version: 4
305
305
  summary: Metanorma for the IEEE