metanorma-iso 2.4.8 → 2.5.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 +4 -4
- data/lib/isodoc/iso/base_convert.rb +8 -23
- data/lib/isodoc/iso/html_convert.rb +0 -12
- data/lib/isodoc/iso/init.rb +5 -6
- data/lib/isodoc/iso/iso.amendment.xsl +118 -47
- data/lib/isodoc/iso/iso.international-standard.xsl +118 -47
- data/lib/isodoc/iso/presentation_xml_convert.rb +59 -18
- data/lib/isodoc/iso/sections.rb +4 -44
- data/lib/isodoc/iso/word_convert.rb +24 -17
- data/lib/isodoc/iso/word_dis_cleanup.rb +9 -0
- data/lib/isodoc/iso/word_dis_convert.rb +31 -25
- data/lib/isodoc/iso/xref.rb +22 -35
- data/lib/metanorma/iso/boilerplate-fr.adoc +1 -1
- data/lib/metanorma/iso/cleanup.rb +9 -11
- data/lib/metanorma/iso/front.rb +7 -91
- data/lib/metanorma/iso/front_contributor.rb +144 -0
- data/lib/metanorma/iso/isodoc.rng +29 -4
- data/lib/metanorma/iso/validate.rb +2 -2
- data/lib/metanorma/iso/validate_requirements.rb +5 -5
- data/lib/metanorma/iso/validate_section.rb +6 -2
- data/lib/metanorma/iso/validate_style.rb +6 -6
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ab1010b198fb64456b71a06834ab3c1207417c16c765f6c5905cd18ff5a0dc8
|
4
|
+
data.tar.gz: c92bdd8228ce983eed939cb2b38b60b7ec631d37b64ea390e26e870700f7065b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de58d8b4fa0e039e153cd5a9d9637adaedf45e674cb59c113e2feb4eaa1444ca7d98badd5ac080687ec66ee19305e8b8677ea855c24b1df91ddae0c12464180a
|
7
|
+
data.tar.gz: 48d297855239fec0dd80dbb6db404bf4b8c2a79ba49051d275f56f3dff579bda479f30ba71ba1931170088c7e3c0014878b92af7d91177151f625cdf359e7ef9
|
@@ -6,7 +6,7 @@ module IsoDoc
|
|
6
6
|
module Iso
|
7
7
|
module BaseConvert
|
8
8
|
def convert1(docxml, filename, dir)
|
9
|
-
if amd(docxml)
|
9
|
+
if amd?(docxml)
|
10
10
|
@oldsuppressheadingnumbers = @suppressheadingnumbers
|
11
11
|
@suppressheadingnumbers = true
|
12
12
|
end
|
@@ -130,22 +130,13 @@ module IsoDoc
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
def
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
bibliography isoxml, out
|
141
|
-
end
|
142
|
-
|
143
|
-
def clause_etc(isoxml, out, num)
|
144
|
-
isoxml.xpath(ns("//sections/clause[not(@type = 'scope')] | " \
|
145
|
-
"//sections/terms | //sections/definitions"))
|
146
|
-
.each do |f|
|
147
|
-
clause_etc1(f, out, num)
|
148
|
-
end
|
133
|
+
def top_element_render(elem, out)
|
134
|
+
if %w(clause terms definitions).include?(elem.name) &&
|
135
|
+
elem.parent.name == "sections" &&
|
136
|
+
elem["type"] != "scope"
|
137
|
+
clause_etc1(elem, out, 0)
|
138
|
+
else super
|
139
|
+
end
|
149
140
|
end
|
150
141
|
|
151
142
|
def clause_etc1(clause, out, num)
|
@@ -161,12 +152,6 @@ module IsoDoc
|
|
161
152
|
end
|
162
153
|
end
|
163
154
|
|
164
|
-
def indexsect(isoxml, out)
|
165
|
-
isoxml.xpath(ns("//indexsect")).each do |i|
|
166
|
-
clause_parse(i, out)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
155
|
def ol_attrs(node)
|
171
156
|
super.merge(start: node["start"]).compact
|
172
157
|
end
|
@@ -81,18 +81,6 @@ module IsoDoc
|
|
81
81
|
docxml
|
82
82
|
end
|
83
83
|
|
84
|
-
def middle(isoxml, out)
|
85
|
-
middle_title(isoxml, out)
|
86
|
-
middle_admonitions(isoxml, out)
|
87
|
-
scope isoxml, out, 0
|
88
|
-
norm_ref isoxml, out, 0
|
89
|
-
clause_etc isoxml, out, 0
|
90
|
-
annex isoxml, out
|
91
|
-
bibliography isoxml, out
|
92
|
-
indexsect isoxml, out
|
93
|
-
end
|
94
|
-
|
95
|
-
|
96
84
|
def html_toc1(ulist)
|
97
85
|
u2 = nil
|
98
86
|
ulist.xpath("./li").each do |l|
|
data/lib/isodoc/iso/init.rb
CHANGED
@@ -20,7 +20,7 @@ module IsoDoc
|
|
20
20
|
i18nyaml: i18nyaml || @i18nyaml)
|
21
21
|
end
|
22
22
|
|
23
|
-
def amd(docxml)
|
23
|
+
def amd?(docxml)
|
24
24
|
doctype = docxml.at(ns("//bibdata/ext/doctype"))&.text
|
25
25
|
%w(amendment technical-corrigendum).include? doctype
|
26
26
|
end
|
@@ -44,16 +44,15 @@ module IsoDoc
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def std_docid_semantic1(id)
|
47
|
-
ids = id.split(/
|
48
|
-
|
49
|
-
.include?(ids[0].sub(/\/.*$/, "")) or
|
50
|
-
return id
|
47
|
+
ids = id.split(/(\p{Zs})/)
|
48
|
+
agency?(ids[0].sub(/\/.*$/, "")) or return id
|
51
49
|
ids.map! do |i|
|
52
50
|
if %w(GUIDE TR TS DIR).include?(i)
|
53
51
|
"<span class='stddocNumber'>#{i}</span>"
|
52
|
+
elsif /\p{Zs}/.match?(i) then i
|
54
53
|
else std_docid_semantic_full(i)
|
55
54
|
end
|
56
|
-
end.join
|
55
|
+
end.join
|
57
56
|
end
|
58
57
|
|
59
58
|
def std_docid_semantic_full(ident)
|
@@ -1353,38 +1353,35 @@
|
|
1353
1353
|
<xsl:call-template name="insertHeaderFooter"/>
|
1354
1354
|
<fo:flow flow-name="xsl-region-body">
|
1355
1355
|
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
<xsl:value-of select="$title-en"/>
|
1360
|
-
</fo:block>
|
1361
|
-
-->
|
1356
|
+
<!-- Information and documentation — Codes for transcription systems -->
|
1357
|
+
<!-- <fo:block-container>
|
1358
|
+
|
1362
1359
|
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1363
|
-
|
1360
|
+
|
1364
1361
|
<fo:block role="SKIP">
|
1365
|
-
|
1362
|
+
|
1366
1363
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
|
1367
|
-
|
1364
|
+
|
1368
1365
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
|
1369
|
-
|
1366
|
+
|
1370
1367
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
|
1371
1368
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1372
1369
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1373
1370
|
</xsl:apply-templates>
|
1374
|
-
|
1371
|
+
|
1375
1372
|
</fo:block>
|
1376
1373
|
<fo:block role="SKIP">
|
1377
1374
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
|
1378
1375
|
</fo:block>
|
1379
|
-
|
1376
|
+
|
1380
1377
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
|
1381
1378
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1382
1379
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1383
1380
|
</xsl:apply-templates>
|
1384
|
-
|
1381
|
+
|
1385
1382
|
</fo:block>
|
1386
|
-
|
1387
|
-
</fo:block-container>
|
1383
|
+
|
1384
|
+
</fo:block-container> -->
|
1388
1385
|
<!-- Clause(s) -->
|
1389
1386
|
<fo:block>
|
1390
1387
|
|
@@ -1757,6 +1754,31 @@
|
|
1757
1754
|
</xsl:if>
|
1758
1755
|
</xsl:template>
|
1759
1756
|
|
1757
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']" priority="4">
|
1758
|
+
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1759
|
+
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
|
1760
|
+
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1761
|
+
</xsl:if>
|
1762
|
+
<xsl:apply-templates/>
|
1763
|
+
</fo:block>
|
1764
|
+
</xsl:template>
|
1765
|
+
|
1766
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']/iso:span[@class = 'nonboldtitle']" priority="3">
|
1767
|
+
<!-- Example: <span class="nonboldtitle">Part 1:</span> -->
|
1768
|
+
<fo:block font-weight="normal" margin-top="12pt" line-height="1.1" role="SKIP">
|
1769
|
+
<xsl:apply-templates/>
|
1770
|
+
</fo:block>
|
1771
|
+
</xsl:template>
|
1772
|
+
|
1773
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle2']" priority="4">
|
1774
|
+
<!-- Example: <p class="zzSTDTitle2" displayorder="3">AMENDMENT 1: Mass fraction of extraneous matter, milled rice (nonglutinous), sample dividers and recommendations relating to storage and transport conditions</p> -->
|
1775
|
+
<xsl:if test="$doctype = 'amendment'">
|
1776
|
+
<fo:block font-size="18pt" margin-top="12pt" margin-bottom="20pt" margin-right="0mm" font-weight="normal" line-height="1.1" role="H1">
|
1777
|
+
<xsl:apply-templates/>
|
1778
|
+
</fo:block>
|
1779
|
+
</xsl:if>
|
1780
|
+
</xsl:template>
|
1781
|
+
|
1760
1782
|
<!-- ==================== -->
|
1761
1783
|
<!-- END display titles -->
|
1762
1784
|
<!-- ==================== -->
|
@@ -2652,11 +2674,26 @@
|
|
2652
2674
|
<xsl:value-of select="$font_extended"/><xsl:text>, </xsl:text>
|
2653
2675
|
</xsl:if>
|
2654
2676
|
|
2655
|
-
<xsl:
|
2677
|
+
<xsl:variable name="font_family" select="."/>
|
2656
2678
|
|
2657
|
-
<xsl:
|
2658
|
-
<xsl:
|
2659
|
-
|
2679
|
+
<xsl:choose>
|
2680
|
+
<xsl:when test="$additional_fonts = ''">
|
2681
|
+
<xsl:value-of select="$font_family"/>
|
2682
|
+
</xsl:when>
|
2683
|
+
<xsl:otherwise> <!-- $additional_fonts != '' -->
|
2684
|
+
<xsl:choose>
|
2685
|
+
<xsl:when test="contains($font_family, ',')">
|
2686
|
+
<xsl:value-of select="substring-before($font_family, ',')"/>
|
2687
|
+
<xsl:text>, </xsl:text><xsl:value-of select="$additional_fonts"/>
|
2688
|
+
<xsl:text>, </xsl:text><xsl:value-of select="substring-after($font_family, ',')"/>
|
2689
|
+
</xsl:when>
|
2690
|
+
<xsl:otherwise>
|
2691
|
+
<xsl:value-of select="$font_family"/>
|
2692
|
+
<xsl:text>, </xsl:text><xsl:value-of select="$additional_fonts"/>
|
2693
|
+
</xsl:otherwise>
|
2694
|
+
</xsl:choose>
|
2695
|
+
</xsl:otherwise>
|
2696
|
+
</xsl:choose>
|
2660
2697
|
</xsl:attribute>
|
2661
2698
|
</xsl:when>
|
2662
2699
|
<xsl:otherwise>
|
@@ -5330,21 +5367,21 @@
|
|
5330
5367
|
|
5331
5368
|
<xsl:template match="*[local-name()='table']/*[local-name()='note' or local-name() = 'example']" priority="2">
|
5332
5369
|
|
5333
|
-
|
5370
|
+
<fo:block xsl:use-attribute-sets="table-note-style">
|
5334
5371
|
|
5335
|
-
|
5372
|
+
<xsl:call-template name="refine_table-note-style"/>
|
5336
5373
|
|
5337
|
-
|
5338
|
-
|
5374
|
+
<!-- Table's note/example name (NOTE, for example) -->
|
5375
|
+
<fo:inline xsl:use-attribute-sets="table-note-name-style">
|
5339
5376
|
|
5340
|
-
|
5377
|
+
<xsl:call-template name="refine_table-note-name-style"/>
|
5341
5378
|
|
5342
|
-
|
5379
|
+
<xsl:apply-templates select="*[local-name() = 'name']"/>
|
5343
5380
|
|
5344
|
-
|
5381
|
+
</fo:inline>
|
5345
5382
|
|
5346
|
-
|
5347
|
-
|
5383
|
+
<xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
|
5384
|
+
</fo:block>
|
5348
5385
|
|
5349
5386
|
</xsl:template> <!-- table/note -->
|
5350
5387
|
|
@@ -6429,6 +6466,9 @@
|
|
6429
6466
|
<!-- END Definition List -->
|
6430
6467
|
<!-- ===================== -->
|
6431
6468
|
|
6469
|
+
<!-- default: ignore title in sections/p -->
|
6470
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]" priority="3"/>
|
6471
|
+
|
6432
6472
|
<!-- ========================= -->
|
6433
6473
|
<!-- Rich text formatting -->
|
6434
6474
|
<!-- ========================= -->
|
@@ -6512,7 +6552,7 @@
|
|
6512
6552
|
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
|
6513
6553
|
<xsl:template match="*[local-name()='tt']/text()" priority="2">
|
6514
6554
|
<xsl:choose>
|
6515
|
-
<xsl:when test="java:replaceAll(java:java.lang.String.new(.),
|
6555
|
+
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), $regex_url_start, '$2') != ''">
|
6516
6556
|
<!-- url -->
|
6517
6557
|
<xsl:call-template name="add-zero-spaces-link-java"/>
|
6518
6558
|
</xsl:when>
|
@@ -7045,10 +7085,13 @@
|
|
7045
7085
|
</xsl:choose>
|
7046
7086
|
</xsl:variable>
|
7047
7087
|
|
7088
|
+
<!-- replace sequence #x200B to one ​ -->
|
7089
|
+
<xsl:variable name="text10" select="java:replaceAll(java:java.lang.String.new($text9), '\u200b{2,}', '')"/>
|
7090
|
+
|
7048
7091
|
<!-- replace sequence #x200B and space TO space -->
|
7049
|
-
<xsl:variable name="
|
7092
|
+
<xsl:variable name="text11" select="java:replaceAll(java:java.lang.String.new($text10), '\u200b ', ' ')"/>
|
7050
7093
|
|
7051
|
-
<xsl:value-of select="$
|
7094
|
+
<xsl:value-of select="$text11"/>
|
7052
7095
|
</xsl:template>
|
7053
7096
|
|
7054
7097
|
<xsl:template name="add-zero-spaces-link-java">
|
@@ -7058,8 +7101,12 @@
|
|
7058
7101
|
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
7059
7102
|
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, comma, slash, @ -->
|
7060
7103
|
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/|@)','$1')"/>
|
7104
|
+
|
7105
|
+
<!-- replace sequence #x200B to one ​ -->
|
7106
|
+
<xsl:variable name="url2" select="java:replaceAll(java:java.lang.String.new($url), '\u200b{2,}', '')"/>
|
7107
|
+
|
7061
7108
|
<!-- remove zero-width space at the end -->
|
7062
|
-
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($
|
7109
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url2), '$', '')"/>
|
7063
7110
|
</xsl:template>
|
7064
7111
|
|
7065
7112
|
<!-- add zero space after dash character (for table's entries) -->
|
@@ -8556,8 +8603,12 @@
|
|
8556
8603
|
<xsl:variable name="isAdded" select="../@added"/>
|
8557
8604
|
<xsl:variable name="isDeleted" select="../@deleted"/>
|
8558
8605
|
<xsl:choose>
|
8559
|
-
<xsl:when test="ancestor::*[local-name() = 'title']">
|
8606
|
+
<xsl:when test="ancestor::*[local-name() = 'title'] or not(parent::*[local-name() = 'figure']) or parent::*[local-name() = 'p']">
|
8560
8607
|
<fo:inline padding-left="1mm" padding-right="1mm">
|
8608
|
+
<xsl:if test="not(parent::*[local-name() = 'figure']) or parent::*[local-name() = 'p']">
|
8609
|
+
<xsl:attribute name="padding-left">0mm</xsl:attribute>
|
8610
|
+
<xsl:attribute name="padding-right">0mm</xsl:attribute>
|
8611
|
+
</xsl:if>
|
8561
8612
|
<xsl:variable name="src">
|
8562
8613
|
<xsl:call-template name="image_src"/>
|
8563
8614
|
</xsl:variable>
|
@@ -8590,25 +8641,45 @@
|
|
8590
8641
|
<fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style">
|
8591
8642
|
<xsl:if test="not(@mimetype = 'image/svg+xml') and ../*[local-name() = 'name'] and not(ancestor::*[local-name() = 'table'])">
|
8592
8643
|
|
8593
|
-
<xsl:
|
8594
|
-
<xsl:
|
8595
|
-
<xsl:
|
8596
|
-
|
8597
|
-
|
8598
|
-
</xsl:variable>
|
8644
|
+
<xsl:if test="@width != '' and @width != 'auto' and @width != 'text-width' and @width != 'full-page-width' and @width != 'narrow'">
|
8645
|
+
<xsl:attribute name="width">
|
8646
|
+
<xsl:value-of select="@width"/>
|
8647
|
+
</xsl:attribute>
|
8648
|
+
</xsl:if>
|
8599
8649
|
|
8600
|
-
<xsl:
|
8650
|
+
<xsl:if test="@height != '' and @height != 'auto'">
|
8651
|
+
<xsl:attribute name="height">
|
8652
|
+
<xsl:value-of select="@height"/>
|
8653
|
+
</xsl:attribute>
|
8654
|
+
</xsl:if>
|
8601
8655
|
|
8602
|
-
|
8656
|
+
<xsl:choose>
|
8657
|
+
<xsl:when test="@width != '' and @width != 'auto' and @height != '' and @height != 'auto'">
|
8658
|
+
<xsl:attribute name="scaling">non-uniform</xsl:attribute>
|
8659
|
+
</xsl:when>
|
8660
|
+
<xsl:otherwise>
|
8603
8661
|
|
8604
|
-
|
8662
|
+
<xsl:variable name="img_src">
|
8663
|
+
<xsl:choose>
|
8664
|
+
<xsl:when test="not(starts-with(@src, 'data:'))"><xsl:value-of select="concat($basepath, @src)"/></xsl:when>
|
8665
|
+
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
|
8666
|
+
</xsl:choose>
|
8667
|
+
</xsl:variable>
|
8605
8668
|
|
8606
|
-
|
8607
|
-
<xsl:if test="number($scale) < 100">
|
8669
|
+
<xsl:variable name="image_width_effective">
|
8608
8670
|
|
8609
|
-
|
8671
|
+
<xsl:value-of select="$width_effective"/>
|
8610
8672
|
|
8611
|
-
|
8673
|
+
</xsl:variable>
|
8674
|
+
|
8675
|
+
<xsl:variable name="scale" select="java:org.metanorma.fop.Util.getImageScale($img_src, $image_width_effective, $height_effective)"/>
|
8676
|
+
<xsl:if test="number($scale) < 100">
|
8677
|
+
|
8678
|
+
<xsl:attribute name="content-width"><xsl:value-of select="$scale"/>%</xsl:attribute>
|
8679
|
+
|
8680
|
+
</xsl:if>
|
8681
|
+
</xsl:otherwise>
|
8682
|
+
</xsl:choose>
|
8612
8683
|
|
8613
8684
|
</xsl:if>
|
8614
8685
|
|
@@ -12266,7 +12337,7 @@
|
|
12266
12337
|
<xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
|
12267
12338
|
<xsl:apply-templates mode="update_xml_step1"/>
|
12268
12339
|
</xsl:template>
|
12269
|
-
<xsl:template match="*[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12340
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]/*[local-name() = 'span'][@class] | *[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12270
12341
|
<xsl:copy>
|
12271
12342
|
<xsl:copy-of select="@*"/>
|
12272
12343
|
<xsl:apply-templates mode="update_xml_step1"/>
|