metanorma-iso 2.0.8 → 2.1.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/html2doc/lists.rb +37 -0
  3. data/lib/isodoc/iso/base_convert.rb +1 -1
  4. data/lib/isodoc/iso/html/html_iso_titlepage.html +5 -0
  5. data/lib/isodoc/iso/html/isodoc-dis.css +304 -242
  6. data/lib/isodoc/iso/html/isodoc-dis.scss +379 -260
  7. data/lib/isodoc/iso/html/word_iso_intro-dis.html +7 -0
  8. data/lib/isodoc/iso/html/word_iso_titlepage-dis.html +4 -3
  9. data/lib/isodoc/iso/html/word_iso_titlepage.html +10 -4
  10. data/lib/isodoc/iso/html/wordstyle-dis.css +168 -48
  11. data/lib/isodoc/iso/html/wordstyle-dis.scss +158 -43
  12. data/lib/isodoc/iso/html_convert.rb +2 -2
  13. data/lib/isodoc/iso/i18n-en.yaml +1 -0
  14. data/lib/isodoc/iso/i18n-fr.yaml +1 -0
  15. data/lib/isodoc/iso/i18n-ru.yaml +1 -0
  16. data/lib/isodoc/iso/i18n-zh-Hans.yaml +1 -0
  17. data/lib/isodoc/iso/init.rb +17 -1
  18. data/lib/isodoc/iso/iso.amendment.xsl +1697 -426
  19. data/lib/isodoc/iso/iso.international-standard.xsl +1697 -426
  20. data/lib/isodoc/iso/metadata.rb +13 -19
  21. data/lib/isodoc/iso/presentation_inline.rb +90 -0
  22. data/lib/isodoc/iso/presentation_xml_convert.rb +41 -100
  23. data/lib/isodoc/iso/presentation_xref.rb +126 -0
  24. data/lib/isodoc/iso/sections.rb +2 -2
  25. data/lib/isodoc/iso/word_cleanup.rb +16 -2
  26. data/lib/isodoc/iso/word_convert.rb +29 -12
  27. data/lib/isodoc/iso/word_dis_convert.rb +183 -0
  28. data/lib/isodoc/iso/xref.rb +46 -25
  29. data/lib/metanorma/iso/biblio.rng +37 -8
  30. data/lib/metanorma/iso/boilerplate-fr.xml +1 -1
  31. data/lib/metanorma/iso/boilerplate-ru.xml +1 -3
  32. data/lib/metanorma/iso/boilerplate.xml +1 -3
  33. data/lib/metanorma/iso/cleanup.rb +2 -1
  34. data/lib/metanorma/iso/isodoc.rng +56 -0
  35. data/lib/metanorma/iso/version.rb +1 -1
  36. data/lib/metanorma-iso.rb +1 -0
  37. data/lib/relaton/render/config.yml +4 -0
  38. data/lib/relaton/render/general.rb +13 -0
  39. data/metanorma-iso.gemspec +1 -1
  40. data/spec/isodoc/amd_spec.rb +31 -30
  41. data/spec/isodoc/blocks_spec.rb +286 -179
  42. data/spec/isodoc/i18n_spec.rb +187 -21
  43. data/spec/isodoc/inline_spec.rb +35 -42
  44. data/spec/isodoc/iso_spec.rb +1 -1
  45. data/spec/isodoc/metadata_spec.rb +17 -17
  46. data/spec/isodoc/postproc_spec.rb +28 -3
  47. data/spec/isodoc/ref_spec.rb +66 -69
  48. data/spec/isodoc/section_spec.rb +78 -76
  49. data/spec/isodoc/table_spec.rb +2 -2
  50. data/spec/isodoc/terms_spec.rb +2 -2
  51. data/spec/isodoc/word_dis_spec.rb +760 -0
  52. data/spec/isodoc/xref_spec.rb +51 -51
  53. data/spec/metanorma/base_spec.rb +10 -10
  54. data/spec/spec_helper.rb +11 -1
  55. data/spec/vcr_cassettes/withdrawn_iso.yml +26 -26
  56. metadata +11 -5
  57. data/spec/vcr_cassettes/docrels.yml +0 -385
@@ -0,0 +1,183 @@
1
+ module IsoDoc
2
+ module Iso
3
+ class WordDISConvert < WordConvert
4
+ def default_file_locations(_options)
5
+ {
6
+ wordstylesheet: html_doc_path("wordstyle-dis.scss"),
7
+ standardstylesheet: html_doc_path("isodoc-dis.scss"),
8
+ header: html_doc_path("header-dis.html"),
9
+ wordcoverpage: html_doc_path("word_iso_titlepage-dis.html"),
10
+ wordintropage: html_doc_path("word_iso_intro-dis.html"),
11
+ ulstyle: "l3",
12
+ olstyle: "l2",
13
+ }
14
+ end
15
+
16
+ def initialize(options)
17
+ @libdir ||= File.dirname(__FILE__) # rubocop:disable Lint/DisjunctiveAssignmentInConstructor
18
+ options.merge!(default_file_locations(options))
19
+ super
20
+ end
21
+
22
+ def init_dis; end
23
+
24
+ def style_cleanup(docxml)
25
+ super
26
+ dis_styles(docxml)
27
+ end
28
+
29
+ STYLESMAP = {
30
+ AltTerms: "AdmittedTerm",
31
+ TableFootnote: "Tablefootnote",
32
+ formula: "Formula",
33
+ note: "Note",
34
+ example: "Example",
35
+ admonition: "Admonition",
36
+ admonitiontitle: "AdmonitionTitle",
37
+ sourcetitle: "SourceTitle",
38
+ tabletitle: "TableTitle",
39
+ titlepagesbhead: "TablePageSubhead",
40
+ NormRef: "RefNorm",
41
+ Biblio: "BiblioEntry",
42
+ MsoNormal: "MsoBodyText",
43
+ FigureTitle: "Figuretitle",
44
+ zzwarning: "zzWarning",
45
+ zzwarninghdr: "zzWarningHdr",
46
+ quoteattribution: "QuoteAttribution",
47
+ }.freeze
48
+
49
+ def dis_styles(docxml)
50
+ STYLESMAP.each do |k, v|
51
+ docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
52
+ end
53
+ docxml.xpath("//h1[@class = 'ForewordTitle' or @class = 'IntroTitle']")
54
+ .each { |h| h.name = "p" }
55
+ dis_styles1(docxml)
56
+ docxml.xpath("//p[not(@class)]").each { |p| p["class"] = "MsoBodyText" }
57
+ end
58
+
59
+ def dis_styles1(docxml)
60
+ code_style(docxml)
61
+ figure_style(docxml)
62
+ example_style(docxml)
63
+ end
64
+
65
+ def example_style(docxml)
66
+ docxml.xpath("//div[@class = 'Example']").each do |d|
67
+ d.xpath("./p").each_with_index do |p, i|
68
+ next if p["class"] && p["class"] != "Example"
69
+
70
+ p["class"] = (i.zero? ? "Example" : "Examplecontinued")
71
+ end
72
+ end
73
+ end
74
+
75
+ def figure_name_attrs(_node)
76
+ { class: "FigureTitle", style: "text-align:center;" }
77
+ end
78
+
79
+ def table_title_attrs(_node)
80
+ { class: "Tabletitle", style: "text-align:center;" }
81
+ end
82
+
83
+ def word_annex_cleanup1(docxml, lvl)
84
+ docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
85
+ h2.name = "p"
86
+ h2["class"] = "a#{lvl}"
87
+ end
88
+ end
89
+
90
+ def span_parse(node, out)
91
+ out.span **{ class: node["class"] } do |x|
92
+ node.children.each { |n| parse(n, x) }
93
+ end
94
+ end
95
+
96
+ def word_toc_preface(level)
97
+ <<~TOC.freeze
98
+ <span lang="EN-GB"><span
99
+ style='mso-element:field-begin'></span><span
100
+ style='mso-spacerun:yes'>&#xA0;</span>TOC \\o "2-#{level}" \\h \\z \\t
101
+ "Heading 1;1;ANNEX;1;Biblio Title;1;Foreword Title;1;Intro Title;1;ANNEXN;1;ANNEXZ;1;na2;1;na3;1;na4;1;na5;1;na6;1;Title;1;Base_Heading;1;Box-title;1;Front Head;1;Index Head;1;AMEND Terms Heading;1;AMEND Heading 1 Unnumbered;1"
102
+ <span style='mso-element:field-separator'></span></span>
103
+ TOC
104
+ end
105
+
106
+ def render_identifier(ident)
107
+ ret = super
108
+ ret[:sdo] = std_docid_semantic(ret[:sdo])
109
+ ret
110
+ end
111
+
112
+ FIGURE_NESTED_STYLES =
113
+ { Note: "Figurenote", example: "Figureexample" }.freeze
114
+
115
+ def figure_style(docxml)
116
+ docxml.xpath("//div[@class = 'figure']").each do |f|
117
+ FIGURE_NESTED_STYLES.each do |k, v|
118
+ f.xpath(".//*[@class = '#{k}']").each { |n| n["class"] = v }
119
+ end
120
+ f.xpath("./img").each do |i|
121
+ i.replace("<p class='FigureGraphic'>#{i.to_xml}</p>")
122
+ end
123
+ end
124
+ end
125
+
126
+ def code_style(doc)
127
+ span_style((doc.xpath("//tt//b") - doc.xpath("//tt//i//b")),
128
+ "ISOCodebold")
129
+ span_style((doc.xpath("//tt//i") - doc.xpath("//tt//b//i")),
130
+ "ISOCodeitalic")
131
+ span_style((doc.xpath("//b//tt") - doc.xpath("//b//i//tt")),
132
+ "ISOCodebold")
133
+ span_style((doc.xpath("//i//tt") - doc.xpath("//i//b//tt")),
134
+ "ISOCodeitalic")
135
+ span_style(doc.xpath("//tt"), "ISOCode")
136
+ end
137
+
138
+ def span_style(xpath, style)
139
+ xpath.each do |elem|
140
+ elem.name = "span"
141
+ elem["class"] = style
142
+ end
143
+ end
144
+
145
+ def make_tr_attr(cell, row, totalrows, header)
146
+ super.merge(header: header)
147
+ end
148
+
149
+ def word_cleanup(docxml)
150
+ word_table_cell_para(docxml)
151
+ super
152
+ end
153
+
154
+ def word_table_cell_para(docxml)
155
+ docxml.xpath("//td | //th").each do |t|
156
+ s = t["header"] == "true" ? "Tableheader" : "Tablebody"
157
+ t.delete("header")
158
+ if t.at("./p |./div")
159
+ t.xpath("./p | ./div").each { |p| p["class"] = s }
160
+ else
161
+ t.children = "<div class='#{s}'>#{t.children.to_xml}</div>"
162
+ end
163
+ end
164
+ end
165
+
166
+ def toWord(result, filename, dir, header)
167
+ result = from_xhtml(word_cleanup(to_xhtml(result)))
168
+ .gsub(/-DOUBLE_HYPHEN_ESCAPE-/, "--")
169
+ @wordstylesheet = wordstylesheet_update
170
+ ::Html2Doc::IsoDIS.new(
171
+ filename: filename,
172
+ imagedir: @localdir,
173
+ stylesheet: @wordstylesheet&.path,
174
+ header_file: header&.path, dir: dir,
175
+ asciimathdelims: [@openmathdelim, @closemathdelim],
176
+ liststyles: { ul: @ulstyle, ol: @olstyle }
177
+ ).process(result)
178
+ header&.unlink
179
+ @wordstylesheet.unlink if @wordstylesheet.is_a?(Tempfile)
180
+ end
181
+ end
182
+ end
183
+ end
@@ -10,36 +10,48 @@ module IsoDoc
10
10
  else
11
11
  initial_anchor_names1(doc)
12
12
  end
13
- introduction_names(doc.at(ns("//introduction")))
13
+ if @parse_settings.empty? || @parse_settings[:clauses]
14
+ introduction_names(doc.at(ns("//introduction")))
15
+ end
14
16
  end
15
17
 
16
18
  def initial_anchor_names_amd(doc)
17
- doc.xpath(ns("//preface/*")).each do |c|
18
- c.element? and preface_names(c)
19
+ if @parse_settings.empty? || @parse_settings[:clauses]
20
+ doc.xpath(ns("//preface/*")).each do |c|
21
+ c.element? and preface_names(c)
22
+ end
23
+ doc.xpath(ns("//sections/clause")).each do |c|
24
+ c.element? and preface_names(c)
25
+ end
19
26
  end
20
- sequential_asset_names(doc.xpath(ns("//preface/*")))
21
- doc.xpath(ns("//sections/clause")).each do |c|
22
- c.element? and preface_names(c)
27
+ if @parse_settings.empty?
28
+ sequential_asset_names(doc.xpath(ns("//preface/*")))
29
+ middle_section_asset_names(doc)
30
+ termnote_anchor_names(doc)
31
+ termexample_anchor_names(doc)
23
32
  end
24
- middle_section_asset_names(doc)
25
- termnote_anchor_names(doc)
26
- termexample_anchor_names(doc)
27
33
  end
28
34
 
29
35
  def initial_anchor_names1(doc)
30
- doc.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
31
- # potentially overridden in middle_section_asset_names()
32
- sequential_asset_names(doc.xpath(ns("//preface/*")))
33
- n = Counter.new
34
- n = section_names(doc.at(ns("//clause[@type = 'scope']")), n, 1)
35
- n = section_names(doc.at(ns(@klass.norm_ref_xpath)), n, 1)
36
- doc.xpath(ns("//sections/clause[not(@type = 'scope')] | "\
37
- "//sections/terms | //sections/definitions")).each do |c|
38
- n = section_names(c, n, 1)
36
+ if @parse_settings.empty? || @parse_settings[:clauses]
37
+ doc.xpath(ns("//preface/*")).each do |c|
38
+ c.element? and preface_names(c)
39
+ end
40
+ # potentially overridden in middle_section_asset_names()
41
+ sequential_asset_names(doc.xpath(ns("//preface/*")))
42
+ n = Counter.new
43
+ n = section_names(doc.at(ns("//clause[@type = 'scope']")), n, 1)
44
+ n = section_names(doc.at(ns(@klass.norm_ref_xpath)), n, 1)
45
+ doc.xpath(ns("//sections/clause[not(@type = 'scope')] | "\
46
+ "//sections/terms | //sections/definitions")).each do |c|
47
+ n = section_names(c, n, 1)
48
+ end
49
+ end
50
+ if @parse_settings.empty?
51
+ middle_section_asset_names(doc)
52
+ termnote_anchor_names(doc)
53
+ termexample_anchor_names(doc)
39
54
  end
40
- middle_section_asset_names(doc)
41
- termnote_anchor_names(doc)
42
- termexample_anchor_names(doc)
43
55
  end
44
56
 
45
57
  # we can reference 0-number clauses in introduction
@@ -68,6 +80,7 @@ module IsoDoc
68
80
  @anchors[c["id"]] = anchor_struct(i.print, nil, @labels["appendix"],
69
81
  "clause")
70
82
  @anchors[c["id"]][:level] = 2
83
+ @anchors[c["id"]][:subtype] = "annex"
71
84
  @anchors[c["id"]][:container] = clause["id"]
72
85
  j = Counter.new
73
86
  c.xpath(ns("./clause | ./references")).each do |c1|
@@ -78,10 +91,11 @@ module IsoDoc
78
91
  end
79
92
  end
80
93
 
94
+ # subclauses are not prefixed with "Clause"
95
+ # retaining sybtupe for the semantics
81
96
  def section_names1(clause, num, level)
82
97
  @anchors[clause["id"]] =
83
- { label: num, level: level, xref: num }
84
- # subclauses are not prefixed with "Clause"
98
+ { label: num, level: level, xref: num, subtype: "clause" }
85
99
  i = Counter.new
86
100
  clause.xpath(ns("./clause | ./terms | ./term | ./definitions | "\
87
101
  "./references"))
@@ -92,7 +106,8 @@ module IsoDoc
92
106
  end
93
107
 
94
108
  def annex_names1(clause, num, level)
95
- @anchors[clause["id"]] = { label: num, xref: num, level: level }
109
+ @anchors[clause["id"]] = { label: num, xref: num, level: level,
110
+ subtype: "annex" }
96
111
  i = Counter.new
97
112
  clause.xpath(ns("./clause | ./references")).each do |c|
98
113
  i.increment(c)
@@ -166,7 +181,13 @@ module IsoDoc
166
181
 
167
182
  def back_anchor_names(docxml)
168
183
  super
169
- docxml.xpath(ns("//indexsect")).each { |b| preface_names(b) }
184
+ if @parse_settings.empty? || @parse_settings[:clauses]
185
+ docxml.xpath(ns("//indexsect")).each { |b| preface_names(b) }
186
+ end
187
+ end
188
+
189
+ def annex_name_lbl(clause, num)
190
+ super.sub(%r{<br/>(.*)$}, "<br/><span class='obligation'>\\1</span>")
170
191
  end
171
192
  end
172
193
  end
@@ -851,17 +851,46 @@
851
851
  </define>
852
852
  <define name="bplace">
853
853
  <element name="place">
854
- <optional>
855
- <attribute name="uri">
856
- <data type="anyURI"/>
857
- </attribute>
858
- </optional>
859
- <optional>
860
- <attribute name="region"/>
861
- </optional>
854
+ <choice>
855
+ <text/>
856
+ <group>
857
+ <ref name="bibliocity"/>
858
+ <zeroOrMore>
859
+ <ref name="biblioregion"/>
860
+ </zeroOrMore>
861
+ <zeroOrMore>
862
+ <ref name="bibliocountry"/>
863
+ </zeroOrMore>
864
+ </group>
865
+ </choice>
866
+ </element>
867
+ </define>
868
+ <define name="bibliocity">
869
+ <element name="city">
862
870
  <text/>
863
871
  </element>
864
872
  </define>
873
+ <define name="biblioregion">
874
+ <element name="region">
875
+ <ref name="RegionType"/>
876
+ </element>
877
+ </define>
878
+ <define name="bibliocountry">
879
+ <element name="country">
880
+ <ref name="RegionType"/>
881
+ </element>
882
+ </define>
883
+ <define name="RegionType">
884
+ <optional>
885
+ <attribute name="iso"/>
886
+ </optional>
887
+ <optional>
888
+ <attribute name="recommended">
889
+ <data type="boolean"/>
890
+ </attribute>
891
+ </optional>
892
+ <text/>
893
+ </define>
865
894
  <define name="bprice">
866
895
  <element name="price">
867
896
  <attribute name="currency"/>
@@ -1,7 +1,7 @@
1
1
  <boilerplate>
2
2
  <copyright-statement>
3
3
  <clause>
4
- <p id="boilerplate-year">&#xa9; {{ agency }} {{ docyear }}</p>
4
+ <p id="boilerplate-year">&#xa9; <span class="std_publisher">{{ agency }}</span> <span class="std_docNumber">{{ docyear }}</span></p>
5
5
 
6
6
  <p id="boilerplate-message">
7
7
  Droits de reproduction réservés. Sauf indication contraire, ou requise dans le cadre de sa mise en œuvre,
@@ -1,9 +1,7 @@
1
1
  <boilerplate>
2
2
  <copyright-statement>
3
3
  <clause>
4
- <p id="boilerplate-year">
5
- &#xa9; {{ agency }} {{ docyear }}
6
- </p>
4
+ <p id="boilerplate-year">&#xa9; <span class="std_publisher">{{ agency }}</span> <span class="std_docNumber">{{ docyear }}</span></p>
7
5
 
8
6
  <p id="boilerplate-message">
9
7
  Все права защищены. Если иначе не определено или не требуется в контексте его реализации, никакая часть этой публикации не может быть воспроизведена или использована иначе в любой форме или каким-либо образом, электронным или механическим, включая фотокопирование, или публикацию в Интернете или интранете, без предварительного письменного разрешения. Разрешение может быть запрошено ISO по адресу, указанному ниже, или у органа — члена ISO страны запрашивающего.
@@ -1,9 +1,7 @@
1
1
  <boilerplate>
2
2
  <copyright-statement>
3
3
  <clause>
4
- <p id="boilerplate-year">
5
- &#xa9; {{ agency }} {{ docyear }}
6
- </p>
4
+ <p id="boilerplate-year">&#xa9; <span class="std_publisher">{{ agency }}</span> <span class="std_docNumber">{{ docyear }}</span></p>
7
5
 
8
6
  <p id="boilerplate-message">
9
7
  All rights
@@ -40,7 +40,8 @@ module Metanorma
40
40
  xmldoc.xpath("//bibdata/contributor[role/@type = 'publisher']"\
41
41
  "/organization").each_with_object([]) do |x, prefix|
42
42
  x1 = x.at("abbreviation")&.text || x.at("name")&.text
43
- (x1 == "ISO" and prefix.unshift("ISO")) or prefix << x1
43
+ #(x1 == "ISO" and prefix.unshift("ISO")) or prefix << x1
44
+ prefix << x1
44
45
  end
45
46
  end
46
47
 
@@ -32,6 +32,43 @@
32
32
  <ref name="DocumentType"/>
33
33
  </element>
34
34
  </define>
35
+ <define name="admonition">
36
+ <element name="admonition">
37
+ <attribute name="type">
38
+ <ref name="AdmonitionType"/>
39
+ </attribute>
40
+ <optional>
41
+ <attribute name="class"/>
42
+ </optional>
43
+ <attribute name="id">
44
+ <data type="ID"/>
45
+ </attribute>
46
+ <optional>
47
+ <attribute name="uri">
48
+ <data type="anyURI"/>
49
+ </attribute>
50
+ </optional>
51
+ <optional>
52
+ <attribute name="coverpage">
53
+ <data type="boolean"/>
54
+ </attribute>
55
+ </optional>
56
+ <optional>
57
+ <attribute name="notag">
58
+ <data type="boolean"/>
59
+ </attribute>
60
+ </optional>
61
+ <optional>
62
+ <ref name="tname"/>
63
+ </optional>
64
+ <zeroOrMore>
65
+ <ref name="paragraph-with-footnote"/>
66
+ </zeroOrMore>
67
+ <zeroOrMore>
68
+ <ref name="note"/>
69
+ </zeroOrMore>
70
+ </element>
71
+ </define>
35
72
  <define name="index">
36
73
  <element name="index">
37
74
  <optional>
@@ -851,6 +888,16 @@
851
888
  <ref name="MultilingualRenderingType"/>
852
889
  </attribute>
853
890
  </optional>
891
+ <optional>
892
+ <attribute name="coverpage">
893
+ <data type="boolean"/>
894
+ </attribute>
895
+ </optional>
896
+ <optional>
897
+ <attribute name="notag">
898
+ <data type="boolean"/>
899
+ </attribute>
900
+ </optional>
854
901
  <oneOrMore>
855
902
  <choice>
856
903
  <ref name="paragraph"/>
@@ -1178,6 +1225,7 @@
1178
1225
  <ref name="concept"/>
1179
1226
  <ref name="add"/>
1180
1227
  <ref name="del"/>
1228
+ <ref name="span"/>
1181
1229
  </choice>
1182
1230
  </define>
1183
1231
  <define name="add">
@@ -1204,6 +1252,14 @@
1204
1252
  </choice>
1205
1253
  </element>
1206
1254
  </define>
1255
+ <define name="span">
1256
+ <element name="span">
1257
+ <attribute name="class"/>
1258
+ <oneOrMore>
1259
+ <ref name="TextElement"/>
1260
+ </oneOrMore>
1261
+ </element>
1262
+ </define>
1207
1263
  <define name="concept">
1208
1264
  <element name="concept">
1209
1265
  <optional>
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "2.0.8".freeze
3
+ VERSION = "2.1.1".freeze
4
4
  end
5
5
  end
data/lib/metanorma-iso.rb CHANGED
@@ -7,6 +7,7 @@ require_relative "isodoc/iso/pdf_convert"
7
7
  require_relative "isodoc/iso/sts_convert"
8
8
  require_relative "isodoc/iso/isosts_convert"
9
9
  require_relative "isodoc/iso/presentation_xml_convert"
10
+ require_relative "html2doc/lists"
10
11
  require "asciidoctor/extensions"
11
12
 
12
13
  if defined? Metanorma
@@ -0,0 +1,4 @@
1
+ template:
2
+ # skip standardidentifier, it is inserted in front of formattedref within metanorma
3
+ standard: "<em><span_class='stddocTitle'>{{ title }}</span></em> ,_{{ extent }}."
4
+ website: "{{ creatornames }} ({{ role }}) . <em><span_class='stddocTitle'>{{ title }}</span></em> [website]. {{ labels['version'] | capitalize }}_{{ edition_raw }}. {{ place }}: {{ publisher }}. {{date}}. {{ labels['updated'] | capitalize }}:_{{date_updated}}. {{ standardidentifier | first }}. {{ labels['availablefrom'] }}:_<span_class='biburl'>{{ uri }}</span>. [{{ labels['viewed'] }}:_{{date_accessed}}]. "
@@ -0,0 +1,13 @@
1
+ require "relaton-render"
2
+
3
+ module Relaton
4
+ module Render
5
+ module Iso
6
+ class General < ::Relaton::Render::IsoDoc::General
7
+ def config_loc
8
+ YAML.load_file(File.join(File.dirname(__FILE__), "config.yml"))
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.test_files = `git ls-files -- {spec}/*`.split("\n")
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
31
31
 
32
- spec.add_dependency "metanorma-standoc", "~> 2.0.0"
32
+ spec.add_dependency "metanorma-standoc", "~> 2.1.0"
33
33
  spec.add_dependency "mnconvert", "~> 1.14"
34
34
  spec.add_dependency "ruby-jing"
35
35
  spec.add_dependency "tokenizer", "~> 0.3.0"