isodoc 1.2.1 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/isodoc.gemspec +1 -0
- data/lib/isodoc-yaml/i18n-fr.yaml +1 -1
- data/lib/isodoc/base_style/all.css +1 -1
- data/lib/isodoc/base_style/metanorma_word.css +6 -0
- data/lib/isodoc/base_style/metanorma_word.scss +6 -0
- data/lib/isodoc/base_style/reset.css +1 -1
- data/lib/isodoc/base_style/reset.scss +1 -1
- data/lib/isodoc/convert.rb +1 -1
- data/lib/isodoc/function/blocks.rb +1 -0
- data/lib/isodoc/function/cleanup.rb +1 -1
- data/lib/isodoc/function/references.rb +4 -2
- data/lib/isodoc/function/section.rb +13 -1
- data/lib/isodoc/function/table.rb +1 -0
- data/lib/isodoc/function/to_word_html.rb +3 -0
- data/lib/isodoc/function/utils.rb +1 -1
- data/lib/isodoc/html_function/html.rb +1 -0
- data/lib/isodoc/i18n.rb +8 -50
- data/lib/isodoc/metadata.rb +49 -35
- data/lib/isodoc/metadata_date.rb +5 -0
- data/lib/isodoc/presentation_function/bibdata.rb +24 -0
- data/lib/isodoc/presentation_function/block.rb +14 -0
- data/lib/isodoc/presentation_function/inline.rb +27 -14
- data/lib/isodoc/presentation_xml_convert.rb +4 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +1 -0
- data/lib/isodoc/word_function/postprocess.rb +1 -1
- data/lib/isodoc/word_function/table.rb +3 -2
- data/lib/isodoc/xref.rb +1 -0
- data/lib/isodoc/xref/xref_anchor.rb +8 -3
- data/lib/isodoc/xref/xref_counter.rb +21 -7
- data/lib/isodoc/xref/xref_gen.rb +29 -6
- data/lib/isodoc/xref/xref_sect_gen.rb +1 -1
- data/lib/isodoc/xslfo_convert.rb +6 -1
- data/spec/assets/i18n.yaml +9 -0
- data/spec/isodoc/blocks_spec.rb +281 -13
- data/spec/isodoc/cleanup_spec.rb +3 -1
- data/spec/isodoc/i18n_spec.rb +43 -5
- data/spec/isodoc/inline_spec.rb +47 -5
- data/spec/isodoc/metadata_spec.rb +24 -15
- data/spec/isodoc/postproc_spec.rb +39 -3
- data/spec/isodoc/ref_spec.rb +4 -1
- data/spec/isodoc/section_spec.rb +134 -10
- data/spec/isodoc/table_spec.rb +306 -207
- data/spec/isodoc/terms_spec.rb +1 -1
- data/spec/isodoc/xref_spec.rb +46 -18
- data/spec/spec_helper.rb +4 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcbc3f4f71f739273b06483080ad077fcda05b20f8eca96858300543b0fb2784
|
4
|
+
data.tar.gz: f0c4a29519de6c22dbc47af2193d8f4ee0a2c925c5d0c9f58414813be28070ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5eb17f999c954a1185f60807f5c9b4dcdde33391fd95546d51dca4a00aee8d742736155313153a5007205d06d189c5ee69b39152db57478669e54e7622fde568
|
7
|
+
data.tar.gz: e0122186b16428b61c7009d7c8560ab12de531a8ec3bac56e58e89528f4a2a0acd2e1ab4ce4453919f7ed2707e7724037175852a3dc148a53bb0eef63aa5f695
|
data/isodoc.gemspec
CHANGED
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
spec.add_dependency "liquid"
|
38
38
|
spec.add_dependency "roman-numerals"
|
39
39
|
spec.add_dependency "metanorma", "~> 1.1.0"
|
40
|
+
spec.add_dependency "relaton-cli"
|
40
41
|
|
41
42
|
spec.add_development_dependency "rake", "~> 13.0"
|
42
43
|
spec.add_development_dependency "byebug", "~> 9.1"
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0; }
|
@@ -16,6 +16,12 @@ td {
|
|
16
16
|
tr {
|
17
17
|
page-break-after: avoid; }
|
18
18
|
|
19
|
+
table.MsoISOTableBig tr {
|
20
|
+
page-break-inside: auto; }
|
21
|
+
|
22
|
+
table.MsoISOTableBig td {
|
23
|
+
page-break-inside: auto; }
|
24
|
+
|
19
25
|
span.stem {
|
20
26
|
font-family: "Cambria Math",serif;
|
21
27
|
mso-ascii-font-family: "Cambria Math";
|
@@ -13,6 +13,12 @@ table.MsoISOTable tr
|
|
13
13
|
td { page-break-inside:avoid; }
|
14
14
|
tr { page-break-after:avoid; }
|
15
15
|
|
16
|
+
table.MsoISOTableBig tr
|
17
|
+
{page-break-inside:auto;}
|
18
|
+
|
19
|
+
table.MsoISOTableBig td
|
20
|
+
{page-break-inside:auto;}
|
21
|
+
|
16
22
|
span.stem
|
17
23
|
{font-family:"Cambria Math",serif;
|
18
24
|
mso-ascii-font-family:"Cambria Math";
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0; }
|
@@ -9,7 +9,7 @@ fieldset, form, label, legend,
|
|
9
9
|
table, caption, tbody, tfoot, thead, tr, th, td,
|
10
10
|
article, aside, canvas, details, embed,
|
11
11
|
figure, figcaption, footer, header, hgroup,
|
12
|
-
menu,
|
12
|
+
menu, output, ruby, section, summary,
|
13
13
|
time, mark, audio, video {
|
14
14
|
margin: 0;
|
15
15
|
padding: 0;
|
data/lib/isodoc/convert.rb
CHANGED
@@ -181,6 +181,7 @@ module IsoDoc::Function
|
|
181
181
|
def quote_attribution(node, out)
|
182
182
|
author = node.at(ns("./author"))
|
183
183
|
source = node.at(ns("./source"))
|
184
|
+
return if author.nil? && source.nil?
|
184
185
|
out.p **{ class: "QuoteAttribution" } do |p|
|
185
186
|
p << "— #{author.text}" if author
|
186
187
|
p << ", " if author && source
|
@@ -6,9 +6,9 @@ module IsoDoc::Function
|
|
6
6
|
|
7
7
|
def termref_cleanup(docxml)
|
8
8
|
docxml.
|
9
|
+
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@i18n.modified} [/TERMREF]")).
|
9
10
|
gsub(%r{\s*\[/TERMREF\]\s*</p>\s*<p>\s*\[TERMREF\]}, "; ").
|
10
11
|
gsub(/\[TERMREF\]\s*/, l10n("[#{@i18n.source}: ")).
|
11
|
-
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@i18n.modified} [/TERMREF]")).
|
12
12
|
gsub(%r{\s*\[\/TERMREF\]\s*}, l10n("]")).
|
13
13
|
gsub(/\s*\[MODIFICATION\]/, l10n(", #{@i18n.modified} — "))
|
14
14
|
end
|
@@ -54,7 +54,8 @@ module IsoDoc::Function
|
|
54
54
|
def bibitem_ref_code(b)
|
55
55
|
id = b.at(ns("./docidentifier[@type = 'metanorma']"))
|
56
56
|
id1 = pref_ref_code(b)
|
57
|
-
id2 = b.at(ns("./docidentifier[@type = 'DOI' or @type = 'ISSN' or
|
57
|
+
id2 = b.at(ns("./docidentifier[@type = 'DOI' or @type = 'ISSN' or "\
|
58
|
+
"@type = 'ISBN']"))
|
58
59
|
return [id, id1, id2] if id || id1 || id2
|
59
60
|
id = Nokogiri::XML::Node.new("docidentifier", b.document)
|
60
61
|
id << "(NO ID)"
|
@@ -193,7 +194,8 @@ module IsoDoc::Function
|
|
193
194
|
def bibliography_parse(node, out)
|
194
195
|
title = node&.at(ns("./title"))&.text || ""
|
195
196
|
out.div do |div|
|
196
|
-
clause_parse_title(node, div, node.at(ns("./title")), out,
|
197
|
+
clause_parse_title(node, div, node.at(ns("./title")), out,
|
198
|
+
{ class: "Section3" })
|
197
199
|
biblio_list(node, div, true)
|
198
200
|
end
|
199
201
|
end
|
@@ -182,7 +182,6 @@ module IsoDoc::Function
|
|
182
182
|
page_break(out)
|
183
183
|
out.div **attr_code(id: f["id"]) do |s|
|
184
184
|
clause_name(nil, f.at(ns("./title")), s, { class: "AbstractTitle" })
|
185
|
-
#s.h1(**{ class: "AbstractTitle" }) { |h1| h1 << @i18n.abstract }
|
186
185
|
f.elements.each { |e| parse(e, s) unless e.name == "title" }
|
187
186
|
end
|
188
187
|
end
|
@@ -201,6 +200,19 @@ module IsoDoc::Function
|
|
201
200
|
end
|
202
201
|
end
|
203
202
|
|
203
|
+
def is_clause?(name)
|
204
|
+
%w(clause references definitions terms foreword introduction abstract
|
205
|
+
acknowledgements).include? name
|
206
|
+
end
|
207
|
+
|
208
|
+
def preface_block(isoxml, out)
|
209
|
+
p = isoxml.at(ns("//preface")) or return
|
210
|
+
p.elements.each do |e|
|
211
|
+
next if is_clause?(e.name)
|
212
|
+
parse(e, out)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
204
216
|
def copyright_parse(node, out)
|
205
217
|
out.div **{class: "boilerplate-copyright"} do |div|
|
206
218
|
node.children.each { |n| parse(n, div) }
|
@@ -82,6 +82,7 @@ module IsoDoc::Function
|
|
82
82
|
def make_tr_attr(td, row, totalrows, header)
|
83
83
|
style = td.name == "th" ? "font-weight:bold;" : ""
|
84
84
|
td["align"] and style += "text-align:#{td['align']};"
|
85
|
+
td["valign"] and style += "vertical-align:#{td['valign']};"
|
85
86
|
rowmax = td["rowspan"] ? row + td["rowspan"].to_i - 1 : row
|
86
87
|
style += <<~STYLE
|
87
88
|
border-top:#{row.zero? ? "#{SW} 1.5pt;" : 'none;'}
|
@@ -80,6 +80,7 @@ module IsoDoc::Function
|
|
80
80
|
def make_body3(body, docxml)
|
81
81
|
body.div **{ class: "main-section" } do |div3|
|
82
82
|
boilerplate docxml, div3
|
83
|
+
preface_block docxml, div3
|
83
84
|
abstract docxml, div3
|
84
85
|
foreword docxml, div3
|
85
86
|
introduction docxml, div3
|
@@ -103,6 +104,7 @@ module IsoDoc::Function
|
|
103
104
|
@meta.version isoxml, out
|
104
105
|
@meta.url isoxml, out
|
105
106
|
@meta.keywords isoxml, out
|
107
|
+
@meta.note isoxml, out
|
106
108
|
@meta.get
|
107
109
|
end
|
108
110
|
|
@@ -220,6 +222,7 @@ module IsoDoc::Function
|
|
220
222
|
when "feedback-statement" then feedback_parse(node, out)
|
221
223
|
when "passthrough" then passthrough_parse(node, out)
|
222
224
|
when "variant" then variant_parse(node, out)
|
225
|
+
when "amend" then amend_parse(node, out)
|
223
226
|
when "tab" then clausedelimspace(out) # in Presentation XML only
|
224
227
|
else
|
225
228
|
error_parse(node, out)
|
data/lib/isodoc/i18n.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "yaml"
|
2
2
|
|
3
|
-
# TODO: Cleanup and generalize
|
4
3
|
module IsoDoc
|
5
4
|
class I18n
|
6
5
|
def load_yaml(lang, script, i18nyaml = nil)
|
@@ -43,55 +42,6 @@ module IsoDoc
|
|
43
42
|
@labels.each do |k, v|
|
44
43
|
self.class.send(:define_method, k.downcase) { v }
|
45
44
|
end
|
46
|
-
=begin
|
47
|
-
@term_def_boilerplate = y["term_def_boilerplate"]
|
48
|
-
@scope_lbl = y["scope"]
|
49
|
-
@symbols_lbl = y["symbols"]
|
50
|
-
@table_of_contents_lbl = y["table_of_contents"]
|
51
|
-
@introduction_lbl = y["introduction"]
|
52
|
-
@foreword_lbl = y["foreword"]
|
53
|
-
@abstract_lbl = y["abstract"]
|
54
|
-
@termsdef_lbl = y["termsdef"]
|
55
|
-
@termsdefsymbols_lbl = y["termsdefsymbols"]
|
56
|
-
@normref_lbl = y["normref"]
|
57
|
-
@bibliography_lbl = y["bibliography"]
|
58
|
-
@clause_lbl = y["clause"]
|
59
|
-
@annex_lbl = y["annex"]
|
60
|
-
@appendix_lbl = y["appendix"]
|
61
|
-
@no_terms_boilerplate = y["no_terms_boilerplate"]
|
62
|
-
@internal_terms_boilerplate = y["internal_terms_boilerplate"]
|
63
|
-
@norm_with_refs_pref = y["norm_with_refs_pref"]
|
64
|
-
@norm_empty_pref = y["norm_empty_pref"]
|
65
|
-
@external_terms_boilerplate = y["external_terms_boilerplate"]
|
66
|
-
@internal_external_terms_boilerplate =
|
67
|
-
y["internal_external_terms_boilerplate"]
|
68
|
-
@note_lbl = y["note"]
|
69
|
-
@note_xref_lbl = y["note_xref"]
|
70
|
-
@termnote_lbl = y["termnote"]
|
71
|
-
@figure_lbl = y["figure"]
|
72
|
-
@list_lbl = y["list"]
|
73
|
-
@formula_lbl = y["formula"]
|
74
|
-
@inequality_lbl = y["inequality"]
|
75
|
-
@table_lbl = y["table"]
|
76
|
-
@key_lbl = y["key"]
|
77
|
-
@example_lbl = y["example"]
|
78
|
-
@example_xref_lbl = y["example_xref"]
|
79
|
-
@where_lbl = y["where"]
|
80
|
-
@wholeoftext_lbl = y["wholeoftext"]
|
81
|
-
@draft_lbl = y["draft_label"]
|
82
|
-
@inform_annex_lbl = y["inform_annex"]
|
83
|
-
@norm_annex_lbl = y["norm_annex"]
|
84
|
-
@modified_lbl = y["modified"]
|
85
|
-
@deprecated_lbl = y["deprecated"]
|
86
|
-
@source_lbl = y["source"]
|
87
|
-
@and_lbl = y["and"]
|
88
|
-
@all_parts_lbl = y["all_parts"]
|
89
|
-
@permission_lbl = y["permission"]
|
90
|
-
@recommendation_lbl = y["recommendation"]
|
91
|
-
@requirement_lbl = y["requirement"]
|
92
|
-
@locality = y["locality"]
|
93
|
-
@admonition = y["admonition"]
|
94
|
-
=end
|
95
45
|
end
|
96
46
|
|
97
47
|
def self.l10n(x, lang = @lang, script = @script)
|
@@ -116,6 +66,14 @@ module IsoDoc
|
|
116
66
|
end
|
117
67
|
end
|
118
68
|
|
69
|
+
def multiple_and(names, andword)
|
70
|
+
return '' if names.empty?
|
71
|
+
return names[0] if names.length == 1
|
72
|
+
(names.length == 2) &&
|
73
|
+
(return l10n("#{names[0]} #{andword} #{names[1]}", @lang, @script))
|
74
|
+
l10n(names[0..-2].join(', ') + " #{andword} #{names[-1]}", @lang, @script)
|
75
|
+
end
|
76
|
+
|
119
77
|
#module_function :l10n
|
120
78
|
|
121
79
|
end
|
data/lib/isodoc/metadata.rb
CHANGED
@@ -4,11 +4,6 @@ require_relative './metadata_date'
|
|
4
4
|
|
5
5
|
module IsoDoc
|
6
6
|
class Metadata
|
7
|
-
DATETYPES = %w{published accessed created implemented obsoleted confirmed
|
8
|
-
updated issued received transmitted copied unchanged
|
9
|
-
circulated vote-started
|
10
|
-
vote-ended}.freeze
|
11
|
-
|
12
7
|
attr_accessor :fonts_options
|
13
8
|
|
14
9
|
def ns(xpath)
|
@@ -98,8 +93,9 @@ module IsoDoc
|
|
98
93
|
|
99
94
|
def doctype(isoxml, _out)
|
100
95
|
b = isoxml&.at(ns('//bibdata/ext/doctype'))&.text || return
|
101
|
-
|
102
|
-
|
96
|
+
set(:doctype, status_print(b))
|
97
|
+
b = isoxml&.at(ns('//local_bibdata/ext/doctype'))&.text || return
|
98
|
+
set(:doctype_display, status_print(b))
|
103
99
|
end
|
104
100
|
|
105
101
|
def iso?(org)
|
@@ -109,7 +105,7 @@ module IsoDoc
|
|
109
105
|
name == 'International Organization for Standardization')
|
110
106
|
end
|
111
107
|
|
112
|
-
def
|
108
|
+
def agency1(xml)
|
113
109
|
agency = ''
|
114
110
|
publisher = []
|
115
111
|
xml.xpath(ns("//bibdata/contributor[xmlns:role/@type = 'publisher']/"\
|
@@ -119,36 +115,48 @@ module IsoDoc
|
|
119
115
|
publisher << name if name
|
120
116
|
agency = iso?(org) ? "ISO/#{agency}" : "#{agency}#{agency1}/"
|
121
117
|
end
|
118
|
+
[agency, publisher]
|
119
|
+
end
|
120
|
+
|
121
|
+
def agency(xml)
|
122
|
+
agency, publisher = agency1(xml)
|
122
123
|
set(:agency, agency.sub(%r{/$}, ''))
|
123
|
-
set(:publisher, multiple_and(publisher, @labels['and']))
|
124
|
+
set(:publisher, @i18n.multiple_and(publisher, @labels['and']))
|
125
|
+
agency_addr(xml)
|
124
126
|
end
|
125
127
|
|
126
|
-
def
|
127
|
-
|
128
|
-
|
129
|
-
(
|
130
|
-
|
131
|
-
|
128
|
+
def agency_addr(xml)
|
129
|
+
a = xml.at(ns("//bibdata/contributor[xmlns:role/@type = 'publisher'][1]/"\
|
130
|
+
"organization")) or return
|
131
|
+
n = a.at(ns("./subdivision")) and set(:subdivision, n.text)
|
132
|
+
n = a.at(ns("./address/formattedAddress")) and
|
133
|
+
set(:pub_address, n.children.to_xml)
|
134
|
+
n = a.at(ns("./phone[not(@type = 'fax')]")) and set(:pub_phone, n.text)
|
135
|
+
n = a.at(ns("./phone[@type = 'fax']")) and set(:pub_fax, n.text)
|
136
|
+
n = a.at(ns("./email")) and set(:pub_email, n.text)
|
137
|
+
n = a.at(ns("./uri")) and set(:pub_uri, n.text)
|
132
138
|
end
|
133
139
|
|
134
140
|
def docstatus(isoxml, _out)
|
135
|
-
docstatus = isoxml.at(ns('//bibdata/status/stage'))
|
136
141
|
set(:unpublished, true)
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
(
|
142
|
-
|
143
|
-
set(:
|
144
|
-
|
145
|
-
|
146
|
-
|
142
|
+
return unless docstatus = isoxml.at(ns('//bibdata/status/stage'))
|
143
|
+
docstatus_local = isoxml.at(ns('//local_bibdata/status/stage'))
|
144
|
+
set(:stage, status_print(docstatus.text))
|
145
|
+
docstatus_local and
|
146
|
+
set(:stage_display, status_print(docstatus_local.text))
|
147
|
+
(i = isoxml&.at(ns('//bibdata/status/substage'))&.text) &&
|
148
|
+
set(:substage, i)
|
149
|
+
(i = isoxml&.at(ns('//local_bibdata/status/substage'))&.text) &&
|
150
|
+
set(:substage_display, i)
|
151
|
+
(i = isoxml&.at(ns('//bibdata/status/iteration'))&.text) &&
|
152
|
+
set(:iteration, i)
|
153
|
+
set(:unpublished, unpublished(docstatus.text))
|
154
|
+
unpublished(docstatus.text) &&
|
155
|
+
set(:stageabbr, stage_abbr(docstatus.text))
|
147
156
|
end
|
148
157
|
|
149
158
|
def stage_abbr(docstatus)
|
150
|
-
status_print(docstatus).split(/ /)
|
151
|
-
.map { |s| s[0].upcase }.join('')
|
159
|
+
status_print(docstatus).split(/ /).map { |s| s[0].upcase }.join('')
|
152
160
|
end
|
153
161
|
|
154
162
|
def unpublished(status)
|
@@ -156,7 +164,7 @@ module IsoDoc
|
|
156
164
|
end
|
157
165
|
|
158
166
|
def status_print(status)
|
159
|
-
status.split(
|
167
|
+
status.split(/[- ]/).map(&:capitalize).join(' ')
|
160
168
|
end
|
161
169
|
|
162
170
|
def docid(isoxml, _out)
|
@@ -170,12 +178,10 @@ module IsoDoc
|
|
170
178
|
end
|
171
179
|
|
172
180
|
def draftinfo(draft, revdate)
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
draftinfo += ')'
|
178
|
-
end
|
181
|
+
return "" unless draft
|
182
|
+
draftinfo = " (#{@labels['draft_label']} #{draft}"
|
183
|
+
draftinfo += ", #{revdate}" if revdate
|
184
|
+
draftinfo += ')'
|
179
185
|
l10n(draftinfo, @lang, @script)
|
180
186
|
end
|
181
187
|
|
@@ -231,5 +237,13 @@ module IsoDoc
|
|
231
237
|
isoxml.xpath(ns('//bibdata/keyword')).each { |kw| ret << kw.text }
|
232
238
|
set(:keywords, ret)
|
233
239
|
end
|
240
|
+
|
241
|
+
def note(isoxml, _out)
|
242
|
+
ret = []
|
243
|
+
isoxml.xpath(ns("//bibdata/note[@type = 'title-footnote']")).each do |n|
|
244
|
+
ret << n.text
|
245
|
+
end
|
246
|
+
set(:title_footnote, ret)
|
247
|
+
end
|
234
248
|
end
|
235
249
|
end
|
data/lib/isodoc/metadata_date.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
class Metadata
|
3
|
+
DATETYPES = %w{published accessed created implemented obsoleted confirmed
|
4
|
+
updated issued received transmitted copied unchanged
|
5
|
+
circulated vote-started
|
6
|
+
vote-ended}.freeze
|
7
|
+
|
3
8
|
def months
|
4
9
|
{
|
5
10
|
"01": @labels["month_january"],
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
class PresentationXMLConvert < ::IsoDoc::Convert
|
3
|
+
def bibdata(docxml)
|
4
|
+
a = docxml.at(ns("//bibdata")) or return
|
5
|
+
b = a.dup
|
6
|
+
b.name = "local_bibdata"
|
7
|
+
bibdata_i18n(b)
|
8
|
+
a.next = b
|
9
|
+
end
|
10
|
+
|
11
|
+
def bibdata_i18n(b)
|
12
|
+
hash_translate(b, @i18n.get["doctype_dict"], "./ext/doctype")
|
13
|
+
hash_translate(b, @i18n.get["stage_dict"], "./status/stage")
|
14
|
+
hash_translate(b, @i18n.get["substage_dict"], "./status/substage")
|
15
|
+
end
|
16
|
+
|
17
|
+
def hash_translate(bibdata, hash, xpath)
|
18
|
+
hash.is_a? Hash or return
|
19
|
+
x = bibdata.at(ns(xpath)) or return
|
20
|
+
hash[x.text] or return
|
21
|
+
x.children = hash[x.text]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|