metanorma-itu 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc42b5f0ce3f11b23b8bcd171e19342c3f2c237742e8084cb6545af5a56e954f
4
- data.tar.gz: 73ae3b1e5cf914b8e715e1ccb14b0492819cbe811334cbfe7c5b24787490f5bd
3
+ metadata.gz: 39299e29cd911ccc2c3ee6da83a7eb7bc2c82fae171e59f01ffc079a757d941e
4
+ data.tar.gz: b7dbd2216cdf8afb36d5104bff9353450e3da6617cc75c67f448c06ea94eab4d
5
5
  SHA512:
6
- metadata.gz: 8f72656f8c80c6bff4e48aba41f45d0342fb6fc5e542eb0410908efb465862ba7f3b9dee3cc6ef4ef5175fa60fdb05570339d9718b99193f56d6b2e4818734b0
7
- data.tar.gz: 13071d691ced638d57cb4085835b359e00a7851c6198739159ccb5e675b491e34983fba7a89c16e6a090a3172a9e6ef577b46c2df4948125b279d7b510223c61
6
+ metadata.gz: f5bb0e107c92028f5c34a11b8a0331a34a2e5adc15892703deffbe4391e4cc5d7582c95589819f917eeae1362de8adbd683fb546d193b3d8e7ae230df7e3c7fa
7
+ data.tar.gz: 3330e9cfb48867c2031b89eec8ac9402a01423b288d3f14e5395dba16b6f24d681d3024bf150c6cf676a6a116e5310eed03999c47b012689908f2671efceb760
data/README.adoc CHANGED
@@ -1,11 +1,11 @@
1
1
  = metanorma-itu: Asciidoctor processor for ITU
2
2
 
3
3
  image:https://img.shields.io/gem/v/metanorma-itu.svg["Gem Version", link="https://rubygems.org/gems/metanorma-itu"]
4
- image:https://travis-ci.com/metanorma/metanorma-itu.svg?branch=master["Build Status", link="https://travis-ci.com/metanorma/metanorma-itu"]
4
+ image:https://travis-ci.com/metanorma/metanorma-itu.svg["Build Status", link="https://travis-ci.com/metanorma/metanorma-itu"]
5
+ image:https://ci.appveyor.com/api/projects/status/pl6lh4a9224ijbe1?svg=true["Appveyor Build Status", link="https://ci.appveyor.com/project/metanorma/metanorma-itu"]
5
6
  image:https://codeclimate.com/github/metanorma/metanorma-itu/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-itu"]
6
- image:https://ci.appveyor.com/api/projects/status/lo05dblngrgx2tlq?svg=true["Appveyor Build Status", link="https://ci.appveyor.com/project/ribose/metanorma-itu"]
7
-
8
- WARNING: This gem is still under development.
7
+ image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-itu.svg["Pull Requests", link="https://github.com/metanorma/metanorma-itu/pulls"]
8
+ image:https://img.shields.io/github/commits-since/metanorma/metanorma-itu/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-itu/releases"]
9
9
 
10
10
  == Functionality
11
11
 
@@ -341,11 +341,6 @@
341
341
  </oneOrMore>
342
342
  </element>
343
343
  </define>
344
- <define name="tclass">
345
- <element name="name">
346
- <text/>
347
- </element>
348
- </define>
349
344
  <define name="thead">
350
345
  <element name="thead">
351
346
  <ref name="tr"/>
@@ -515,19 +510,22 @@
515
510
  <attribute name="subsequence"/>
516
511
  </optional>
517
512
  <optional>
518
- <ref name="source"/>
513
+ <attribute name="class"/>
519
514
  </optional>
520
515
  <optional>
521
- <ref name="tname"/>
516
+ <ref name="source"/>
522
517
  </optional>
523
518
  <optional>
524
- <ref name="tclass"/>
519
+ <ref name="tname"/>
525
520
  </optional>
526
521
  <choice>
527
522
  <ref name="image"/>
528
523
  <ref name="video"/>
529
524
  <ref name="audio"/>
530
525
  <ref name="pre"/>
526
+ <oneOrMore>
527
+ <ref name="paragraph-with-footnote"/>
528
+ </oneOrMore>
531
529
  <zeroOrMore>
532
530
  <ref name="figure"/>
533
531
  </zeroOrMore>
@@ -0,0 +1,92 @@
1
+ module Asciidoctor
2
+ module ITU
3
+ class Converter < Standoc::Converter
4
+ def sections_cleanup(x)
5
+ super
6
+ x.xpath("//*[@inline-header]").each do |h|
7
+ h.delete("inline-header")
8
+ end
9
+ end
10
+
11
+ def cleanup(xmldoc)
12
+ symbols_cleanup(xmldoc)
13
+ super
14
+ end
15
+
16
+ def smartquotes_cleanup(xmldoc)
17
+ return super if @smartquotes
18
+ xmldoc.traverse do |n|
19
+ next unless n.text?
20
+ n.replace(n.text.gsub(/\u2019|\u2018|\u201a|\u201b/, "'").
21
+ gsub(/\u201c|\u201d|\u201e|\u201f/, '"'))
22
+ end
23
+ xmldoc
24
+ end
25
+
26
+ def termdef_cleanup(xmldoc)
27
+ xmldoc.xpath("//term/preferred").each do |p|
28
+ if ["terms defined elsewhere",
29
+ "terms defined in this recommendation"].include? p.text.downcase
30
+ p.name = "title"
31
+ p.parent.name = "terms"
32
+ end
33
+ end
34
+ super
35
+ end
36
+
37
+ def termdef_boilerplate_cleanup(xmldoc)
38
+ end
39
+
40
+ def symbols_cleanup(xmldoc)
41
+ sym = xmldoc.at("//definitions/title")
42
+ sym and sym&.next_element&.name == "dl" and
43
+ sym.next = "<p>#{@symbols_boilerplate}</p>"
44
+ end
45
+
46
+ PUBLISHER = "./contributor[role/@type = 'publisher']/organization".freeze
47
+
48
+ def pub_class(bib)
49
+ return 1 if bib.at("#{PUBLISHER}[abbreviation = 'ITU']")
50
+ return 1 if bib.at("#{PUBLISHER}[name = 'International Telecommunication Union']")
51
+ return 2 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
52
+ return 2 if bib.at("#{PUBLISHER}[name = 'International Organization "\
53
+ "for Standardization']")
54
+ return 3 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
55
+ return 3 if bib.at("#{PUBLISHER}[name = 'International "\
56
+ "Electrotechnical Commission']")
57
+ return 4 if bib.at("./docidentifier[@type][not(@type = 'DOI' or "\
58
+ "@type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
59
+ 5
60
+ end
61
+
62
+ def sort_biblio(bib)
63
+ bib.sort do |a, b|
64
+ sort_biblio_key(a) <=> sort_biblio_key(b)
65
+ end
66
+ end
67
+
68
+ # sort by: doc class (ITU, ISO, IEC, other standard (not DOI &c), other
69
+ # then standard class (docid class other than DOI &c)
70
+ # then alphanumeric doc id (not DOI &c)
71
+ # then title
72
+ def sort_biblio_key(bib)
73
+ pubclass = pub_class(bib)
74
+ num = bib&.at("./docnumber")&.text
75
+ id = bib&.at("./docidentifier[not(@type = 'DOI' or "\
76
+ "@type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
77
+ metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
78
+ abbrid = metaid unless /^\[\d+\]$/.match(metaid)
79
+ type = id['type'] if id
80
+ title = bib&.at("./title[@type = 'main']")&.text ||
81
+ bib&.at("./title")&.text || bib&.at("./formattedref")&.text
82
+ "#{pubclass} :: #{type} :: #{id&.text || metaid} :: #{title}"
83
+ end
84
+
85
+ def biblio_reorder(xmldoc)
86
+ xmldoc.xpath("//references").each do |r|
87
+ biblio_reorder1(r)
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -3,6 +3,7 @@ require "asciidoctor/standoc/converter"
3
3
  require "fileutils"
4
4
  require_relative "./front.rb"
5
5
  require_relative "./validate.rb"
6
+ require_relative "./cleanup.rb"
6
7
  require_relative "./macros.rb"
7
8
 
8
9
  module Asciidoctor
@@ -12,16 +13,22 @@ module Asciidoctor
12
13
  # schema encapsulation of the document for validation
13
14
  #
14
15
  class Converter < Standoc::Converter
16
+ register_for "itu"
17
+
15
18
  Asciidoctor::Extensions.register do
16
- block PseudocodeBlockMacro
19
+ inline_macro AddMacro
20
+ inline_macro DelMacro
17
21
  end
18
22
 
19
- register_for "itu"
20
-
21
23
  def title_validate(root)
22
24
  nil
23
25
  end
24
26
 
27
+ def init(node)
28
+ super
29
+ @smartquotes = node.attr("smartquotes") == "true"
30
+ end
31
+
25
32
  def makexml(node)
26
33
  result = ["<?xml version='1.0' encoding='UTF-8'?>\n<itu-standard>"]
27
34
  @draft = node.attributes.has_key?("draft")
@@ -39,28 +46,15 @@ module Asciidoctor
39
46
  node.attr("doctype") || "recommendation"
40
47
  end
41
48
 
42
- def example(node)
43
- role = node.role || node.attr("style")
44
- return pseudocode_example(node) if role == "pseudocode"
45
- super
46
- end
47
-
48
- def pseudocode_example(node)
49
+ def olist(node)
49
50
  noko do |xml|
50
- xml.figure **{id: Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
51
- type: "pseudocode"} do |ex|
52
- figure_title(node, ex)
53
- wrap_in_para(node, ex)
51
+ xml.ol **attr_code(id: Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
52
+ class: node.attr("class")) do |xml_ol|
53
+ node.items.each { |item| li(xml_ol, item) }
54
54
  end
55
55
  end.join("\n")
56
56
  end
57
57
 
58
- def init_indent(s)
59
- /^(?<prefix>[ \t]*)(?<suffix>.*)$/ =~ s
60
- prefix = prefix.gsub(/\t/, "&#xa0;&#xa0;&#xa0;&#xa0;").gsub(/ /, "&#xa0;")
61
- prefix + suffix
62
- end
63
-
64
58
  def clause_parse(attrs, xml, node)
65
59
  attrs[:preface] = true if node.attr("style") == "preface"
66
60
  super
@@ -101,18 +95,6 @@ module Asciidoctor
101
95
  File.join(File.dirname(__FILE__), "itu.rng"))
102
96
  end
103
97
 
104
- def sections_cleanup(x)
105
- super
106
- x.xpath("//*[@inline-header]").each do |h|
107
- h.delete("inline-header")
108
- end
109
- end
110
-
111
- def cleanup(xmldoc)
112
- symbols_cleanup(xmldoc)
113
- super
114
- end
115
-
116
98
  def style(n, t)
117
99
  return
118
100
  end
@@ -170,20 +152,6 @@ module Asciidoctor
170
152
  "Definitions"
171
153
  end
172
154
 
173
- def termdef_cleanup(xmldoc)
174
- xmldoc.xpath("//term/preferred").each do |p|
175
- if ["terms defined elsewhere",
176
- "terms defined in this recommendation"].include? p.text.downcase
177
- p.name = "title"
178
- p.parent.name = "terms"
179
- end
180
- end
181
- super
182
- end
183
-
184
- def termdef_boilerplate_cleanup(xmldoc)
185
- end
186
-
187
155
  def terms_extract(div)
188
156
  internal = nil
189
157
  external = nil
@@ -213,12 +181,6 @@ module Asciidoctor
213
181
 
214
182
  NORM_REF = "//bibliography/references[title = 'References']".freeze
215
183
 
216
- def symbols_cleanup(xmldoc)
217
- sym = xmldoc.at("//definitions/title")
218
- sym and sym&.next_element&.name == "dl" and
219
- sym.next = "<p>#{@symbols_boilerplate}</p>"
220
- end
221
-
222
184
  def load_yaml(lang, script)
223
185
  y = if @i18nyaml then YAML.load_file(@i18nyaml)
224
186
  elsif lang == "en"
@@ -49,6 +49,24 @@
49
49
  </choice>
50
50
  </element>
51
51
  </define>
52
+ <define name="ol">
53
+ <element name="ol">
54
+ <attribute name="id">
55
+ <data type="ID"/>
56
+ </attribute>
57
+ <optional>
58
+ <attribute name="class">
59
+ <value>steps</value>
60
+ </attribute>
61
+ </optional>
62
+ <oneOrMore>
63
+ <ref name="li"/>
64
+ </oneOrMore>
65
+ <zeroOrMore>
66
+ <ref name="note"/>
67
+ </zeroOrMore>
68
+ </element>
69
+ </define>
52
70
  <define name="DocumentType">
53
71
  <choice>
54
72
  <value>recommendation</value>
@@ -129,7 +147,37 @@
129
147
  </oneOrMore>
130
148
  </element>
131
149
  </define>
150
+ <define name="TextElement" combine="choice">
151
+ <choice>
152
+ <ref name="add"/>
153
+ <ref name="del"/>
154
+ </choice>
155
+ </define>
132
156
  </include>
157
+ <define name="add">
158
+ <element name="add">
159
+ <choice>
160
+ <ref name="PureTextElement"/>
161
+ <ref name="eref"/>
162
+ <ref name="stem"/>
163
+ <ref name="keyword"/>
164
+ <ref name="xref"/>
165
+ <ref name="hyperlink"/>
166
+ </choice>
167
+ </element>
168
+ </define>
169
+ <define name="del">
170
+ <element name="del">
171
+ <choice>
172
+ <ref name="PureTextElement"/>
173
+ <ref name="eref"/>
174
+ <ref name="stem"/>
175
+ <ref name="keyword"/>
176
+ <ref name="xref"/>
177
+ <ref name="hyperlink"/>
178
+ </choice>
179
+ </element>
180
+ </define>
133
181
  <define name="ipnoticereceived">
134
182
  <element name="ip-notice-received">
135
183
  <data type="boolean"/>
@@ -1,19 +1,27 @@
1
- require "asciidoctor/extensions"
1
+ module Asciidoctor
2
+ module ITU
3
+ class AddMacro < Asciidoctor::Extensions::InlineMacroProcessor
4
+ use_dsl
5
+ named :add
6
+ parse_content_as :text
7
+ using_format :short
2
8
 
3
- class PseudocodeBlockMacro < Asciidoctor::Extensions::BlockProcessor
4
- use_dsl
5
- named :pseudocode
6
- on_context :example, :sourcecode
9
+ def process(parent, _target, attrs)
10
+ out = Asciidoctor::Inline.new(parent, :quoted, attrs["text"]).convert
11
+ %{<add>#{out}</add>}
12
+ end
13
+ end
7
14
 
8
- def init_indent(s)
9
- /^(?<prefix>[ \t]*)(?<suffix>.*)$/ =~ s
10
- prefix = prefix.gsub(/\t/, "\u00a0\u00a0\u00a0\u00a0").gsub(/ /, "\u00a0")
11
- prefix + suffix
12
- end
15
+ class DelMacro < Asciidoctor::Extensions::InlineMacroProcessor
16
+ use_dsl
17
+ named :del
18
+ parse_content_as :text
19
+ using_format :short
13
20
 
14
- def process parent, reader, attrs
15
- attrs['role'] = 'pseudocode'
16
- create_block parent, :example, reader.lines.map { |m| init_indent(m) }, attrs,
17
- content_model: :compound
21
+ def process(parent, _target, attrs)
22
+ out = Asciidoctor::Inline.new(parent, :quoted, attrs["text"]).convert
23
+ %{<del>#{out}</del>}
24
+ end
25
+ end
18
26
  end
19
27
  end
@@ -26,6 +26,7 @@ module Asciidoctor
26
26
  approval_validate(doc)
27
27
  itu_identifier_validate(doc)
28
28
  bibdata_validate(doc.root)
29
+ termdef_style(doc.root)
29
30
  end
30
31
 
31
32
  def approval_validate(xmldoc)
@@ -46,6 +47,19 @@ module Asciidoctor
46
47
  end
47
48
  end
48
49
 
50
+ def termdef_style(xmldoc)
51
+ xmldoc.xpath("//term").each do |t|
52
+ para = t.at("./definition") || return
53
+ term = t.at("./preferred").text
54
+ termdef_warn(term, /^[A-Z][a-z]+/, term, "term is not lowercase")
55
+ termdef_warn(para.text, /^[a-z]/, term, "term definition does not start with capital")
56
+ termdef_warn(para.text, /[^.]$/, term, "term definition does not end with period")
57
+ end
58
+ end
59
+
60
+ def termdef_warn(text, re, term, msg)
61
+ re.match(text) && warn("ITU style: #{term}: #{msg}")
62
+ end
49
63
  end
50
64
  end
51
65
  end
@@ -3,6 +3,7 @@ require_relative "metadata"
3
3
  require "fileutils"
4
4
  require_relative "./ref.rb"
5
5
  require_relative "./xref.rb"
6
+ require_relative "./terms.rb"
6
7
 
7
8
  module IsoDoc
8
9
  module ITU
@@ -40,21 +41,32 @@ module IsoDoc
40
41
  ""
41
42
  end
42
43
 
43
- def figure_parse(node, out)
44
- return pseudocode_parse(node, out) if node["type"] == "pseudocode"
45
- super
44
+ def note_label(node)
45
+ n = get_anchors[node["id"]]
46
+ return "#{@note_lbl} &ndash; " if n.nil? || n[:label].nil? || n[:label].empty?
47
+ l10n("#{@note_lbl} #{n[:label]} &ndash; ")
46
48
  end
47
49
 
48
- def pseudocode_parse(node, out)
49
- @in_figure = true
50
- name = node.at(ns("./name"))
51
- out.div **attr_code(id: node["id"], class: "pseudocode") do |div|
52
- node.children.each do |n|
53
- parse(n, div) unless n.name == "name"
54
- end
55
- sourcecode_name_parse(node, div, name) if name
56
- end
57
- @in_figure = false
50
+ def formula_where(dl, out)
51
+ return unless dl
52
+ out.p { |p| p << l10n("#{@where_lbl}:") }
53
+ parse(dl, out)
54
+ end
55
+
56
+ def prefix_container(container, linkend, _target)
57
+ l10n("#{linkend} #{@labels["in"]} #{anchor(container, :xref)}")
58
+ end
59
+
60
+ def ol_depth(node)
61
+ return super unless node["class"] == "steps" or
62
+ node.at(".//ancestor::xmlns:ol[@class = 'steps']")
63
+ depth = node.ancestors("ul, ol").size + 1
64
+ type = :arabic
65
+ type = :alphabet if [2, 7].include? depth
66
+ type = :roman if [3, 8].include? depth
67
+ type = :alphabet_upper if [4, 9].include? depth
68
+ type = :roman_upper if [5, 10].include? depth
69
+ ol_style(type)
58
70
  end
59
71
 
60
72
  def annex_name(annex, name, div)
@@ -112,70 +124,6 @@ module IsoDoc
112
124
  super
113
125
  end
114
126
 
115
- def terms_defs_title(node)
116
- t = node.at(ns("./title")) and return t.text
117
- super
118
- end
119
-
120
- def terms_defs(node, out, num)
121
- f = node.at(ns(IsoDoc::Convert::TERM_CLAUSE)) or return num
122
- out.div **attr_code(id: f["id"]) do |div|
123
- num = num + 1
124
- clause_name(num, terms_defs_title(f), div, nil)
125
- if f.at(ns("./clause | ./terms | ./term")).nil? then out.p "None."
126
- else
127
- f.children.reject { |c1| c1.name == "title" }.each do |c1|
128
- parse(c1, div)
129
- end
130
- end
131
- end
132
- num
133
- end
134
-
135
- def terms_parse(node, out)
136
- out.div **attr_code(id: node["id"]) do |div|
137
- clause_parse_title(node, div, node.at(ns("./title")), out)
138
- title = node.at(ns("./title"))&.text&.downcase
139
- title == "terms defined elsewhere" and
140
- out.p @labels["elsewhere_terms"]
141
- title == "terms defined in this recommendation" and
142
- out.p @labels["here_terms"]
143
- if node.at(ns("./clause | ./term")).nil? then out.p "None."
144
- else
145
- node.children.reject { |c1| c1.name == "title" }.each do |c1|
146
- parse(c1, div)
147
- end
148
- end
149
- end
150
- end
151
-
152
- def termdef_parse1(node, div, term, defn, source)
153
- div.p **{ class: "TermNum", id: node["id"] } do |p|
154
- p.b do |b|
155
- b << anchor(node["id"], :label)
156
- insert_tab(b, 1)
157
- term.children.each { |n| parse(n, b) }
158
- end
159
- source and p << " [#{source.value}]"
160
- p << ": "
161
- end
162
- defn and defn.children.each { |n| parse(n, div) }
163
- end
164
-
165
- def termdef_parse(node, out)
166
- term = node.at(ns("./preferred"))
167
- defn = node.at(ns("./definition"))
168
- source = node.at(ns("./termsource/origin/@citeas"))
169
- out.div **attr_code(id: node["id"]) do |div|
170
- termdef_parse1(node, div, term, defn, source)
171
- set_termdomain("")
172
- node.children.each do |n|
173
- next if %w(preferred definition termsource title).include? n.name
174
- parse(n, out)
175
- end
176
- end
177
- end
178
-
179
127
  def get_eref_linkend(node)
180
128
  link = "[#{anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))}]"
181
129
  link += eref_localities(node.xpath(ns("./locality")), link)
@@ -211,6 +159,46 @@ module IsoDoc
211
159
  insert_tab(s, 1)
212
160
  end
213
161
  end
162
+
163
+ def add_parse(node, out)
164
+ out.span **{class: "addition"} do |e|
165
+ node.children.each { |n| parse(n, e) }
166
+ end
167
+ end
168
+
169
+ def del_parse(node, out)
170
+ out.span **{class: "deletion"} do |e|
171
+ node.children.each { |n| parse(n, e) }
172
+ end
173
+ end
174
+
175
+ def error_parse(node, out)
176
+ case node.name
177
+ when "add" then add_parse(node, out)
178
+ when "del" then del_parse(node, out)
179
+ else
180
+ super
181
+ end
182
+ end
183
+
184
+ def note_p_parse(node, div)
185
+ div.p do |p|
186
+ p.span **{ class: "note_label" } do |s|
187
+ s << note_label(node)
188
+ end
189
+ node.first_element_child.children.each { |n| parse(n, p) }
190
+ end
191
+ node.element_children[1..-1].each { |n| parse(n, div) }
192
+ end
193
+
194
+ def note_parse1(node, div)
195
+ div.p do |p|
196
+ p.span **{ class: "note_label" } do |s|
197
+ s << note_label(node)
198
+ end
199
+ end
200
+ node.children.each { |n| parse(n, div) }
201
+ end
214
202
  end
215
203
  end
216
204
  end
@@ -680,8 +680,10 @@ p.Biblio, p.NormRef {
680
680
  margin-left:-1.5em;
681
681
  }
682
682
 
683
- .example .Sourcecode {
683
+ .example .Sourcecode, .example .pseudocode {
684
684
  background: none;
685
+ margin: 0;
686
+ padding: 0 0 0 2em;
685
687
  }
686
688
 
687
689
  .pseudocode {
@@ -841,6 +843,15 @@ h2 p {
841
843
  display: inline;
842
844
  }
843
845
 
846
+ .addition {
847
+ color: blue;
848
+ }
849
+
850
+ .deletion {
851
+ color: red;
852
+ text-decoration: line-through;
853
+ }
854
+
844
855
 
845
856
  /*
846
857
  4.0 Page header
@@ -14,6 +14,22 @@ p.Sourcecode, li.Sourcecode, div.Sourcecode, pre.Sourcecode, pre
14
14
  mso-fareast-font-family:Calibri;
15
15
  mso-bidi-font-family:"Courier New";
16
16
  mso-ansi-language:EN-GB;}
17
+ p.pseudocode, li.pseudocode, div.pseudocode
18
+ {mso-style-unhide:no;
19
+ mso-style-qformat:yes;
20
+ mso-style-parent:"";
21
+ margin-top:6.0pt;
22
+ margin-right:0cm;
23
+ margin-bottom:6.0pt;
24
+ margin-left:0cm;
25
+ text-align:left;
26
+ mso-pagination:widow-orphan;
27
+ tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;
28
+ font-size:10.0pt;
29
+ font-family:$bodyfont;
30
+ mso-fareast-font-family:Calibri;
31
+ mso-bidi-font-family:"Courier New";
32
+ mso-ansi-language:EN-GB;}
17
33
  p.annex_obligation, li.annex_obligation, div.annex_obligation
18
34
  {mso-style-unhide:no;
19
35
  mso-style-qformat:yes;
@@ -171,8 +187,6 @@ p.TableFootnote, div.TableFootnote, li.TableFootnote
171
187
  margin-left:14.2pt;
172
188
  text-indent:-14.2pt;
173
189
  margin-bottom:.0001pt;
174
- text-align:justify;
175
- text-justify:inter-ideograph;
176
190
  mso-pagination:widow-orphan;
177
191
  tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
178
192
  mso-layout-grid-align:none;
@@ -748,6 +762,13 @@ p.RecNo, li.RecNo, div.RecNo
748
762
  mso-fareast-language:EN-US;
749
763
  font-weight:bold;
750
764
  mso-bidi-font-weight:normal;}
765
+ span.addition {
766
+ color: blue;
767
+ }
768
+ span.deletion {
769
+ color: red;
770
+ text-decoration: line-through;
771
+ }
751
772
 
752
773
  @page {
753
774
  mso-page-border-surround-header:no;
@@ -836,7 +857,7 @@ table.MsoISOTable td
836
857
  mso-border-alt:solid windowtext 1pt;
837
858
  padding:0cm 2.85pt 0cm 2.85pt;}
838
859
  table.MsoISOTable p
839
- {font-size:11.0pt;}
860
+ {font-size:11.0pt; }
840
861
  table.MsoTableGrid
841
862
  {mso-style-name:"Table Grid";
842
863
  mso-tstyle-rowband-size:0;
@@ -929,9 +950,13 @@ div.example p.MsoListParagraph {
929
950
  font-size: 10.0pt;
930
951
  }
931
952
 
953
+ div.Note p.MsoListParagraph {
954
+ font-size: 11.0pt;
955
+ }
956
+
932
957
  span.note_label, span.example_label, td.example_label, td.note_label
933
958
  {
934
- font-size: 10.0pt;
959
+ font-size: 11.0pt;
935
960
  font-family:$bodyfont;
936
961
  }
937
962
 
@@ -18,24 +18,64 @@
18
18
  <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
19
19
  style='mso-ansi-language:FR-CH'><o:p>&nbsp;</o:p></span></span></p>
20
20
 
21
- <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
22
- style='mso-ansi-language:FR-CH'><o:p>&nbsp;</o:p></span></span></p>
23
-
24
- <!--
25
- <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
26
- style='border-collapse:collapse;mso-table-layout-alt:fixed;mso-padding-alt:
27
- 0cm 5.4pt 0cm 5.4pt'>
28
- <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
29
- <td width=663 valign=top style='width:497.25pt;padding:0cm 5.4pt 0cm 5.4pt'>
30
- -->
31
- <div id="abstractbox">
32
- </div>
33
- <!--
34
- </td>
35
- <span style='mso-bookmark:_Hlk526346232'></span>
36
- </tr>
37
- </table>
38
- -->
21
+ <p class=MsoNormal><o:wrapblock><v:shapetype id="_x0000_t202"
22
+ coordsize="21600,21600" o:spt="202" path="m,l,21600r21600,l21600,xe">
23
+ <v:stroke joinstyle="miter"/>
24
+ <v:path gradientshapeok="t" o:connecttype="rect"/>
25
+ </v:shapetype><v:shape id="Text_x0020_Box_x0020_1" o:spid="_x0000_s1026"
26
+ type="#_x0000_t202" style='position:absolute;margin-left:-8pt;margin-top:141.75pt;
27
+ width:448.15pt;height:69.8pt;z-index:-251657216;visibility:visible;
28
+ mso-wrap-style:square;mso-width-percent:0;mso-height-percent:0;
29
+ mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
30
+ mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;
31
+ mso-position-horizontal-relative:text;mso-position-vertical:absolute;
32
+ mso-position-vertical-relative:top-margin-area;mso-width-percent:0;
33
+ mso-height-percent:0;mso-width-relative:margin;mso-height-relative:margin;
34
+ v-text-anchor:top' o:gfxdata="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
64
+ " o:allowoverlap="f" filled="f" stroked="f" strokeweight=".5pt">
65
+ <v:fill o:detectmouseclick="t"/>
66
+ <v:textbox style='mso-fit-shape-to-text:t'>
67
+ <div id="abstractbox">
68
+ </div>
69
+ </v:textbox>
70
+ <w:wrap type="topAndBottom" anchory="margin"/>
71
+ <w:anchorlock/>
72
+ </v:shape></o:wrapblock><br
73
+ style='mso-ignore:vglayout' clear=ALL>
74
+ <span lang=EN-US style='mso-ansi-language:EN-US'><o:p></o:p></span></p>
75
+
76
+
77
+
78
+
39
79
 
40
80
  <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=EN-US
41
81
  style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></span></p>
@@ -296,18 +296,18 @@ a:link, span.MsoHyperlink
296
296
  {mso-style-unhide:no;
297
297
  mso-style-parent:"";
298
298
  color:blue;
299
- font-family:"Arial",sans-serif;
300
- font-size:8pt;
301
- text-decoration:underline;
302
- text-underline:single;}
299
+ }
303
300
  a:visited, span.MsoHyperlinkFollowed
304
301
  {mso-style-unhide:no;
305
302
  mso-style-parent:"";
303
+ color:purple;}
304
+ a.url {
306
305
  font-family:"Arial",sans-serif;
307
306
  font-size:8pt;
308
- color:purple;
309
307
  text-decoration:underline;
310
- text-underline:single;}
308
+ text-underline:single;
309
+ }
310
+
311
311
  p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
312
312
  {mso-style-noshow:yes;
313
313
  mso-style-unhide:no;
@@ -466,7 +466,6 @@ p.h1Preface
466
466
  text-indent:-39.7pt;
467
467
  mso-pagination:widow-orphan lines-together;
468
468
  page-break-after:avoid;
469
- mso-outline-level:1;
470
469
  tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
471
470
  mso-layout-grid-align:none;
472
471
  punctuation-wrap:simple;
@@ -853,7 +852,6 @@ p.MsoToc1, li.MsoToc1, div.MsoToc1
853
852
  mso-fareast-font-family:$bodyfont;
854
853
  mso-bidi-font-family:$bodyfont;
855
854
  mso-ansi-language:EN-GB;
856
- font-weight:bold;
857
855
  mso-bidi-font-weight:normal;}
858
856
  p.MsoToc2, li.MsoToc2, div.MsoToc2
859
857
  {mso-style-noshow:yes;
@@ -1042,8 +1040,7 @@ span.MsoFootnoteReference
1042
1040
  position:relative;
1043
1041
  top:-3.0pt;
1044
1042
  mso-text-raise:3.0pt;
1045
- mso-style-priority:99;
1046
- vertical-align:super;}
1043
+ mso-style-priority:99;}
1047
1044
  p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
1048
1045
  {mso-style-noshow:yes;
1049
1046
  mso-style-priority:99;
@@ -1523,6 +1520,72 @@ p.Tablebody, li.Tablebody, div.Tablebody
1523
1520
  mso-level-number-position:left;
1524
1521
  margin-left:178.65pt;
1525
1522
  text-indent:-19.85pt;}
1523
+ /* steps ordered list */
1524
+ @list l4
1525
+ {mso-list-id:525294608;
1526
+ mso-list-template-ids:676331812}
1527
+ @list l4:level1
1528
+ {mso-level-text:"%1\)";
1529
+ mso-level-tab-stop:none;
1530
+ mso-level-number-position:left;
1531
+ margin-left:18.0pt;
1532
+ text-indent:-18.0pt;}
1533
+ @list l4:level2
1534
+ {mso-level-text:"%2\)";
1535
+ mso-level-number-format:alpha-lower;
1536
+ mso-level-tab-stop:none;
1537
+ mso-level-number-position:left;
1538
+ margin-left:36.0pt;
1539
+ text-indent:-18.0pt;}
1540
+ @list l4:level3
1541
+ {mso-level-number-format:roman-lower;
1542
+ mso-level-text:"%3\)";
1543
+ mso-level-tab-stop:none;
1544
+ mso-level-number-position:left;
1545
+ margin-left:54.0pt;
1546
+ text-indent:-18.0pt;}
1547
+ @list l4:level4
1548
+ {mso-level-number-format:alpha-upper;
1549
+ mso-level-text:"%4\)";
1550
+ mso-level-tab-stop:none;
1551
+ mso-level-number-position:left;
1552
+ margin-left:72.0pt;
1553
+ text-indent:-18.0pt;}
1554
+ @list l4:level5
1555
+ {mso-level-number-format:roman-upper;
1556
+ mso-level-text:"%5\)";
1557
+ mso-level-tab-stop:none;
1558
+ mso-level-number-position:left;
1559
+ margin-left:90.0pt;
1560
+ text-indent:-18.0pt;}
1561
+ @list l4:level6
1562
+ {mso-level-text:"%6\)";
1563
+ mso-level-tab-stop:none;
1564
+ mso-level-number-position:left;
1565
+ margin-left:108.0pt;
1566
+ text-indent:-18.0pt;}
1567
+ @list l4:level7
1568
+ {mso-level-tab-stop:none;
1569
+ mso-level-number-format:alpha-lower;
1570
+ mso-level-text:"%7\)";
1571
+ mso-level-number-position:left;
1572
+ margin-left:126.0pt;
1573
+ text-indent:-18.0pt;}
1574
+ @list l4:level8
1575
+ {mso-level-number-format:roman-lower;
1576
+ mso-level-text:"%8\)";
1577
+ mso-level-tab-stop:none;
1578
+ mso-level-number-position:left;
1579
+ margin-left:144.0pt;
1580
+ text-indent:-18.0pt;}
1581
+ @list l4:level9
1582
+ {mso-level-number-format:alpha-upper;
1583
+ mso-level-text:"%9\)";
1584
+ mso-level-tab-stop:none;
1585
+ mso-level-number-position:left;
1586
+ margin-left:162.0pt;
1587
+ text-indent:-18.0pt;}
1588
+
1526
1589
 
1527
1590
  p.ListContLevel1, li.ListContLevel1, div.ListContLevel1
1528
1591
  {mso-style-priority:34;
@@ -10,3 +10,4 @@ inform_annex: (This appendix does not form an integral part of this %.)
10
10
  formula: Equation
11
11
  inequality: Inequality
12
12
  annex_subclause: Clause
13
+ in: in
@@ -0,0 +1,87 @@
1
+ module IsoDoc
2
+ module ITU
3
+ module BaseConvert
4
+ def terms_defs_title(node)
5
+ t = node.at(ns("./title")) and return t.text
6
+ super
7
+ end
8
+
9
+ def terms_defs(node, out, num)
10
+ f = node.at(ns(IsoDoc::Convert::TERM_CLAUSE)) or return num
11
+ out.div **attr_code(id: f["id"]) do |div|
12
+ num = num + 1
13
+ clause_name(num, terms_defs_title(f), div, nil)
14
+ if f.at(ns("./clause | ./terms | ./term")).nil? then out.p "None."
15
+ else
16
+ f.children.reject { |c1| c1.name == "title" }.each do |c1|
17
+ parse(c1, div)
18
+ end
19
+ end
20
+ end
21
+ num
22
+ end
23
+
24
+ def terms_parse(node, out)
25
+ out.div **attr_code(id: node["id"]) do |div|
26
+ clause_parse_title(node, div, node.at(ns("./title")), out)
27
+ if node.at(ns("./clause | ./term")).nil? then out.p "None."
28
+ else
29
+ node.children.reject { |c1| c1.name == "title" }.each do |c1|
30
+ parse(c1, div)
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def termdef_parse1(node, div, term, defn, source)
37
+ div.p **{ class: "TermNum", id: node["id"] } do |p|
38
+ p.b do |b|
39
+ b << anchor(node["id"], :label)
40
+ insert_tab(b, 1)
41
+ term.children.each { |n| parse(n, b) }
42
+ end
43
+ source and p << " [#{source.value}]"
44
+ p << ": "
45
+ end
46
+ defn and defn.children.each { |n| parse(n, div) }
47
+ end
48
+
49
+ def termdef_parse(node, out)
50
+ term = node.at(ns("./preferred"))
51
+ defn = node.at(ns("./definition"))
52
+ source = node.at(ns("./termsource/origin/@citeas"))
53
+ out.div **attr_code(id: node["id"]) do |div|
54
+ termdef_parse1(node, div, term, defn, source)
55
+ set_termdomain("")
56
+ node.children.each do |n|
57
+ next if %w(preferred definition termsource title).include? n.name
58
+ parse(n, out)
59
+ end
60
+ end
61
+ end
62
+
63
+ def termnote_parse(node, out)
64
+ out.div **{ class: "Note" } do |div|
65
+ first = node.first_element_child
66
+ div.p do |p|
67
+ p << note_label(node) # "#{anchor(node['id'], :label) || '???'}: "
68
+ para_then_remainder(first, node, p, div)
69
+ end
70
+ end
71
+ end
72
+
73
+ def termnote_anchor_names(docxml)
74
+ docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
75
+ c = IsoDoc::Function::XrefGen::Counter.new
76
+ notes = t.xpath(ns(".//termnote"))
77
+ notes.each do |n|
78
+ return if n["id"].nil? || n["id"].empty?
79
+ idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
80
+ @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl,
81
+ "termnote", false)
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -151,16 +151,51 @@ module IsoDoc
151
151
  olstyle: "l2", }
152
152
  end
153
153
 
154
- def word_example_cleanup(docxml)
155
- super
156
- docxml.xpath("//div[@class = 'pseudocode']//p[not(@class)]").each do |p|
157
- p["class"] = "pseudocode"
154
+ def make_tr_attr(td, row, totalrows, header)
155
+ super.merge(valign: "top")
156
+ end
157
+
158
+ def ol_parse(node, out)
159
+ out.ol **attr_code(class: node["class"], id: node["id"] ) do |ol|
160
+ node.children.each { |n| parse(n, ol) }
158
161
  end
159
162
  end
160
163
 
161
- def make_tr_attr(td, row, totalrows, header)
162
- super.merge(valign: "top")
164
+ def toWord(result, filename, dir, header)
165
+ result = populate_template(result, :word)
166
+ result = from_xhtml(word_cleanup(to_xhtml(result)))
167
+ Html2Doc.process(result, filename: filename, stylesheet: @wordstylesheet,
168
+ header_file: header, dir: dir,
169
+ asciimathdelims: [@openmathdelim, @closemathdelim],
170
+ liststyles: { ul: @ulstyle, ol: @olstyle, steps: "l4" })
171
+ end
172
+
173
+ =begin
174
+ def eref_parse(node, out)
175
+ linkend = get_linkend(node)
176
+ if node["type"] == "footnote"
177
+ out.sup { |s| s << linkend }
178
+ else
179
+ out << linkend
180
+ end
181
+ end
182
+
183
+ def xref_parse(node, out)
184
+ #target = /#/.match(node["target"]) ? node["target"].sub(/#/, ".html#") :
185
+ # "##{node["target"]}"
186
+ out << get_linkend(node)
163
187
  end
188
+ =end
189
+
190
+ def link_parse(node, out)
191
+ out.a **attr_code(href: node["target"], title: node["alt"], class: "url") do |l|
192
+ if node.text.empty?
193
+ l << node["target"].sub(/^mailto:/, "")
194
+ else
195
+ node.children.each { |n| parse(n, l) }
196
+ end
197
+ end
198
+ end
164
199
 
165
200
  include BaseConvert
166
201
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ITU
3
- VERSION = "0.2.8"
3
+ VERSION = "0.2.9"
4
4
  end
5
5
  end
@@ -24,7 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ["lib"]
25
25
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
26
26
 
27
- spec.add_dependency "asciidoctor", "~> 1.5.7"
28
27
  spec.add_dependency "htmlentities", "~> 4.3.4"
29
28
  spec.add_dependency "ruby-jing"
30
29
  spec.add_dependency "metanorma-standoc", "~> 1.3.0"
@@ -41,4 +40,6 @@ Gem::Specification.new do |spec|
41
40
  spec.add_development_dependency "simplecov", "~> 0.15"
42
41
  spec.add_development_dependency "timecop", "~> 0.9"
43
42
  spec.add_development_dependency "metanorma", "~> 0.3.0"
43
+ spec.add_development_dependency "vcr", "~> 5.0.0"
44
+ spec.add_development_dependency "webmock"
44
45
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-27 00:00:00.000000000 Z
11
+ date: 2019-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: asciidoctor
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.5.7
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 1.5.7
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: htmlentities
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +220,34 @@ dependencies:
234
220
  - - "~>"
235
221
  - !ruby/object:Gem::Version
236
222
  version: 0.3.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: vcr
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: 5.0.0
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: 5.0.0
237
+ - !ruby/object:Gem::Dependency
238
+ name: webmock
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :development
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
237
251
  description: 'Metanorma for the ITU.
238
252
 
239
253
  '
@@ -260,6 +274,7 @@ files:
260
274
  - lib/asciidoctor/itu.rb
261
275
  - lib/asciidoctor/itu/basicdoc.rng
262
276
  - lib/asciidoctor/itu/biblio.rng
277
+ - lib/asciidoctor/itu/cleanup.rb
263
278
  - lib/asciidoctor/itu/converter.rb
264
279
  - lib/asciidoctor/itu/front.rb
265
280
  - lib/asciidoctor/itu/i18n-en.yaml
@@ -289,6 +304,7 @@ files:
289
304
  - lib/isodoc/itu/metadata.rb
290
305
  - lib/isodoc/itu/pdf_convert.rb
291
306
  - lib/isodoc/itu/ref.rb
307
+ - lib/isodoc/itu/terms.rb
292
308
  - lib/isodoc/itu/word_convert.rb
293
309
  - lib/isodoc/itu/xref.rb
294
310
  - lib/metanorma-itu.rb