metanorma-bipm 1.0.7 → 1.1.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: 9e92f453fd51171c023324636e3d16215d4d2af372c2975da080d9b7f81f5ded
4
- data.tar.gz: 7066c446be4aa7b01e18c685b7c86b0e6bfd8883fc702e984d8a9fb0448df04f
3
+ metadata.gz: a53880abd1573a497cf5de514c78f002e9ad698fb7f9899babde3840132af5ee
4
+ data.tar.gz: 47c1fbccab81b1614f8692c7605d77c25d16d7324a5113b2d615b560f3e2a136
5
5
  SHA512:
6
- metadata.gz: 7c11d1f4e93dde04a7f46498906bd8143a8bc7a3fb917e86706436894cc2989a7b4ac373c29ae29061f4e0d5967216c45b1e4724cac84ba664eb1fd4ec052cbb
7
- data.tar.gz: 28999ac1b868021ed0fe9aa63ba01f3dee7d66a3e111586624f5576f72962c06ea993be25cd52cd9d64ffa3fdbe035b6daf196fdc2e08b05ddce506ad9a31f43
6
+ metadata.gz: 525c38fd4e67b10703a2811fd0f5b45958bd00eff0675b23ccc427d7a03d4755c059ace2209dd60c78823666cbf8af6cbf6015d16029dc6f68a088634fbac470
7
+ data.tar.gz: 9598204d734b04605900681eaf3da059e8f2a70002858156e9bfb23694e91b4114786d22824cf182696b3b53366bf92f7df97edefae21035c30d31427246fa72
@@ -1,5 +1,5 @@
1
1
  require "asciidoctor/standoc/converter"
2
- require 'asciidoctor/generic/converter'
2
+ require "asciidoctor/generic/converter"
3
3
 
4
4
  module Asciidoctor
5
5
  module BIPM
@@ -19,20 +19,26 @@ module Asciidoctor
19
19
  end
20
20
 
21
21
  def org_abbrev
22
- { org_name_long => configuration.organization_name_short }
22
+ { org_name_long => configuration.organization_name_short }
23
23
  end
24
24
 
25
25
  def metadata_committee(node, xml)
26
26
  return unless node.attr("committee-en") || node.attr("committee-fr")
27
+
27
28
  xml.editorialgroup do |a|
28
29
  metadata_committee1(node, a)
29
- metadata_committee2(node, a)
30
+ i = 2
31
+ while node.attr("committee-en_#{i}") || node.attr("committee-fr_#{i}")
32
+ metadata_committee2(node, a, i)
33
+ i += 1
34
+ end
30
35
  metadata_workgroup(node, a)
31
36
  end
32
37
  end
33
38
 
34
- def metadata_committee1(node, a)
35
- a.committee **attr_code(acronym: node.attr("committee-acronym")) do |c|
39
+ def metadata_committee1(node, xml)
40
+ xml.committee **attr_code(acronym:
41
+ node.attr("committee-acronym")) do |c|
36
42
  e = node.attr("committee-en") and
37
43
  c.variant e, language: "en", script: "Latn"
38
44
  e = node.attr("committee-fr") and
@@ -40,24 +46,25 @@ module Asciidoctor
40
46
  end
41
47
  end
42
48
 
43
- def metadata_committee2(node, a)
44
- i = 2
45
- while node.attr("committee-en_#{i}") || node.attr("committee-fr_#{i}") do
46
- a.committee **attr_code(acronym: node.attr("committee-acronym_#{i}")) do |c|
47
- e = node.attr("committee-en_#{i}") and c.variant e, language: "en", script: "Latn"
48
- e = node.attr("committee-fr_#{i}") and c.variant e, language: "fr", script: "Latn"
49
+ def metadata_committee2(node, xml, num)
50
+ xml.committee **attr_code(acronym:
51
+ node.attr("committee-acronym_#{num}")) do |c|
52
+ %w(en fr).each do |lg|
53
+ e = node.attr("committee-#{lg}_#{num}") and
54
+ c.variant e, language: lg, script: "Latn"
49
55
  end
50
- i += 1
51
56
  end
52
57
  end
53
58
 
54
- def metadata_workgroup(node, a)
55
- a.workgroup node.attr("workgroup"),
56
- **attr_code(acronym: node.attr("workgroup-acronym"))
59
+ def metadata_workgroup(node, xml)
60
+ xml.workgroup(node.attr("workgroup"),
61
+ **attr_code(acronym: node.attr("workgroup-acronym")))
57
62
  i = 2
58
- while node.attr("workgroup_#{i}") do
59
- a.workgroup node.attr("workgroup_#{i}"),
63
+ while node.attr("workgroup_#{i}")
64
+ xml.workgroup(
65
+ node.attr("workgroup_#{i}"),
60
66
  **attr_code(acronym: node.attr("workgroup-acronym_#{i}"))
67
+ )
61
68
  i += 1
62
69
  end
63
70
  end
@@ -76,13 +83,15 @@ module Asciidoctor
76
83
  draft = node.attr("supersedes-draft#{suffix}")
77
84
  edition = node.attr("supersedes-edition#{suffix}")
78
85
  return false unless d || draft || edition
86
+
79
87
  relation_supersedes_self1(xml, d, edition, draft)
80
88
  end
81
89
 
82
- def relation_supersedes_self1(xml, d, edition, draft)
90
+ def relation_supersedes_self1(xml, date, edition, draft)
83
91
  xml.relation **{ type: "supersedes" } do |r|
84
92
  r.bibitem do |b|
85
- d and b.date d, **{ type: edition ? "published" : "circulated" }
93
+ date and b.date(date,
94
+ **{ type: edition ? "published" : "circulated" })
86
95
  edition and b.edition edition
87
96
  draft and b.version do |v|
88
97
  v.draft draft
@@ -91,13 +100,13 @@ module Asciidoctor
91
100
  end
92
101
  end
93
102
 
94
- def personal_role(node, c, suffix)
103
+ def personal_role(node, xml, suffix)
95
104
  role = node.attr("role#{suffix}") || "author"
96
105
  unless %w(author editor).include?(role.downcase)
97
106
  desc = role
98
107
  role = "editor"
99
108
  end
100
- c.role desc, **{ type: role.downcase }
109
+ xml.role desc, **{ type: role.downcase }
101
110
  end
102
111
 
103
112
  def title(node, xml)
@@ -106,7 +115,7 @@ module Asciidoctor
106
115
  xml.title **attr_code(at.merge(type: "main")) do |t1|
107
116
  t1 << Metanorma::Utils::asciidoc_sub(node.attr("title-#{lang}"))
108
117
  end
109
- %w(cover appendix annex part subpart).each do |w|
118
+ %w(cover appendix annex part subpart provenance).each do |w|
110
119
  typed_title(node, xml, lang, w)
111
120
  end
112
121
  end
@@ -115,6 +124,7 @@ module Asciidoctor
115
124
  def typed_title(node, xml, lang, type)
116
125
  at = { language: lang, format: "text/plain" }
117
126
  return unless title = node.attr("title-#{type}-#{lang}")
127
+
118
128
  xml.title **attr_code(at.merge(type: type)) do |t1|
119
129
  t1 << Metanorma::Utils::asciidoc_sub(title)
120
130
  end
@@ -122,7 +132,7 @@ module Asciidoctor
122
132
 
123
133
  def sectiontype_streamline(ret)
124
134
  case ret
125
- when "introduction" then "clause"
135
+ when "introduction" then @jcgm ? "introduction" : "clause"
126
136
  else
127
137
  super
128
138
  end
@@ -130,13 +140,13 @@ module Asciidoctor
130
140
 
131
141
  def inline_anchor_xref_attrs(node)
132
142
  flags = %w(pagenumber nosee nopage).each_with_object({}) do |w, m|
133
- if /#{w}%/.match(node.text)
143
+ if /#{w}%/.match?(node.text)
134
144
  node.text = node.text.sub(/#{w}%/, "")
135
145
  m[w] = true
136
146
  end
137
147
  end
138
148
  ret = super
139
- flags.keys.each { |k| ret[k.to_sym] = true }
149
+ flags.each_key { |k| ret[k.to_sym] = true }
140
150
  ret
141
151
  end
142
152
 
@@ -154,9 +164,6 @@ module Asciidoctor
154
164
  super.merge(attr_code(start: node.attr("start")))
155
165
  end
156
166
 
157
- def section_names_terms_cleanup(x)
158
- end
159
-
160
167
  def committee_validate(xml)
161
168
  committees = Array(configuration&.committees) || return
162
169
  committees.empty? and return
@@ -173,21 +180,44 @@ module Asciidoctor
173
180
  end
174
181
 
175
182
  def boilerplate_file(xmldoc)
176
- return super unless xmldoc&.at("//bibdata/ext/editorialgroup/committee/@acronym")&.value == "JCGM"
183
+ return super unless @jcgm
184
+
177
185
  File.join(File.dirname(__FILE__), "boilerplate-jcgm-en.xml")
178
186
  end
179
187
 
188
+ def sections_cleanup(xml)
189
+ super
190
+ jcgm_untitled_sections_cleanup(xml) if @jcgm
191
+ end
192
+
193
+ def jcgm_untitled_sections_cleanup(xml)
194
+ xml.xpath("//clause//clause | //annex//clause").each do |c|
195
+ next if !c&.at("./title")&.text&.empty?
196
+
197
+ c["inline-header"] = true
198
+ end
199
+ end
200
+
201
+ def section_names_terms_cleanup(xml); end
202
+
203
+ def section_names_refs_cleanup(xml); end
204
+
180
205
  def mathml_mi_italics
181
206
  { uppergreek: false, upperroman: false,
182
207
  lowergreek: false, lowerroman: true }
183
208
  end
184
209
 
210
+ def document(node)
211
+ @jcgm = node.attr("committee-acronym") == "JCGM"
212
+ super
213
+ end
214
+
185
215
  def outputs(node, ret)
186
- File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
187
- presentation_xml_converter(node).convert(@filename + ".xml")
188
- html_converter(node).convert(@filename + ".presentation.xml",
216
+ File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
217
+ presentation_xml_converter(node).convert("#{@filename}.xml")
218
+ html_converter(node).convert("#{@filename}.presentation.xml",
189
219
  nil, false, "#{@filename}.html")
190
- pdf_converter(node)&.convert(@filename + ".presentation.xml",
220
+ pdf_converter(node)&.convert("#{@filename}.presentation.xml",
191
221
  nil, false, "#{@filename}.pdf")
192
222
  end
193
223
 
@@ -201,6 +231,7 @@ module Asciidoctor
201
231
 
202
232
  def pdf_converter(node)
203
233
  return nil if node.attr("no-pdf")
234
+
204
235
  IsoDoc::BIPM::PdfConvert.new(doc_extract_attributes(node))
205
236
  end
206
237
  end
@@ -86,6 +86,35 @@
86
86
  <text/>
87
87
  </element>
88
88
  </define>
89
+ <define name="erefType">
90
+ <optional>
91
+ <attribute name="normative">
92
+ <data type="boolean"/>
93
+ </attribute>
94
+ </optional>
95
+ <attribute name="citeas"/>
96
+ <attribute name="type">
97
+ <ref name="ReferenceFormat"/>
98
+ </attribute>
99
+ <optional>
100
+ <attribute name="alt"/>
101
+ </optional>
102
+ <optional>
103
+ <attribute name="case">
104
+ <choice>
105
+ <value>capital</value>
106
+ <value>lowercase</value>
107
+ </choice>
108
+ </attribute>
109
+ </optional>
110
+ <optional>
111
+ <attribute name="droploc">
112
+ <data type="boolean"/>
113
+ </attribute>
114
+ </optional>
115
+ <ref name="CitationType"/>
116
+ <text/>
117
+ </define>
89
118
  <define name="ul">
90
119
  <element name="ul">
91
120
  <attribute name="id">
@@ -775,6 +804,78 @@
775
804
  <ref name="paragraph"/>
776
805
  </element>
777
806
  </define>
807
+ <define name="em">
808
+ <element name="em">
809
+ <zeroOrMore>
810
+ <choice>
811
+ <ref name="PureTextElement"/>
812
+ <ref name="stem"/>
813
+ <ref name="index"/>
814
+ </choice>
815
+ </zeroOrMore>
816
+ </element>
817
+ </define>
818
+ <define name="strong">
819
+ <element name="strong">
820
+ <zeroOrMore>
821
+ <choice>
822
+ <ref name="PureTextElement"/>
823
+ <ref name="stem"/>
824
+ <ref name="index"/>
825
+ </choice>
826
+ </zeroOrMore>
827
+ </element>
828
+ </define>
829
+ <define name="tt">
830
+ <element name="tt">
831
+ <zeroOrMore>
832
+ <choice>
833
+ <ref name="PureTextElement"/>
834
+ <ref name="index"/>
835
+ </choice>
836
+ </zeroOrMore>
837
+ </element>
838
+ </define>
839
+ <define name="keyword">
840
+ <element name="keyword">
841
+ <zeroOrMore>
842
+ <choice>
843
+ <ref name="PureTextElement"/>
844
+ <ref name="index"/>
845
+ </choice>
846
+ </zeroOrMore>
847
+ </element>
848
+ </define>
849
+ <define name="strike">
850
+ <element name="strike">
851
+ <zeroOrMore>
852
+ <choice>
853
+ <ref name="PureTextElement"/>
854
+ <ref name="index"/>
855
+ </choice>
856
+ </zeroOrMore>
857
+ </element>
858
+ </define>
859
+ <define name="underline">
860
+ <element name="underline">
861
+ <zeroOrMore>
862
+ <choice>
863
+ <ref name="PureTextElement"/>
864
+ <ref name="index"/>
865
+ </choice>
866
+ </zeroOrMore>
867
+ </element>
868
+ </define>
869
+ <define name="smallcap">
870
+ <element name="smallcap">
871
+ <zeroOrMore>
872
+ <choice>
873
+ <ref name="PureTextElement"/>
874
+ <ref name="index"/>
875
+ </choice>
876
+ </zeroOrMore>
877
+ </element>
878
+ </define>
778
879
  </include>
779
880
  <!-- end overrides -->
780
881
  <define name="colgroup">
@@ -793,7 +894,35 @@
793
894
  <value>internal</value>
794
895
  </define>
795
896
  <define name="TextElement" combine="choice">
796
- <ref name="concept"/>
897
+ <choice>
898
+ <ref name="concept"/>
899
+ <ref name="add"/>
900
+ <ref name="del"/>
901
+ </choice>
902
+ </define>
903
+ <define name="add">
904
+ <element name="add">
905
+ <choice>
906
+ <ref name="PureTextElement"/>
907
+ <ref name="eref"/>
908
+ <ref name="stem"/>
909
+ <ref name="keyword"/>
910
+ <ref name="xref"/>
911
+ <ref name="hyperlink"/>
912
+ </choice>
913
+ </element>
914
+ </define>
915
+ <define name="del">
916
+ <element name="del">
917
+ <choice>
918
+ <ref name="PureTextElement"/>
919
+ <ref name="eref"/>
920
+ <ref name="stem"/>
921
+ <ref name="keyword"/>
922
+ <ref name="xref"/>
923
+ <ref name="hyperlink"/>
924
+ </choice>
925
+ </element>
797
926
  </define>
798
927
  <define name="concept">
799
928
  <element name="concept">
@@ -4,6 +4,7 @@
4
4
 
5
5
  <xsl:param name="svg_images"/>
6
6
  <xsl:variable name="images" select="document($svg_images)"/>
7
+ <xsl:param name="basepath"/>
7
8
 
8
9
  <xsl:param name="initial_page_number"/>
9
10
  <xsl:param name="doc_split_by_language"/>
@@ -4630,12 +4631,18 @@
4630
4631
 
4631
4632
  </xsl:attribute-set><xsl:attribute-set name="admitted-style">
4632
4633
 
4633
-
4634
+
4634
4635
  </xsl:attribute-set><xsl:attribute-set name="deprecates-style">
4635
4636
 
4636
4637
  </xsl:attribute-set><xsl:attribute-set name="definition-style">
4637
4638
 
4638
4639
 
4640
+ </xsl:attribute-set><xsl:attribute-set name="add-style">
4641
+ <xsl:attribute name="color">red</xsl:attribute>
4642
+ <xsl:attribute name="text-decoration">underline</xsl:attribute>
4643
+ </xsl:attribute-set><xsl:attribute-set name="del-style">
4644
+ <xsl:attribute name="color">red</xsl:attribute>
4645
+ <xsl:attribute name="text-decoration">line-through</xsl:attribute>
4639
4646
  </xsl:attribute-set><xsl:template name="processPrefaceSectionsDefault_Contents">
4640
4647
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='abstract']" mode="contents"/>
4641
4648
  <xsl:apply-templates select="/*/*[local-name()='preface']/*[local-name()='foreword']" mode="contents"/>
@@ -6101,8 +6108,12 @@
6101
6108
  <fo:inline text-decoration="underline">
6102
6109
  <xsl:apply-templates/>
6103
6110
  </fo:inline>
6111
+ </xsl:template><xsl:template match="*[local-name()='add']">
6112
+ <fo:inline xsl:use-attribute-sets="add-style">
6113
+ <xsl:apply-templates/>
6114
+ </fo:inline>
6104
6115
  </xsl:template><xsl:template match="*[local-name()='del']">
6105
- <fo:inline font-size="10pt" color="red" text-decoration="line-through">
6116
+ <fo:inline xsl:use-attribute-sets="del-style">
6106
6117
  <xsl:apply-templates/>
6107
6118
  </fo:inline>
6108
6119
  </xsl:template><xsl:template match="*[local-name()='hi']">
@@ -6740,22 +6751,37 @@
6740
6751
  <xsl:apply-templates/>
6741
6752
  </fo:block>
6742
6753
  </xsl:template><xsl:template match="*[local-name() = 'image']">
6743
- <fo:block xsl:use-attribute-sets="image-style">
6744
-
6745
-
6746
- <xsl:variable name="src">
6747
- <xsl:choose>
6748
- <xsl:when test="@mimetype = 'image/svg+xml' and $images/images/image[@id = current()/@id]">
6749
- <xsl:value-of select="$images/images/image[@id = current()/@id]/@src"/>
6750
- </xsl:when>
6751
- <xsl:otherwise>
6752
- <xsl:value-of select="@src"/>
6753
- </xsl:otherwise>
6754
- </xsl:choose>
6755
- </xsl:variable>
6756
-
6757
- <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style"/>
6758
- </fo:block>
6754
+ <xsl:choose>
6755
+ <xsl:when test="ancestor::*[local-name() = 'title']">
6756
+ <fo:inline padding-left="1mm" padding-right="1mm">
6757
+ <xsl:variable name="src">
6758
+ <xsl:call-template name="image_src"/>
6759
+ </xsl:variable>
6760
+ <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" vertical-align="middle"/>
6761
+ </fo:inline>
6762
+ </xsl:when>
6763
+ <xsl:otherwise>
6764
+ <fo:block xsl:use-attribute-sets="image-style">
6765
+
6766
+ <xsl:variable name="src">
6767
+ <xsl:call-template name="image_src"/>
6768
+ </xsl:variable>
6769
+ <fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style"/>
6770
+ </fo:block>
6771
+ </xsl:otherwise>
6772
+ </xsl:choose>
6773
+ </xsl:template><xsl:template name="image_src">
6774
+ <xsl:choose>
6775
+ <xsl:when test="@mimetype = 'image/svg+xml' and $images/images/image[@id = current()/@id]">
6776
+ <xsl:value-of select="$images/images/image[@id = current()/@id]/@src"/>
6777
+ </xsl:when>
6778
+ <xsl:when test="not(starts-with(@src, 'data:'))">
6779
+ <xsl:value-of select="concat('url(file:',$basepath, @src, ')')"/>
6780
+ </xsl:when>
6781
+ <xsl:otherwise>
6782
+ <xsl:value-of select="@src"/>
6783
+ </xsl:otherwise>
6784
+ </xsl:choose>
6759
6785
  </xsl:template><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name']"/><xsl:template match="*[local-name() = 'figure']/*[local-name() = 'name'] | *[local-name() = 'table']/*[local-name() = 'name'] | *[local-name() = 'permission']/*[local-name() = 'name'] | *[local-name() = 'recommendation']/*[local-name() = 'name'] | *[local-name() = 'requirement']/*[local-name() = 'name']" mode="contents">
6760
6786
  <xsl:apply-templates mode="contents"/>
6761
6787
  <xsl:text> </xsl:text>