metanorma-iso 1.9.6 → 1.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ubuntu.yml +41 -0
  3. data/Gemfile +3 -4
  4. data/Makefile +44 -0
  5. data/Rakefile +1 -1
  6. data/bin/rspec +1 -2
  7. data/lib/asciidoctor/iso/cleanup.rb +7 -6
  8. data/lib/asciidoctor/iso/front.rb +2 -2
  9. data/lib/asciidoctor/iso/isodoc.rng +254 -27
  10. data/lib/asciidoctor/iso/section.rb +1 -1
  11. data/lib/asciidoctor/iso/validate.rb +7 -7
  12. data/lib/asciidoctor/iso/validate_section.rb +1 -1
  13. data/lib/isodoc/iso/html/isodoc.css +0 -1
  14. data/lib/isodoc/iso/html/isodoc.scss +0 -1
  15. data/lib/isodoc/iso/html/style-human.css +0 -1
  16. data/lib/isodoc/iso/html/style-human.scss +0 -1
  17. data/lib/isodoc/iso/html/style-iso.css +0 -1
  18. data/lib/isodoc/iso/html/style-iso.scss +0 -1
  19. data/lib/isodoc/iso/i18n.rb +10 -9
  20. data/lib/isodoc/iso/iso.amendment.xsl +57 -17
  21. data/lib/isodoc/iso/iso.international-standard.xsl +57 -17
  22. data/lib/isodoc/iso/isosts_convert.rb +6 -2
  23. data/lib/isodoc/iso/presentation_xml_convert.rb +19 -9
  24. data/lib/isodoc/iso/sections.rb +2 -0
  25. data/lib/isodoc/iso/sts_convert.rb +5 -2
  26. data/lib/isodoc/iso/word_cleanup.rb +94 -0
  27. data/lib/isodoc/iso/word_convert.rb +12 -89
  28. data/lib/metanorma/iso/processor.rb +2 -2
  29. data/lib/metanorma/iso/version.rb +1 -1
  30. data/metanorma-iso.gemspec +4 -5
  31. data/spec/asciidoctor/base_spec.rb +543 -209
  32. data/spec/asciidoctor/blocks_spec.rb +22 -47
  33. data/spec/asciidoctor/cleanup_spec.rb +37 -20
  34. data/spec/asciidoctor/inline_spec.rb +10 -2
  35. data/spec/asciidoctor/refs_spec.rb +174 -88
  36. data/spec/asciidoctor/section_spec.rb +3 -3
  37. data/spec/isodoc/i18n_spec.rb +36 -22
  38. data/spec/isodoc/inline_spec.rb +6 -6
  39. data/spec/isodoc/section_spec.rb +4 -4
  40. data/spec/isodoc/table_spec.rb +6 -8
  41. data/spec/isodoc/terms_spec.rb +25 -25
  42. data/spec/isodoc/xref_spec.rb +1397 -1376
  43. data/spec/metanorma/processor_spec.rb +114 -15
  44. data/spec/spec_helper.rb +2 -1
  45. data/spec/vcr_cassettes/docrels.yml +427 -37
  46. data/spec/vcr_cassettes/sortrefs.yml +599 -0
  47. metadata +13 -24
@@ -0,0 +1,94 @@
1
+ module IsoDoc
2
+ module Iso
3
+ class WordConvert < IsoDoc::WordConvert
4
+ def figure_cleanup(xml)
5
+ super
6
+ xml.xpath("//div[@class = 'figure']//table[@class = 'dl']").each do |t|
7
+ t["class"] = "figdl"
8
+ d = t.add_previous_sibling("<div class='figdl' "\
9
+ "style='page-break-after:avoid;'/>")
10
+ t.parent = d.first
11
+ end
12
+ end
13
+
14
+ # force Annex h2 down to be p.h2Annex, so it is not picked up by ToC
15
+ def word_annex_cleanup1(docxml, lvl)
16
+ docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
17
+ h2.name = "p"
18
+ h2["class"] = "h#{lvl}Annex"
19
+ end
20
+ end
21
+
22
+ def word_annex_cleanup(docxml)
23
+ (2..6).each { |i| word_annex_cleanup1(docxml, i) }
24
+ end
25
+
26
+ def word_annex_cleanup_h1(docxml)
27
+ docxml.xpath("//h1[@class = 'Annex']").each do |h|
28
+ h.name = "p"
29
+ h["class"] = "ANNEX"
30
+ end
31
+ %w(BiblioTitle ForewordTitle IntroTitle).each do |s|
32
+ docxml.xpath("//*[@class = '#{s}']").each do |h|
33
+ h.name = "p"
34
+ end
35
+ end
36
+ end
37
+
38
+ def style_cleanup(docxml)
39
+ word_annex_cleanup_h1(docxml)
40
+ style_cleanup1(docxml)
41
+ end
42
+
43
+ def style_cleanup1(docxml)
44
+ docxml.xpath("//*[@class = 'example']").each do |p|
45
+ p["class"] = "Example"
46
+ end
47
+ end
48
+
49
+ def authority_hdr_cleanup(docxml)
50
+ docxml&.xpath("//div[@class = 'boilerplate-license']")&.each do |d|
51
+ d.xpath(".//h1").each do |p|
52
+ p.name = "p"
53
+ p["class"] = "zzWarningHdr"
54
+ end
55
+ end
56
+ docxml&.xpath("//div[@class = 'boilerplate-copyright']")&.each do |d|
57
+ d.xpath(".//h1").each do |p|
58
+ p.name = "p"
59
+ p["class"] = "zzCopyrightHdr"
60
+ end
61
+ end
62
+ end
63
+
64
+ def authority_cleanup(docxml)
65
+ insert = docxml.at("//div[@id = 'boilerplate-license-destination']")
66
+ auth = docxml&.at("//div[@class = 'boilerplate-license']")&.remove
67
+ auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzWarning" }
68
+ auth and insert.children = auth
69
+ insert = docxml.at("//div[@id = 'boilerplate-copyright-destination']")
70
+ auth = docxml&.at("//div[@class = 'boilerplate-copyright']")&.remove
71
+ auth&.xpath(".//p[not(@class)]")&.each do |p|
72
+ p["class"] = "zzCopyright"
73
+ end
74
+ auth&.xpath(".//p[@id = 'boilerplate-message']")&.each do |p|
75
+ p["class"] = "zzCopyright1"
76
+ end
77
+ auth&.xpath(".//p[@id = 'boilerplate-address']")&.each do |p|
78
+ p["class"] = "zzAddress"
79
+ end
80
+ auth&.xpath(".//p[@id = 'boilerplate-place']")&.each do |p|
81
+ p["class"] = "zzCopyright1"
82
+ end
83
+ auth and insert.children = auth
84
+ end
85
+
86
+ def word_cleanup(docxml)
87
+ authority_hdr_cleanup(docxml)
88
+ super
89
+ style_cleanup(docxml)
90
+ docxml
91
+ end
92
+ end
93
+ end
94
+ end
@@ -1,6 +1,7 @@
1
1
  require_relative "base_convert"
2
2
  require "isodoc"
3
3
  require_relative "init"
4
+ require_relative "word_cleanup"
4
5
 
5
6
  module IsoDoc
6
7
  module Iso
@@ -59,92 +60,11 @@ module IsoDoc
59
60
  return if !stage.nil? && stage < 60
60
61
 
61
62
  body.br **{ clear: "all", style: "page-break-before:left;"\
62
- "mso-break-type:section-break" }
63
+ "mso-break-type:section-break" }
63
64
  body.div **{ class: "colophon" } do |div|
64
65
  end
65
66
  end
66
67
 
67
- def figure_cleanup(xml)
68
- super
69
- xml.xpath("//div[@class = 'figure']//table[@class = 'dl']").each do |t|
70
- t["class"] = "figdl"
71
- d = t.add_previous_sibling("<div class='figdl' "\
72
- "style='page-break-after:avoid;'/>")
73
- t.parent = d.first
74
- end
75
- end
76
-
77
- # force Annex h2 down to be p.h2Annex, so it is not picked up by ToC
78
- def word_annex_cleanup1(docxml, lvl)
79
- docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
80
- h2.name = "p"
81
- h2["class"] = "h#{lvl}Annex"
82
- end
83
- end
84
-
85
- def word_annex_cleanup(docxml)
86
- (2..6).each { |i| word_annex_cleanup1(docxml, i) }
87
- end
88
-
89
- def word_annex_cleanup_h1(docxml)
90
- docxml.xpath("//h1[@class = 'Annex']").each do |h|
91
- h.name = "p"
92
- h["class"] = "ANNEX"
93
- end
94
- %w(BiblioTitle ForewordTitle IntroTitle).each do |s|
95
- docxml.xpath("//*[@class = '#{s}']").each do |h|
96
- h.name = "p"
97
- end
98
- end
99
- end
100
-
101
- def style_cleanup(docxml)
102
- word_annex_cleanup_h1(docxml)
103
- style_cleanup1(docxml)
104
- end
105
-
106
- def style_cleanup1(docxml)
107
- docxml.xpath("//*[@class = 'example']").each do |p|
108
- p["class"] = "Example"
109
- end
110
- end
111
-
112
- def authority_hdr_cleanup(docxml)
113
- docxml&.xpath("//div[@class = 'boilerplate-license']")&.each do |d|
114
- d.xpath(".//h1").each do |p|
115
- p.name = "p"
116
- p["class"] = "zzWarningHdr"
117
- end
118
- end
119
- docxml&.xpath("//div[@class = 'boilerplate-copyright']")&.each do |d|
120
- d.xpath(".//h1").each do |p|
121
- p.name = "p"
122
- p["class"] = "zzCopyrightHdr"
123
- end
124
- end
125
- end
126
-
127
- def authority_cleanup(docxml)
128
- insert = docxml.at("//div[@id = 'boilerplate-license-destination']")
129
- auth = docxml&.at("//div[@class = 'boilerplate-license']")&.remove
130
- auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzWarning" }
131
- auth and insert.children = auth
132
- insert = docxml.at("//div[@id = 'boilerplate-copyright-destination']")
133
- auth = docxml&.at("//div[@class = 'boilerplate-copyright']")&.remove
134
- auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzCopyright" }
135
- auth&.xpath(".//p[@id = 'boilerplate-message']")&.each { |p| p["class"] = "zzCopyright1" }
136
- auth&.xpath(".//p[@id = 'boilerplate-address']")&.each { |p| p["class"] = "zzAddress" }
137
- auth&.xpath(".//p[@id = 'boilerplate-place']")&.each { |p| p["class"] = "zzCopyright1" }
138
- auth and insert.children = auth
139
- end
140
-
141
- def word_cleanup(docxml)
142
- authority_hdr_cleanup(docxml)
143
- super
144
- style_cleanup(docxml)
145
- docxml
146
- end
147
-
148
68
  def word_toc_preface(level)
149
69
  <<~TOC.freeze
150
70
  <span lang="EN-GB"><span
@@ -166,7 +86,7 @@ module IsoDoc
166
86
  end
167
87
 
168
88
  def bibliography(xml, out)
169
- f = xml.at(ns(bibliography_xpath)) and f["hidden"] != "true" or return
89
+ (f = xml.at(ns(bibliography_xpath)) and f["hidden"] != "true") or return
170
90
  page_break(out)
171
91
  out.div do |div|
172
92
  div.h1 **bibliography_attrs do |h1|
@@ -185,13 +105,16 @@ module IsoDoc
185
105
  end
186
106
  end
187
107
 
108
+ def definition_parse(node, out)
109
+ @definition = true
110
+ super
111
+ @definition = false
112
+ end
113
+
188
114
  def para_class(node)
189
- if !node.ancestors("definition").empty? && !@in_footnote
190
- "Definition"
191
- elsif !node.ancestors("foreword").empty? && !@in_footnote
192
- "ForewordText"
193
- else
194
- super
115
+ if @definition && !@in_footnote then "Definition"
116
+ elsif @foreword && !@in_footnote then "ForewordText"
117
+ else super
195
118
  end
196
119
  end
197
120
 
@@ -4,7 +4,7 @@ module Metanorma
4
4
  module Iso
5
5
  class Processor < Metanorma::Processor
6
6
 
7
- def initialize
7
+ def initialize # rubocop:disable Lint/MissingSuper
8
8
  @short = :iso
9
9
  @input_format = :asciidoc
10
10
  @asciidoctor_backend = :iso
@@ -17,7 +17,7 @@ module Metanorma
17
17
  doc: "doc",
18
18
  pdf: "pdf",
19
19
  sts: "sts.xml",
20
- isosts: "iso.sts.xml"
20
+ isosts: "iso.sts.xml",
21
21
  )
22
22
  end
23
23
 
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "1.9.6".freeze
3
+ VERSION = "1.10.3".freeze
4
4
  end
5
5
  end
@@ -29,18 +29,17 @@ 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 "isodoc", "~> 1.7.0"
33
- spec.add_dependency "metanorma-standoc", "~> 1.10.0"
34
- spec.add_dependency "mnconvert", "~> 1.8.0"
32
+ spec.add_dependency "metanorma-standoc", "~> 1.11.0"
33
+ spec.add_dependency "mnconvert", "~> 2.0"
35
34
  spec.add_dependency "ruby-jing"
36
35
  spec.add_dependency "tokenizer", "~> 0.3.0"
37
36
  spec.add_dependency "twitter_cldr"
38
37
 
39
- spec.add_development_dependency "byebug"
38
+ spec.add_development_dependency "debug"
40
39
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
41
40
  spec.add_development_dependency "guard", "~> 2.14"
42
41
  spec.add_development_dependency "guard-rspec", "~> 4.7"
43
- spec.add_development_dependency "iev", "~> 0.2.0"
42
+ spec.add_development_dependency "iev", "~> 0.3.0"
44
43
  spec.add_development_dependency "rake", "~> 13.0"
45
44
  spec.add_development_dependency "rspec", "~> 3.6"
46
45
  spec.add_development_dependency "rubocop", "~> 1.5.2"