metanorma-iso 2.1.0 → 2.1.3
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/html2doc/lists.rb +145 -10
- data/lib/isodoc/iso/base_convert.rb +11 -1
- data/lib/isodoc/iso/html/html_iso_titlepage.html +2 -0
- data/lib/isodoc/iso/html/isodoc-dis.css +216 -278
- data/lib/isodoc/iso/html/isodoc-dis.scss +294 -288
- data/lib/isodoc/iso/html/isodoc.css +38 -13
- data/lib/isodoc/iso/html/isodoc.scss +38 -12
- data/lib/isodoc/iso/html/style-human.css +14 -1
- data/lib/isodoc/iso/html/style-human.scss +10 -1
- data/lib/isodoc/iso/html/style-iso.css +35 -23
- data/lib/isodoc/iso/html/style-iso.scss +31 -23
- data/lib/isodoc/iso/html/word_iso_intro-dis.html +1 -6
- data/lib/isodoc/iso/html/word_iso_titlepage-dis.html +24 -13
- data/lib/isodoc/iso/html/word_iso_titlepage-prf.html +58 -0
- data/lib/isodoc/iso/html/word_iso_titlepage.html +10 -6
- data/lib/isodoc/iso/html/wordstyle-dis.css +12 -62
- data/lib/isodoc/iso/html/wordstyle-dis.scss +7 -56
- data/lib/isodoc/iso/html_convert.rb +7 -2
- data/lib/isodoc/iso/i18n-en.yaml +32 -4
- data/lib/isodoc/iso/i18n-fr.yaml +29 -3
- data/lib/isodoc/iso/i18n-ru.yaml +32 -4
- data/lib/isodoc/iso/i18n-zh-Hans.yaml +32 -3
- data/lib/isodoc/iso/i18n.rb +1 -1
- data/lib/isodoc/iso/iso.amendment.xsl +1570 -246
- data/lib/isodoc/iso/iso.international-standard.xsl +1570 -246
- data/lib/isodoc/iso/metadata.rb +67 -67
- data/lib/isodoc/iso/presentation_bibdata.rb +74 -0
- data/lib/isodoc/iso/presentation_xml_convert.rb +16 -5
- data/lib/isodoc/iso/presentation_xref.rb +10 -4
- data/lib/isodoc/iso/sections.rb +3 -3
- data/lib/isodoc/iso/word_cleanup.rb +3 -0
- data/lib/isodoc/iso/word_convert.rb +8 -5
- data/lib/isodoc/iso/word_dis_cleanup.rb +235 -0
- data/lib/isodoc/iso/word_dis_convert.rb +48 -100
- data/lib/isodoc/iso/xref.rb +34 -6
- data/lib/metanorma/iso/base.rb +20 -1
- data/lib/metanorma/iso/biblio.rng +134 -39
- data/lib/metanorma/iso/boilerplate-fr.xml +3 -0
- data/lib/metanorma/iso/boilerplate-ru.xml +3 -0
- data/lib/metanorma/iso/boilerplate.xml +3 -0
- data/lib/metanorma/iso/cleanup.rb +49 -11
- data/lib/metanorma/iso/front.rb +38 -6
- data/lib/metanorma/iso/front_id.rb +2 -0
- data/lib/metanorma/iso/isodoc.rng +16 -0
- data/lib/metanorma/iso/isostandard.rng +30 -12
- data/lib/metanorma/iso/macros.rb +29 -0
- data/lib/metanorma/iso/validate_section.rb +0 -12
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/isodoc/amd_spec.rb +20 -46
- data/spec/isodoc/blocks_spec.rb +499 -2
- data/spec/isodoc/i18n_spec.rb +145 -80
- data/spec/isodoc/iso_spec.rb +50 -169
- data/spec/isodoc/metadata_spec.rb +240 -99
- data/spec/isodoc/postproc_spec.rb +43 -7
- data/spec/isodoc/section_spec.rb +9 -9
- data/spec/isodoc/word_dis_spec.rb +1332 -146
- data/spec/isodoc/xref_spec.rb +87 -13
- data/spec/metanorma/amd_spec.rb +39 -23
- data/spec/metanorma/base_spec.rb +174 -44
- data/spec/metanorma/blocks_spec.rb +54 -0
- data/spec/metanorma/lists_spec.rb +2 -2
- data/spec/metanorma/section_spec.rb +2 -2
- data/spec/metanorma/validate_spec.rb +8 -19
- data/spec/spec_helper.rb +17 -7
- data/spec/vcr_cassettes/withdrawn_iso.yml +30 -30
- metadata +7 -8
- data/docs/asciiiso-syntax.adoc +0 -307
- data/docs/guidance.adoc +0 -487
- data/docs/navigation.adoc +0 -23
- data/docs/quickstart.adoc +0 -179
- data/lib/isodoc/iso/presentation_inline.rb +0 -90
data/lib/isodoc/iso/metadata.rb
CHANGED
@@ -5,11 +5,8 @@ module IsoDoc
|
|
5
5
|
class Metadata < IsoDoc::Metadata
|
6
6
|
def initialize(lang, script, i18n)
|
7
7
|
super
|
8
|
-
|
9
|
-
set(:sc, "XXXX")
|
10
|
-
set(:wg, "XXXX")
|
8
|
+
DATETYPES.each { |w| @metadata["#{w.gsub(/-/, '_')}date".to_sym] = nil }
|
11
9
|
set(:editorialgroup, [])
|
12
|
-
set(:secretariat, "XXX")
|
13
10
|
set(:obsoletes, nil)
|
14
11
|
set(:obsoletes_part, nil)
|
15
12
|
end
|
@@ -37,13 +34,14 @@ module IsoDoc
|
|
37
34
|
def docstatus1(isoxml, docstatus)
|
38
35
|
set(:stage, docstatus.text)
|
39
36
|
set(:stage_int, docstatus.text.to_i)
|
37
|
+
set(:substage_int, isoxml.at(ns("//bibdata/status/substage"))&.text)
|
40
38
|
set(:unpublished, unpublished(docstatus.text))
|
41
39
|
set(:statusabbr,
|
42
40
|
status_abbrev(docstatus["abbreviation"] || "??",
|
43
|
-
isoxml
|
44
|
-
isoxml
|
45
|
-
isoxml
|
46
|
-
isoxml
|
41
|
+
isoxml.at(ns("//bibdata/status/substage"))&.text,
|
42
|
+
isoxml.at(ns("//bibdata/status/iteration"))&.text,
|
43
|
+
isoxml.at(ns("//bibdata/version/draft"))&.text,
|
44
|
+
isoxml.at(ns("//bibdata/ext/doctype"))&.text))
|
47
45
|
unpublished(docstatus.text) and
|
48
46
|
set(:stageabbr, docstatus["abbreviation"])
|
49
47
|
end
|
@@ -65,28 +63,11 @@ module IsoDoc
|
|
65
63
|
|
66
64
|
# we don't leave this to i18n.rb, because we have both English and
|
67
65
|
# French titles in the same document
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def amd_label(lang)
|
77
|
-
case lang
|
78
|
-
when "en", "fr" then "AMENDMENT"
|
79
|
-
when "ru" then "ПОПРАВКА"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def corr_label(lang)
|
84
|
-
case lang
|
85
|
-
when "en" then "TECHNICAL CORRIGENDUM"
|
86
|
-
when "fr" then "RECTIFICATIF TECHNIQUE"
|
87
|
-
when "ru" then "ТЕХНИЧЕСКОЕ ИСПРАВЛЕНИЕ"
|
88
|
-
end
|
89
|
-
end
|
66
|
+
PART_LABEL = { en: "Part", fr: "Partie", ru: "Часть" }.freeze
|
67
|
+
AMD_LABEL = { en: "AMENDMENT", fr: "AMENDMENT", ru: "ПОПРАВКА" }.freeze
|
68
|
+
CORR_LABEL = { en: "TECHNICAL CORRIGENDUM",
|
69
|
+
fr: "RECTIFICATIF TECHNIQUE",
|
70
|
+
ru: "ТЕХНИЧЕСКОЕ ИСПРАВЛЕНИЕ" }.freeze
|
90
71
|
|
91
72
|
def part_title(part, titlenums, lang)
|
92
73
|
return "" unless part
|
@@ -94,25 +75,25 @@ module IsoDoc
|
|
94
75
|
suffix = @c.encode(part.text, :hexadecimal)
|
95
76
|
p = titlenums[:part]
|
96
77
|
titlenums[:part] && titlenums[:subpart] and
|
97
|
-
p = "#{titlenums[:part]}
|
78
|
+
p = "#{titlenums[:part]}–#{titlenums[:subpart]}"
|
98
79
|
titlenums[:part] and
|
99
|
-
suffix = "#{
|
80
|
+
suffix = "#{PART_LABEL[lang.to_sym]} #{p}: " + suffix
|
100
81
|
suffix
|
101
82
|
end
|
102
83
|
|
103
84
|
def part_prefix(titlenums, lang)
|
104
85
|
p = titlenums[:part]
|
105
86
|
titlenums[:part] && titlenums[:subpart] and
|
106
|
-
p = "#{titlenums[:part]}
|
107
|
-
"#{
|
87
|
+
p = "#{titlenums[:part]}–#{titlenums[:subpart]}"
|
88
|
+
"#{PART_LABEL[lang.to_sym]} #{p}"
|
108
89
|
end
|
109
90
|
|
110
91
|
def amd_prefix(titlenums, lang)
|
111
|
-
"#{
|
92
|
+
"#{AMD_LABEL[lang.to_sym]} #{titlenums[:amd]}"
|
112
93
|
end
|
113
94
|
|
114
95
|
def corr_prefix(titlenums, lang)
|
115
|
-
"#{
|
96
|
+
"#{CORR_LABEL[lang.to_sym]} #{titlenums[:corr]}"
|
116
97
|
end
|
117
98
|
|
118
99
|
def compose_title(tparts, tnums, lang)
|
@@ -121,29 +102,30 @@ module IsoDoc
|
|
121
102
|
main = @c.encode(tparts[:main].text, :hexadecimal)
|
122
103
|
tparts[:intro] &&
|
123
104
|
main = "#{@c.encode(tparts[:intro].text,
|
124
|
-
:hexadecimal)}
|
105
|
+
:hexadecimal)} — #{main}"
|
125
106
|
if tparts[:part]
|
126
107
|
suffix = part_title(tparts[:part], tnums, lang)
|
127
|
-
main = "#{main}
|
108
|
+
main = "#{main} — #{suffix}"
|
128
109
|
end
|
129
110
|
main
|
130
111
|
end
|
131
112
|
|
132
113
|
def title_nums(isoxml)
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
114
|
+
prefix = "//bibdata/ext/structuredidentifier/project-number"
|
115
|
+
{ part: isoxml.at(ns("#{prefix}/@part")),
|
116
|
+
subpart: isoxml.at(ns("#{prefix}/@subpart")),
|
117
|
+
amd: isoxml.at(ns("#{prefix}/@amendment")),
|
118
|
+
corr: isoxml.at(ns("#{prefix}/@corrigendum")) }
|
137
119
|
end
|
138
120
|
|
139
121
|
def title_parts(isoxml, lang)
|
140
|
-
{ intro: isoxml.at(ns("//bibdata
|
122
|
+
{ intro: isoxml.at(ns("//bibdata/title[@type='title-intro' and "\
|
141
123
|
"@language='#{lang}']")),
|
142
|
-
main: isoxml.at(ns("//bibdata
|
124
|
+
main: isoxml.at(ns("//bibdata/title[@type='title-main' and "\
|
143
125
|
"@language='#{lang}']")),
|
144
|
-
part: isoxml.at(ns("//bibdata
|
126
|
+
part: isoxml.at(ns("//bibdata/title[@type='title-part' and "\
|
145
127
|
"@language='#{lang}']")),
|
146
|
-
amd: isoxml.at(ns("//bibdata
|
128
|
+
amd: isoxml.at(ns("//bibdata/title[@type='title-amd' and "\
|
147
129
|
"@language='#{lang}']")) }
|
148
130
|
end
|
149
131
|
|
@@ -197,40 +179,58 @@ module IsoDoc
|
|
197
179
|
tc(xml)
|
198
180
|
sc(xml)
|
199
181
|
wg(xml)
|
182
|
+
approvalgroup(xml)
|
200
183
|
secretariat(xml)
|
201
184
|
end
|
202
185
|
|
203
186
|
def tc(xml)
|
204
|
-
|
187
|
+
tcid = tc_base(xml, "editorialgroup") or return
|
188
|
+
set(:tc, tcid)
|
189
|
+
set(:editorialgroup, get[:editorialgroup] << tcid)
|
190
|
+
end
|
191
|
+
|
192
|
+
def tc_base(xml, grouptype)
|
193
|
+
tc_num = xml.at(ns("//bibdata/ext/#{grouptype}/"\
|
194
|
+
"technical-committee/@number")) or return nil
|
195
|
+
tc_type = xml.at(ns("//bibdata/ext/#{grouptype}/technical-committee/"\
|
205
196
|
"@type"))&.text || "TC"
|
206
|
-
|
207
|
-
"technical-committee/@number"))
|
208
|
-
tcid = "#{tc_type} #{tc_num.text}"
|
209
|
-
set(:tc, tcid)
|
210
|
-
set(:editorialgroup, get[:editorialgroup] << tcid)
|
211
|
-
end
|
197
|
+
"#{tc_type} #{tc_num.text}"
|
212
198
|
end
|
213
199
|
|
214
200
|
def sc(xml)
|
215
|
-
|
216
|
-
|
201
|
+
scid = sc_base(xml, "editorialgroup") or return
|
202
|
+
set(:sc, scid)
|
203
|
+
set(:editorialgroup, get[:editorialgroup] << scid)
|
204
|
+
end
|
205
|
+
|
206
|
+
def sc_base(xml, grouptype)
|
207
|
+
sc_num = xml.at(ns("//bibdata/ext/#{grouptype}/subcommittee/"\
|
208
|
+
"@number")) or return nil
|
209
|
+
sc_type = xml.at(ns("//bibdata/ext/#{grouptype}/subcommittee/"\
|
217
210
|
"@type"))&.text || "SC"
|
218
|
-
|
219
|
-
scid = "#{sc_type} #{sc_num.text}"
|
220
|
-
set(:sc, scid)
|
221
|
-
set(:editorialgroup, get[:editorialgroup] << scid)
|
222
|
-
end
|
211
|
+
"#{sc_type} #{sc_num.text}"
|
223
212
|
end
|
224
213
|
|
225
214
|
def wg(xml)
|
226
|
-
|
227
|
-
|
215
|
+
wgid = wg_base(xml, "editorialgroup") or return
|
216
|
+
set(:wg, wgid)
|
217
|
+
set(:editorialgroup, get[:editorialgroup] << wgid)
|
218
|
+
end
|
219
|
+
|
220
|
+
def wg_base(xml, grouptype)
|
221
|
+
wg_num = xml.at(ns("//bibdata/ext/#{grouptype}/workgroup/"\
|
222
|
+
"@number")) or return
|
223
|
+
wg_type = xml.at(ns("//bibdata/ext/#{grouptype}/workgroup/"\
|
228
224
|
"@type"))&.text || "WG"
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
225
|
+
"#{wg_type} #{wg_num.text}"
|
226
|
+
end
|
227
|
+
|
228
|
+
def approvalgroup(xml)
|
229
|
+
ag = tc_base(xml, "approvalgroup") or return
|
230
|
+
ret = [ag]
|
231
|
+
ret << sc_base(xml, "approvalgroup")
|
232
|
+
ret << wg_base(xml, "approvalgroup")
|
233
|
+
set(:approvalgroup, ret)
|
234
234
|
end
|
235
235
|
|
236
236
|
def secretariat(xml)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
module Iso
|
3
|
+
class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
|
4
|
+
def bibdata(docxml)
|
5
|
+
super
|
6
|
+
editorialgroup_identifier(docxml)
|
7
|
+
warning_for_missing_metadata(docxml)
|
8
|
+
end
|
9
|
+
|
10
|
+
def warning_for_missing_metadata(docxml)
|
11
|
+
return unless @meta.get[:unpublished]
|
12
|
+
|
13
|
+
ret = ""
|
14
|
+
docxml.at(ns("//bibdata/ext//secretariat")) or
|
15
|
+
ret += "<p>Secretariat is missing.</p>"
|
16
|
+
docxml.at(ns("//bibdata/ext//editorialgroup")) or
|
17
|
+
ret += "<p>Editorial groups are missing.</p>"
|
18
|
+
docxml.at(ns("//bibdata/date[@type = 'published' or @type = 'issued' "\
|
19
|
+
"or @type = 'created']")) ||
|
20
|
+
docxml.at(ns("//bibdata/version/revision-date")) or
|
21
|
+
ret += "<p>Document date is missing.</p>"
|
22
|
+
return if ret.empty?
|
23
|
+
|
24
|
+
warning_for_missing_metadata1(docxml, ret)
|
25
|
+
end
|
26
|
+
|
27
|
+
def warning_for_missing_metadata1(docxml, ret)
|
28
|
+
id = UUIDTools::UUID.random_create
|
29
|
+
ret = "<review date='#{Date.today}' reviewer='Metanorma' id='_#{id}'>"\
|
30
|
+
"<p><strong>Metadata warnings:<strong></p> #{ret}</review>"
|
31
|
+
ins = docxml.at(ns("//sections//title")) or return
|
32
|
+
ins.children.first.previous = ret
|
33
|
+
end
|
34
|
+
|
35
|
+
def editorialgroup_identifier(docxml)
|
36
|
+
%w(editorialgroup approvalgroup).each do |v|
|
37
|
+
docxml.xpath(ns("//bibdata/ext/#{v}")).each do |a|
|
38
|
+
editorialgroup_identifier1(a)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def editorialgroup_identifier1(group)
|
44
|
+
agency = group.xpath(ns("./agency"))&.map(&:text)
|
45
|
+
ret = %w(technical-committee subcommittee workgroup)
|
46
|
+
.each_with_object([]) do |v, m|
|
47
|
+
a = group.at(ns("./#{v}")) or next
|
48
|
+
m << "#{a['type']} #{a['number']}"
|
49
|
+
end
|
50
|
+
group["identifier"] = (agency + ret).join("/")
|
51
|
+
end
|
52
|
+
|
53
|
+
def bibdata_i18n(bib)
|
54
|
+
hash_translate(bib, @i18n.get["doctype_dict"], "./ext/doctype")
|
55
|
+
bibdata_i18n_stage(bib, bib.at(ns("./status/stage")),
|
56
|
+
bib.at(ns("./ext/doctype")))
|
57
|
+
hash_translate(bib, @i18n.get["substage_dict"],
|
58
|
+
"./status/substage")
|
59
|
+
edition_translate(bib)
|
60
|
+
end
|
61
|
+
|
62
|
+
def bibdata_i18n_stage(bib, stage, type, lang: @lang, i18n: @i18n)
|
63
|
+
return unless stage
|
64
|
+
|
65
|
+
i18n.get["stage_dict"][stage.text].is_a?(Hash) or
|
66
|
+
return hash_translate(bib, i18n.get["stage_dict"],
|
67
|
+
"./status/stage", lang)
|
68
|
+
i18n.get["stage_dict"][stage.text][type&.text] and
|
69
|
+
tag_translate(stage, lang,
|
70
|
+
i18n.get["stage_dict"][stage.text][type&.text])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require_relative "init"
|
2
2
|
require "isodoc"
|
3
3
|
require_relative "index"
|
4
|
-
require_relative "presentation_inline"
|
5
4
|
require_relative "presentation_xref"
|
5
|
+
require_relative "presentation_bibdata"
|
6
6
|
require_relative "../../relaton/render/general"
|
7
7
|
|
8
8
|
module IsoDoc
|
@@ -29,7 +29,7 @@ module IsoDoc
|
|
29
29
|
def figure1(node)
|
30
30
|
lbl = @xrefs.anchor(node["id"], :label, false) or return
|
31
31
|
figname = node.parent.name == "figure" ? "" : "#{@i18n.figure} "
|
32
|
-
connective = node.parent.name == "figure" ? "
|
32
|
+
connective = node.parent.name == "figure" ? "  " : " — "
|
33
33
|
prefix_name(node, connective, l10n("#{figname}#{lbl}"), "name")
|
34
34
|
end
|
35
35
|
|
@@ -38,7 +38,7 @@ module IsoDoc
|
|
38
38
|
lbl = if n.nil? || blank?(n[:label]) then @i18n.example
|
39
39
|
else l10n("#{@i18n.example} #{n[:label]}")
|
40
40
|
end
|
41
|
-
prefix_name(node,
|
41
|
+
prefix_name(node, block_delim, lbl, "name")
|
42
42
|
end
|
43
43
|
|
44
44
|
def example_span_label(_node, div, name)
|
@@ -172,9 +172,10 @@ module IsoDoc
|
|
172
172
|
def admonition_name(xml)
|
173
173
|
"#{xml} — "
|
174
174
|
end
|
175
|
-
|
175
|
+
|
176
176
|
def bibrenderer
|
177
|
-
::Relaton::Render::Iso::General.new(language: @lang,
|
177
|
+
::Relaton::Render::Iso::General.new(language: @lang,
|
178
|
+
i18nhash: @i18n.get)
|
178
179
|
end
|
179
180
|
|
180
181
|
def bibrender(xml)
|
@@ -185,6 +186,16 @@ module IsoDoc
|
|
185
186
|
end
|
186
187
|
end
|
187
188
|
|
189
|
+
def ol_depth(node)
|
190
|
+
depth = node.ancestors(@iso_class ? "ol" : "ul, ol").size + 1
|
191
|
+
type = :alphabet
|
192
|
+
type = :arabic if [2, 7].include? depth
|
193
|
+
type = :roman if [3, 8].include? depth
|
194
|
+
type = :alphabet_upper if [4, 9].include? depth
|
195
|
+
type = :roman_upper if [5, 10].include? depth
|
196
|
+
type
|
197
|
+
end
|
198
|
+
|
188
199
|
include Init
|
189
200
|
end
|
190
201
|
end
|
@@ -80,7 +80,7 @@ module IsoDoc
|
|
80
80
|
|
81
81
|
def eref_localities1_zh(target, type, from, upto, node)
|
82
82
|
ret = " 第#{from}" if from
|
83
|
-
ret += "
|
83
|
+
ret += "–#{upto}" if upto
|
84
84
|
node["droploc"] != "true" && !subclause?(target, type, from) and
|
85
85
|
ret += eref_locality_populate(type, node)
|
86
86
|
ret += ")" if type == "list"
|
@@ -97,15 +97,21 @@ module IsoDoc
|
|
97
97
|
node["droploc"] != "true" && !subclause?(target, type, from) and
|
98
98
|
ret = eref_locality_populate(type, node)
|
99
99
|
ret += " #{from}" if from
|
100
|
-
ret += "
|
100
|
+
ret += "–#{upto}" if upto
|
101
101
|
ret += ")" if type == "list"
|
102
102
|
ret = l10n(ret)
|
103
103
|
locality_span_wrap(ret, type)
|
104
104
|
end
|
105
105
|
|
106
106
|
def prefix_container(container, linkend, target)
|
107
|
-
delim =
|
108
|
-
|
107
|
+
delim = ", "
|
108
|
+
type = :xref
|
109
|
+
if @xrefs.anchor(target, :type) == "listitem" &&
|
110
|
+
!@xrefs.anchor(target, :refer_list)
|
111
|
+
delim = " "
|
112
|
+
type = :label # 7 a) not Clause 7 a), but Clause 7 List 1 a)
|
113
|
+
end
|
114
|
+
l10n(@xrefs.anchor(container, type) + delim + linkend)
|
109
115
|
end
|
110
116
|
|
111
117
|
def expand_citeas(text)
|
data/lib/isodoc/iso/sections.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
module Iso
|
3
3
|
module BaseConvert
|
4
|
-
def middle_title(
|
4
|
+
def middle_title(_isoxml, out)
|
5
5
|
middle_title_main(out)
|
6
6
|
middle_title_amd(out)
|
7
7
|
end
|
@@ -9,9 +9,9 @@ module IsoDoc
|
|
9
9
|
def middle_title_main(out)
|
10
10
|
out.p(**{ class: "zzSTDTitle1" }) do |p|
|
11
11
|
p << @meta.get[:doctitleintro]
|
12
|
-
p << "
|
12
|
+
p << " — " if @meta.get[:doctitleintro] && @meta.get[:doctitlemain]
|
13
13
|
p << @meta.get[:doctitlemain]
|
14
|
-
p << "
|
14
|
+
p << " — " if @meta.get[:doctitlemain] && @meta.get[:doctitlepart]
|
15
15
|
end
|
16
16
|
a = @meta.get[:doctitlepart] and out.p(**{ class: "zzSTDTitle2" }) do |p|
|
17
17
|
b = @meta.get[:doctitlepartlabel] and p << "#{b}: "
|
@@ -14,10 +14,11 @@ module IsoDoc
|
|
14
14
|
@wordToClevels = 3 if @wordToClevels.zero?
|
15
15
|
@htmlToClevels = options[:htmltoclevels].to_i
|
16
16
|
@htmlToClevels = 3 if @htmlToClevels.zero?
|
17
|
-
init_dis
|
17
|
+
init_dis(options)
|
18
18
|
end
|
19
19
|
|
20
|
-
def init_dis
|
20
|
+
def init_dis(options)
|
21
|
+
@wordtemplate = options[:isowordtemplate]
|
21
22
|
@dis = ::IsoDoc::Iso::WordDISConvert.new(options)
|
22
23
|
end
|
23
24
|
|
@@ -55,8 +56,10 @@ module IsoDoc
|
|
55
56
|
output_filename = nil)
|
56
57
|
file = File.read(input_filename, encoding: "utf-8") if file.nil?
|
57
58
|
docxml = Nokogiri::XML(file) { |config| config.huge }
|
59
|
+
stage = docxml&.at(ns("//bibdata/status/stage"))&.text
|
58
60
|
if @dis &&
|
59
|
-
/^[
|
61
|
+
((/^[4569].$/.match?(stage) && @wordtemplate != "simple") ||
|
62
|
+
(/^[0-3].$/.match?(stage) && @wordtemplate == "dis"))
|
60
63
|
@dis.convert(input_filename, file, debug, output_filename)
|
61
64
|
else
|
62
65
|
super
|
@@ -88,8 +91,8 @@ module IsoDoc
|
|
88
91
|
<span lang="EN-GB"><span
|
89
92
|
style='mso-element:field-begin'></span><span
|
90
93
|
style='mso-spacerun:yes'> </span>TOC
|
91
|
-
\\o
|
92
|
-
1;1;ANNEX;1;Biblio Title;1;Foreword Title;1;Intro Title;1
|
94
|
+
\\o "1-#{level}" \\h \\z \\t "Heading
|
95
|
+
1;1;ANNEX;1;Biblio Title;1;Foreword Title;1;Intro Title;1" <span
|
93
96
|
style='mso-element:field-separator'></span></span>
|
94
97
|
TOC
|
95
98
|
end
|