metanorma-itu 1.0.16 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,8 @@ module IsoDoc
11
11
  File.expand_path(File.join(here, "html", "International_Telecommunication_Union_Logo.svg")))
12
12
  set(:logo_comb,
13
13
  File.expand_path(File.join(here, "html", "itu-document-comb.png")))
14
- set(:logo_word, File.expand_path(File.join(here, "html", "International_Telecommunication_Union_Logo.svg")))
14
+ set(:logo_word,
15
+ File.expand_path(File.join(here, "html", "International_Telecommunication_Union_Logo.svg")))
15
16
  end
16
17
 
17
18
  def title(isoxml, _out)
@@ -68,11 +69,18 @@ module IsoDoc
68
69
  end
69
70
 
70
71
  def keywords(isoxml, _out)
71
- keywords = []
72
- isoxml.xpath(ns("//bibdata/keyword")).each do |kw|
73
- keywords << kw.text
72
+ super
73
+ set(:keywords, get[:keywords].sort)
74
+ end
75
+
76
+ def doctype(isoxml, _out)
77
+ d = isoxml&.at(ns("//bibdata/ext/doctype"))&.text
78
+ set(:doctype_original, d)
79
+ if d == "recommendation-annex"
80
+ set(:doctype, "Recommendation")
81
+ else
82
+ super
74
83
  end
75
- set(:keywords, keywords.sort)
76
84
  end
77
85
 
78
86
  def ip_notice_received(isoxml, _out)
@@ -21,19 +21,6 @@ module IsoDoc
21
21
  "itu.recommendation.xsl"
22
22
  end
23
23
  end
24
-
25
- def convert(filename, file = nil, debug = false)
26
- file = File.read(filename, encoding: "utf-8") if file.nil?
27
- docxml, outname_html, dir = convert_init(file, filename, debug)
28
- /\.xml$/.match(filename) or
29
- filename = Tempfile.open([outname_html, ".xml"], encoding: "utf-8") do |f|
30
- f.write file
31
- f.path
32
- end
33
- FileUtils.rm_rf dir
34
- ::Metanorma::Output::XslfoPdf.new.convert(
35
- filename, outname_html + ".pdf", File.join(@libdir, pdf_stylesheet(docxml)))
36
- end
37
24
  end
38
25
  end
39
26
  end
@@ -0,0 +1,10 @@
1
+ require_relative "base_convert"
2
+ require "isodoc"
3
+
4
+ module IsoDoc
5
+ module ITU
6
+ class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
7
+ end
8
+ end
9
+ end
10
+
@@ -5,6 +5,7 @@ require "fileutils"
5
5
  module IsoDoc
6
6
  module ITU
7
7
  module BaseConvert
8
+ =begin
8
9
  def norm_ref(isoxml, out, num)
9
10
  q = "//bibliography/references[@normative = 'true']"
10
11
  f = isoxml.at(ns(q)) or return num
@@ -15,14 +16,17 @@ module IsoDoc
15
16
  end
16
17
  num
17
18
  end
19
+ =end
18
20
 
19
21
  def nonstd_bibitem(list, b, ordinal, biblio)
20
- list.p **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
22
+ list.tr **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
21
23
  id = render_identifier(bibitem_ref_code(b))
22
- ref << (id[0] || "[#{id[1]}]")
23
- date_note_process(b, ref)
24
- insert_tab(ref, 1)
25
- reference_format(b, ref)
24
+ ref.td **{style: "vertical-align:top"} do |td|
25
+ td << (id[0] || "[#{id[1]}]")&.
26
+ gsub(/-/, "&#x2011;")&.gsub(/ /, "&#xa0;")
27
+ date_note_process(b, td)
28
+ end
29
+ ref.td { |td| reference_format(b, td) }
26
30
  end
27
31
  end
28
32
 
@@ -30,11 +34,35 @@ module IsoDoc
30
34
  nonstd_bibitem(list, b, ordinal, biblio)
31
35
  end
32
36
 
37
+ def biblio_list(f, div, biblio)
38
+ div.table **{ class: "biblio", border: "0" } do |t|
39
+ i = 0
40
+ t.tbody do |tbody|
41
+ f.elements.each do |b|
42
+ if b.name == "bibitem"
43
+ next if implicit_reference(b)
44
+ i += 1
45
+ nonstd_bibitem(tbody, b, i, biblio)
46
+ else
47
+ unless %w(title clause references).include? b.name
48
+ tbody.tx do |tx|
49
+ parse(b, tx)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ f.xpath(ns("./clause | ./references")).each do |x|
57
+ parse(x, div)
58
+ end
59
+ end
60
+
33
61
  def bracket_if_num(x)
34
- return nil if x.nil?
35
- x = x.text.sub(/^\[/, "").sub(/\]$/, "")
36
- "[#{x}]"
37
- end
62
+ return nil if x.nil?
63
+ x = x.text.sub(/^\[/, "").sub(/\]$/, "")
64
+ "[#{x}]"
65
+ end
38
66
 
39
67
  def reference_format(b, r)
40
68
  reference_format_start(b, r)
@@ -50,7 +78,7 @@ module IsoDoc
50
78
  end
51
79
 
52
80
  IGNORE_IDS =
53
- "@type = 'DOI' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor'".freeze
81
+ "@type = 'DOI' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor'".freeze
54
82
 
55
83
  def multi_bibitem_ref_code(b)
56
84
  id = b.xpath(ns("./docidentifier[not(@type = 'metanorma' or #{IGNORE_IDS})]"))
@@ -96,11 +124,6 @@ module IsoDoc
96
124
  /\.$/.match(title&.text) or r << "."
97
125
  end
98
126
  end
99
-
100
- def reference_names(ref)
101
- super
102
- @anchors[ref["id"]] = { xref: @anchors[ref["id"]][:xref].sub(/^\[/, '').sub(/\]$/, '') }
103
- end
104
127
  end
105
128
  end
106
129
  end
@@ -1,8 +1,8 @@
1
1
  module IsoDoc
2
2
  module ITU
3
3
  module BaseConvert
4
- def term_def_title(node)
5
- node
4
+ def term_def_title(node)
5
+ node
6
6
  end
7
7
 
8
8
  def terms_defs(node, out, num)
@@ -35,11 +35,11 @@ module IsoDoc
35
35
  def termdef_parse1(node, div, term, defn, source)
36
36
  div.p **{ class: "TermNum", id: node["id"] } do |p|
37
37
  p.b do |b|
38
- b << anchor(node["id"], :label)
38
+ b << @xrefs.anchor(node["id"], :label)
39
39
  insert_tab(b, 1)
40
40
  term.children.each { |n| parse(n, b) }
41
41
  end
42
- source and p << " [#{source.value}]"
42
+ source and p << " #{bracket_opt(source.value)}"
43
43
  p << ": "
44
44
  end
45
45
  defn and defn.children.each { |n| parse(n, div) }
@@ -60,24 +60,11 @@ module IsoDoc
60
60
  end
61
61
 
62
62
  def termnote_parse(node, out)
63
- out.div **{ class: "Note" } do |div|
64
- first = node.first_element_child
65
- div.p do |p|
66
- p << note_label(node) # "#{anchor(node['id'], :label) || '???'}: "
67
- para_then_remainder(first, node, p, div)
68
- end
69
- end
70
- end
71
-
72
- def termnote_anchor_names(docxml)
73
- docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
74
- c = IsoDoc::Function::XrefGen::Counter.new
75
- notes = t.xpath(ns(".//termnote"))
76
- notes.each do |n|
77
- return if n["id"].nil? || n["id"].empty?
78
- idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
79
- @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl,
80
- "termnote", false)
63
+ out.div **note_attrs(node) do |div|
64
+ first = node.first_element_child
65
+ div.p do |p|
66
+ p << note_label(node) # "#{@xrefs.anchor(node['id'], :label) || '???'}: "
67
+ para_then_remainder(first, node, p, div)
81
68
  end
82
69
  end
83
70
  end
@@ -118,11 +118,11 @@ module IsoDoc
118
118
  end
119
119
 
120
120
  def formula_parse1(node, out)
121
- out.div **attr_code(id: node["id"], class: "formula") do |div|
121
+ out.div **attr_code(class: "formula") do |div|
122
122
  div.p **attr_code(class: "formula") do |p|
123
123
  insert_tab(div, 1)
124
124
  parse(node.at(ns("./stem")), div)
125
- lbl = anchor(node['id'], :label, false)
125
+ lbl = @xrefs.anchor(node['id'], :label, false)
126
126
  unless lbl.nil?
127
127
  insert_tab(div, 1)
128
128
  div << "(#{lbl})"
@@ -153,10 +153,8 @@ module IsoDoc
153
153
  super.merge(valign: "top")
154
154
  end
155
155
 
156
- def ol_parse(node, out)
157
- out.ol **attr_code(class: node["class"], id: node["id"] ) do |ol|
158
- node.children.each { |n| parse(n, ol) }
159
- end
156
+ def ol_attrs(node)
157
+ { class: node["class"], id: node["id"], style: keep_style(node) }
160
158
  end
161
159
 
162
160
  def toWord(result, filename, dir, header)
@@ -214,8 +212,9 @@ module IsoDoc
214
212
  next unless auth && dest
215
213
  t == "copyright" and p = auth&.at(".//p") and
216
214
  p["class"] = "boilerplateHdr"
217
- auth&.xpath(".//p[not(@class)]")&.each do |p|
215
+ auth&.xpath(".//p[not(@class)]")&.each_with_index do |p, i|
218
216
  p["class"] = "boilerplate"
217
+ i == 0 && t == "copyright" and p["style"] = "text-align:center;"
219
218
  end
220
219
  auth << "<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>" unless t == "copyright"
221
220
  dest.replace(auth.remove)
@@ -4,14 +4,19 @@ require "fileutils"
4
4
 
5
5
  module IsoDoc
6
6
  module ITU
7
- module BaseConvert
7
+ class Xref < IsoDoc::Xref
8
+ def initialize(lang, script, klass, labels, options)
9
+ super
10
+ @hierarchical_assets = options[:hierarchical_assets]
11
+ end
12
+
8
13
  def annex_name_lbl(clause, num)
9
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
14
+ lbl = clause["obligation"] == "informative" ? @labels["appendix"] : @labels["annex"]
10
15
  l10n("<b>#{lbl} #{num}</b>")
11
16
  end
12
17
 
13
18
  def annex_names(clause, num)
14
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
19
+ lbl = clause["obligation"] == "informative" ? @labels["appendix"] : @labels["annex"]
15
20
  @anchors[clause["id"]] =
16
21
  { label: annex_name_lbl(clause, num), type: "clause",
17
22
  xref: "#{lbl} #{num}", level: 1 }
@@ -67,10 +72,6 @@ module IsoDoc
67
72
  termexample_anchor_names(d)
68
73
  end
69
74
 
70
- def hiersep
71
- "-"
72
- end
73
-
74
75
  MIDDLE_SECTIONS = "//clause[title = 'Scope'] | "\
75
76
  "//foreword | //introduction | //acknowledgements | "\
76
77
  "//references[@normative = 'true'] | "\
@@ -85,7 +86,7 @@ module IsoDoc
85
86
  end
86
87
 
87
88
  def sequential_figure_names(clause)
88
- c = IsoDoc::Function::XrefGen::Counter.new
89
+ c = IsoDoc::XrefGen::Counter.new
89
90
  j = 0
90
91
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).each do |t|
91
92
  if t.parent.name == "figure" then j += 1
@@ -96,12 +97,12 @@ module IsoDoc
96
97
  label = c.print + (j.zero? ? "" : "-#{(96 + j).chr.to_s}")
97
98
  next if t["id"].nil? || t["id"].empty?
98
99
  @anchors[t["id"]] =
99
- anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
100
+ anchor_struct(label, nil, @labels["figure"], "figure", t["unnumbered"])
100
101
  end
101
102
  end
102
103
 
103
104
  def hierarchical_figure_names(clause, num)
104
- c = IsoDoc::Function::XrefGen::Counter.new
105
+ c = IsoDoc::XrefGen::Counter.new
105
106
  j = 0
106
107
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).each do |t|
107
108
  if t.parent.name == "figure" then j += 1
@@ -112,7 +113,7 @@ module IsoDoc
112
113
  label = "#{num}#{hiersep}#{c.print}" +
113
114
  (j.zero? ? "" : "#{hierfigsep}#{(96 + j).chr.to_s}")
114
115
  next if t["id"].nil? || t["id"].empty?
115
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure",
116
+ @anchors[t["id"]] = anchor_struct(label, nil, @labels["figure"], "figure",
116
117
  t["unnumbered"])
117
118
  end
118
119
  end
@@ -120,12 +121,42 @@ module IsoDoc
120
121
  def sequential_formula_names(clause)
121
122
  clause&.first&.xpath(ns(MIDDLE_SECTIONS))&.each do |c|
122
123
  if c["id"] && @anchors[c["id"]]
123
- hierarchical_formula_names(c, @anchors[c["id"]][:label] || @anchors[c["id"]][:xref] || "???")
124
+ hierarchical_formula_names(c, @anchors[c["id"]][:label] ||
125
+ @anchors[c["id"]][:xref] || "???")
124
126
  else
125
127
  hierarchical_formula_names(c, "???")
126
128
  end
127
129
  end
128
130
  end
131
+
132
+ def hierarchical_formula_names(clause, num)
133
+ c = IsoDoc::XrefGen::Counter.new
134
+ clause.xpath(ns(".//formula")).each do |t|
135
+ next if t["id"].nil? || t["id"].empty?
136
+ @anchors[t["id"]] =
137
+ anchor_struct("#{num}-#{c.increment(t).print}", nil,
138
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
139
+ "formula", t["unnumbered"])
140
+ end
141
+ end
142
+
143
+ def reference_names(ref)
144
+ super
145
+ @anchors[ref["id"]] = { xref: @anchors[ref["id"]][:xref].sub(/^\[/, '').sub(/\]$/, '') }
146
+ end
147
+
148
+ def termnote_anchor_names(docxml)
149
+ docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
150
+ c = IsoDoc::XrefGen::Counter.new
151
+ notes = t.xpath(ns(".//termnote"))
152
+ notes.each do |n|
153
+ return if n["id"].nil? || n["id"].empty?
154
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
155
+ @anchors[n["id"]] = anchor_struct(idx, n, @labels["note_xref"],
156
+ "termnote", false)
157
+ end
158
+ end
159
+ end
129
160
  end
130
161
  end
131
162
  end
@@ -30,18 +30,16 @@ module Metanorma
30
30
  "Metanorma::ITU #{Metanorma::ITU::VERSION}"
31
31
  end
32
32
 
33
- def input_to_isodoc(file, filename)
34
- Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
35
- end
36
-
37
- def output(isodoc_node, outname, format, options={})
33
+ def output(isodoc_node, inname, outname, format, options={})
38
34
  case format
39
35
  when :html
40
- IsoDoc::ITU::HtmlConvert.new(options).convert(outname, isodoc_node)
36
+ IsoDoc::ITU::HtmlConvert.new(options).convert(inname, isodoc_node, nil, outname)
41
37
  when :doc
42
- IsoDoc::ITU::WordConvert.new(options).convert(outname, isodoc_node)
38
+ IsoDoc::ITU::WordConvert.new(options).convert(inname, isodoc_node, nil, outname)
43
39
  when :pdf
44
- IsoDoc::ITU::PdfConvert.new(options).convert(outname, isodoc_node)
40
+ IsoDoc::ITU::PdfConvert.new(options).convert(inname, isodoc_node, nil, outname)
41
+ when :presentation
42
+ IsoDoc::ITU::PresentationXMLConvert.new(options).convert(inname, isodoc_node, nil, outname)
45
43
  else
46
44
  super
47
45
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ITU
3
- VERSION = "1.0.16"
3
+ VERSION = "1.1.2"
4
4
  end
5
5
  end
@@ -26,10 +26,11 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "htmlentities", "~> 4.3.4"
28
28
  spec.add_dependency "ruby-jing"
29
- spec.add_dependency "metanorma-standoc", "~> 1.3.0"
30
- spec.add_dependency "isodoc", "~> 1.0.0"
29
+ spec.add_dependency "metanorma-standoc", "~> 1.4.0"
30
+ spec.add_dependency "isodoc", "~> 1.1.0"
31
31
 
32
32
  spec.add_development_dependency "byebug", "~> 9.1"
33
+ spec.add_development_dependency "sassc", "2.4.0"
33
34
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
34
35
  spec.add_development_dependency "guard", "~> 2.14"
35
36
  spec.add_development_dependency "guard-rspec", "~> 4.7"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.16
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2020-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.3.0
47
+ version: 1.4.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.3.0
54
+ version: 1.4.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: isodoc
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: 1.1.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: 1.1.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: byebug
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '9.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: sassc
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 2.4.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 2.4.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: equivalent-xml
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -279,6 +293,7 @@ files:
279
293
  - lib/isodoc/itu/itu.resolution.xsl
280
294
  - lib/isodoc/itu/metadata.rb
281
295
  - lib/isodoc/itu/pdf_convert.rb
296
+ - lib/isodoc/itu/presentation_xml_convert.rb
282
297
  - lib/isodoc/itu/ref.rb
283
298
  - lib/isodoc/itu/terms.rb
284
299
  - lib/isodoc/itu/word_convert.rb
@@ -292,7 +307,7 @@ homepage: https://github.com/metanorma/metanorma-itu
292
307
  licenses:
293
308
  - BSD-2-Clause
294
309
  metadata: {}
295
- post_install_message:
310
+ post_install_message:
296
311
  rdoc_options: []
297
312
  require_paths:
298
313
  - lib
@@ -307,9 +322,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
307
322
  - !ruby/object:Gem::Version
308
323
  version: '0'
309
324
  requirements: []
310
- rubyforge_project:
311
- rubygems_version: 2.7.6
312
- signing_key:
325
+ rubygems_version: 3.0.3
326
+ signing_key:
313
327
  specification_version: 4
314
328
  summary: Metanorma for the ITU
315
329
  test_files: []