metanorma-standoc 1.8.5 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +5 -1
  4. data/Gemfile.devel +0 -0
  5. data/lib/asciidoctor/standoc/base.rb +41 -36
  6. data/lib/asciidoctor/standoc/biblio.rng +4 -6
  7. data/lib/asciidoctor/standoc/blocks.rb +27 -12
  8. data/lib/asciidoctor/standoc/blocks_notes.rb +20 -14
  9. data/lib/asciidoctor/standoc/cleanup.rb +32 -78
  10. data/lib/asciidoctor/standoc/cleanup_block.rb +56 -59
  11. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +32 -21
  12. data/lib/asciidoctor/standoc/cleanup_footnotes.rb +1 -0
  13. data/lib/asciidoctor/standoc/cleanup_image.rb +71 -0
  14. data/lib/asciidoctor/standoc/cleanup_maths.rb +37 -28
  15. data/lib/asciidoctor/standoc/cleanup_ref.rb +21 -13
  16. data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +1 -1
  17. data/lib/asciidoctor/standoc/cleanup_reqt.rb +47 -0
  18. data/lib/asciidoctor/standoc/cleanup_section.rb +21 -15
  19. data/lib/asciidoctor/standoc/converter.rb +3 -1
  20. data/lib/asciidoctor/standoc/front.rb +35 -18
  21. data/lib/asciidoctor/standoc/front_contributor.rb +5 -5
  22. data/lib/asciidoctor/standoc/inline.rb +1 -1
  23. data/lib/asciidoctor/standoc/isodoc.rng +130 -1
  24. data/lib/asciidoctor/standoc/lists.rb +4 -2
  25. data/lib/asciidoctor/standoc/macros.rb +40 -13
  26. data/lib/asciidoctor/standoc/ref.rb +87 -112
  27. data/lib/asciidoctor/standoc/ref_date_id.rb +62 -0
  28. data/lib/asciidoctor/standoc/ref_sect.rb +12 -12
  29. data/lib/asciidoctor/standoc/terms.rb +10 -6
  30. data/lib/asciidoctor/standoc/utils.rb +32 -6
  31. data/lib/asciidoctor/standoc/validate.rb +12 -12
  32. data/lib/metanorma/standoc/version.rb +5 -5
  33. data/metanorma-standoc.gemspec +11 -11
  34. data/spec/asciidoctor/base_spec.rb +78 -8
  35. data/spec/asciidoctor/blocks_spec.rb +10 -0
  36. data/spec/asciidoctor/cleanup_sections_spec.rb +14 -14
  37. data/spec/asciidoctor/cleanup_spec.rb +1860 -1874
  38. data/spec/asciidoctor/inline_spec.rb +272 -273
  39. data/spec/asciidoctor/macros_spec.rb +8 -2
  40. data/spec/asciidoctor/refs_spec.rb +135 -7
  41. data/spec/asciidoctor/section_spec.rb +670 -687
  42. data/spec/assets/html-override.css +1 -0
  43. data/spec/assets/word-override.css +1 -0
  44. data/spec/spec_helper.rb +11 -9
  45. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +60 -60
  46. data/spec/vcr_cassettes/isobib_get_123.yml +16 -16
  47. data/spec/vcr_cassettes/isobib_get_123_1.yml +32 -32
  48. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +41 -41
  49. data/spec/vcr_cassettes/isobib_get_123_2001.yml +15 -15
  50. data/spec/vcr_cassettes/isobib_get_124.yml +17 -17
  51. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
  52. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +53 -49
  53. metadata +71 -68
  54. data/.rubocop.ribose.yml +0 -66
  55. data/.rubocop.tb.yml +0 -650
  56. data/spec/asciidoctor/macros_lutaml_spec.rb +0 -80
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65dcd1f22a2224fb908c38f21bec75287e1568269b080f2b53ae9eda9963c2d9
4
- data.tar.gz: d9912320a4f7319c2bd132e169dc315d52f3ee48a724b046f1c1c36f510ae079
3
+ metadata.gz: 03a2df03031208cf9cd54413c1dc342f748c3978a2e189f9cf4ae369fcc1820c
4
+ data.tar.gz: fc94c4cc2a0e117c06f41d709d8e5d6a6f3f0ba6e1ffc8a6ccdfb60b91ed3ffd
5
5
  SHA512:
6
- metadata.gz: 6f2af97c651cd815e92dc61df5e81dbbfe4509abb82ba491674f72b722fadd7ba3f580870e7444e41e15357b4290f29ae99b6222b88115e45a571eae17f14836
7
- data.tar.gz: 75dec696a85df288ea1b94c36e6608408c2c53bc5e8c163f8a7b817d8a43d50f10a4d0ae2a098fed331224cb322cdd6ba35509f7504fb3ea4d322819fa829e65
6
+ metadata.gz: 32bac104b6523e30e510ada3e1e25861139b62c66c8d7bbcb782284648622b5f1da48acd8a6e97f511ead0baca45c7903ac7f31c1023596becc473d08deea87f
7
+ data.tar.gz: 4c0ee4e816c81ca1e98d5bbbb47ad2c755feca016c0b5ddae5283688291813e0d1d511444835d7bee1979dc49ef3d664a7d1966938b46b3a5ad0f2dd9a0da6d2
data/.gitignore CHANGED
@@ -10,3 +10,5 @@ spec/examples/rice.html
10
10
  spec/examples/rice.xml
11
11
  spec/examples/rice_files/
12
12
  Gemfile.lock
13
+
14
+ .rubocop-https--*
data/.rubocop.yml CHANGED
@@ -1,10 +1,14 @@
1
1
  # This project follows the Ribose OSS style guide.
2
2
  # https://github.com/riboseinc/oss-guides
3
3
  # All project-specific additions and overrides should be specified in this file.
4
-
5
4
  inherit_from:
6
5
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
6
+
7
+ # local repo-specific modifications
8
+
7
9
  AllCops:
10
+ DisplayCopNames: false
11
+ StyleGuideCopsOnly: false
8
12
  TargetRubyVersion: 2.4
9
13
  Rails:
10
14
  Enabled: true
data/Gemfile.devel ADDED
File without changes
@@ -8,6 +8,7 @@ require "isodoc"
8
8
  require "relaton"
9
9
  require "fileutils"
10
10
  require "metanorma-utils"
11
+ require "isodoc/xslfo_convert"
11
12
 
12
13
  module Asciidoctor
13
14
  module Standoc
@@ -43,6 +44,7 @@ module Asciidoctor
43
44
  i18nyaml: node.attr("i18nyaml"),
44
45
  scope: node.attr("scope"),
45
46
  htmlstylesheet: node.attr("htmlstylesheet"),
47
+ htmlstylesheet_override: node.attr("htmlstylesheet-override"),
46
48
  htmlcoverpage: node.attr("htmlcoverpage"),
47
49
  htmlintropage: node.attr("htmlintropage"),
48
50
  scripts: node.attr("scripts"),
@@ -51,6 +53,7 @@ module Asciidoctor
51
53
  htmltoclevels: node.attr("htmltoclevels") || node.attr("toclevels"),
52
54
  doctoclevels: node.attr("doctoclevels") || node.attr("toclevels"),
53
55
  break_up_urls_in_tables: node.attr("break-up-urls-in-tables"),
56
+ sectionsplit: node.attr("sectionsplit"),
54
57
  }
55
58
  end
56
59
 
@@ -59,7 +62,7 @@ module Asciidoctor
59
62
  end
60
63
 
61
64
  def doc_extract_attributes(node)
62
- {
65
+ attrs = {
63
66
  script: node.attr("script"),
64
67
  bodyfont: node.attr("body-font"),
65
68
  headerfont: node.attr("header-font"),
@@ -67,6 +70,7 @@ module Asciidoctor
67
70
  i18nyaml: node.attr("i18nyaml"),
68
71
  scope: node.attr("scope"),
69
72
  wordstylesheet: node.attr("wordstylesheet"),
73
+ wordstylesheet_override: node.attr("wordstylesheet-override"),
70
74
  standardstylesheet: node.attr("standardstylesheet"),
71
75
  header: node.attr("header"),
72
76
  wordcoverpage: node.attr("wordcoverpage"),
@@ -77,6 +81,14 @@ module Asciidoctor
77
81
  doctoclevels: node.attr("doctoclevels") || node.attr("toclevels"),
78
82
  break_up_urls_in_tables: node.attr("break-up-urls-in-tables"),
79
83
  }
84
+
85
+ if font_manifest_file = node.attr("mn2pdf-font-manifest-file")
86
+ attrs[IsoDoc::XslfoPdfConvert::MN2PDF_OPTIONS] = {
87
+ IsoDoc::XslfoPdfConvert::MN2PDF_FONT_MANIFEST => font_manifest_file,
88
+ }
89
+ end
90
+
91
+ attrs
80
92
  end
81
93
 
82
94
  def doc_converter(node)
@@ -96,10 +108,15 @@ module Asciidoctor
96
108
  @draft = node.attributes.has_key?("draft")
97
109
  @novalid = node.attr("novalid")
98
110
  @smartquotes = node.attr("smartquotes") != "false"
99
- @keepasciimath = node.attr("mn-keep-asciimath") && node.attr("mn-keep-asciimath") != "false"
111
+ @keepasciimath = node.attr("mn-keep-asciimath") &&
112
+ node.attr("mn-keep-asciimath") != "false"
100
113
  @fontheader = default_fonts(node)
101
114
  @files_to_delete = []
102
- @filename = node.attr("docfile") ? File.basename(node.attr("docfile")).gsub(/\.adoc$/, "") : ""
115
+ if node.attr("docfile")
116
+ @filename = File.basename(node.attr("docfile"))&.gsub(/\.adoc$/, "")
117
+ else
118
+ @filename = ""
119
+ end
103
120
  @localdir = Metanorma::Utils::localdir(node)
104
121
  @output_dir = outputdir node
105
122
  @no_isobib_cache = node.attr("no-isobib-cache")
@@ -131,10 +148,12 @@ module Asciidoctor
131
148
  end
132
149
 
133
150
  def outputs(node, ret)
134
- File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
135
- presentation_xml_converter(node).convert(@filename + ".xml")
136
- html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
137
- doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
151
+ File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
152
+ presentation_xml_converter(node).convert("#{@filename}.xml")
153
+ html_converter(node).convert("#{@filename}.presentation.xml",
154
+ nil, false, "#{@filename}.html")
155
+ doc_converter(node).convert("#{@filename}.presentation.xml",
156
+ nil, false, "#{@filename}.doc")
138
157
  end
139
158
 
140
159
  def document(node)
@@ -151,12 +170,21 @@ module Asciidoctor
151
170
  end
152
171
 
153
172
  def clean_exit
154
- @log.write(@output_dir + @filename + ".err") unless @novalid
173
+ @log.write("#{@output_dir}#{@filename}.err") unless @novalid
174
+
155
175
  @files_to_delete.each { |f| FileUtils.rm f }
156
176
  end
157
177
 
178
+ def clean_abort(msg, file = nil)
179
+ file and
180
+ File.open("#{@filename}.xml.abort", "w:UTF-8") { |f| f.write(file) }
181
+ clean_exit
182
+ abort(msg)
183
+ end
184
+
158
185
  def makexml1(node)
159
- result = ["<?xml version='1.0' encoding='UTF-8'?>", "<#{xml_root_tag} type='semantic' version='#{version}'>"]
186
+ result = ["<?xml version='1.0' encoding='UTF-8'?>",
187
+ "<#{xml_root_tag} type='semantic' version='#{version}'>"]
160
188
  result << noko { |ixml| front node, ixml }
161
189
  result << noko { |ixml| middle node, ixml }
162
190
  result << "</#{xml_root_tag}>"
@@ -191,36 +219,13 @@ module Asciidoctor
191
219
  end
192
220
  end
193
221
 
194
- def default_script(lang)
195
- case lang
196
- when "ar", "fa"
197
- "Arab"
198
- when "ur"
199
- "Aran"
200
- when "ru", "bg"
201
- "Cyrl"
202
- when "hi"
203
- "Deva"
204
- when "el"
205
- "Grek"
206
- when "zh"
207
- "Hans"
208
- when "ko"
209
- "Kore"
210
- when "he"
211
- "Hebr"
212
- when "ja"
213
- "Jpan"
214
- else
215
- "Latn"
216
- end
217
- end
218
-
219
222
  private
220
223
 
221
224
  def outputdir(node)
222
- if node.attr("output_dir").nil_or_empty? then Metanorma::Utils::localdir(node)
223
- else File.join(node.attr("output_dir"), "")
225
+ if node.attr("output_dir").nil_or_empty?
226
+ Metanorma::Utils::localdir(node)
227
+ else
228
+ File.join(node.attr("output_dir"), "")
224
229
  end
225
230
  end
226
231
  end
@@ -124,7 +124,7 @@
124
124
  <value>application/tei+xml</value>
125
125
  <value>text/x-asciidoc</value>
126
126
  <value>text/markdown</value>
127
- <value>application/x-isodoc+xml</value>
127
+ <value>application/x-metanorma+xml</value>
128
128
  <text/>
129
129
  </choice>
130
130
  </attribute>
@@ -452,6 +452,7 @@
452
452
  <attribute name="type">
453
453
  <choice>
454
454
  <value>isni</value>
455
+ <value>orcid</value>
455
456
  <value>uri</value>
456
457
  </choice>
457
458
  </attribute>
@@ -461,10 +462,7 @@
461
462
  <define name="org-identifier">
462
463
  <element name="identifier">
463
464
  <attribute name="type">
464
- <choice>
465
- <value>orcid</value>
466
- <value>uri</value>
467
- </choice>
465
+ <data type="string" datatypeLibrary=""/>
468
466
  </attribute>
469
467
  <text/>
470
468
  </element>
@@ -1106,7 +1104,7 @@
1106
1104
  <value>complementOf</value>
1107
1105
  <value>obsoletes</value>
1108
1106
  <value>obsoletedBy</value>
1109
- <value>cited</value>
1107
+ <value>cites</value>
1110
1108
  <value>isCitedIn</value>
1111
1109
  </choice>
1112
1110
  </define>
@@ -45,8 +45,9 @@ module Asciidoctor
45
45
  noko do |xml|
46
46
  xml.figure **literal_attrs(node) do |f|
47
47
  figure_title(node, f)
48
- f.pre node.lines.join("\n"), **attr_code(id: Metanorma::Utils::anchor_or_uuid,
49
- alt: node.attr("alt"))
48
+ f.pre node.lines.join("\n"),
49
+ **attr_code(id: Metanorma::Utils::anchor_or_uuid,
50
+ alt: node.attr("alt"))
50
51
  end
51
52
  end
52
53
  end
@@ -78,9 +79,19 @@ module Asciidoctor
78
79
  example_proper(node)
79
80
  end
80
81
 
82
+ def svgmap_attrs(node)
83
+ attr_code( { id: node.id,
84
+ unnumbered: node.option?("unnumbered") ? "true" : nil,
85
+ number: node.attr("number"),
86
+ subsequence: node.attr("subsequence") }.
87
+ merge(keep_attrs(node)))
88
+ end
89
+
81
90
  def svgmap_example(node)
82
91
  noko do |xml|
83
- xml.svgmap **attr_code(example_attrs(node).merge(src: node.attr("src"), alt: node.attr("alt"))) do |ex|
92
+ xml.svgmap **attr_code(svgmap_attrs(node).merge(
93
+ src: node.attr("src"), alt: node.attr("alt"))) do |ex|
94
+ figure_title(node, ex)
84
95
  ex << node.content
85
96
  end
86
97
  end.join("\n")
@@ -129,12 +140,14 @@ module Asciidoctor
129
140
  end
130
141
 
131
142
  def para_attrs(node)
132
- attr_code(keep_attrs(node).merge(align: node.attr("align"),
133
- id: Metanorma::Utils::anchor_or_uuid(node)))
143
+ attr_code(keep_attrs(node)
144
+ .merge(align: node.attr("align"),
145
+ id: Metanorma::Utils::anchor_or_uuid(node)))
134
146
  end
135
147
 
136
148
  def paragraph(node)
137
149
  return termsource(node) if node.role == "source"
150
+
138
151
  noko do |xml|
139
152
  xml.p **para_attrs(node) do |xml_t|
140
153
  xml_t << node.content
@@ -143,8 +156,9 @@ module Asciidoctor
143
156
  end
144
157
 
145
158
  def quote_attrs(node)
146
- attr_code(keep_attrs(node).merge(align: node.attr("align"),
147
- id: Metanorma::Utils::anchor_or_uuid(node)))
159
+ attr_code(keep_attrs(node)
160
+ .merge(align: node.attr("align"),
161
+ id: Metanorma::Utils::anchor_or_uuid(node)))
148
162
  end
149
163
 
150
164
  def quote_attribution(node, out)
@@ -168,11 +182,12 @@ module Asciidoctor
168
182
  end
169
183
 
170
184
  def listing_attrs(node)
171
- attr_code(keep_attrs(node).merge(lang: node.attr("language"),
172
- id: Metanorma::Utils::anchor_or_uuid(node),
173
- unnumbered: node.option?("unnumbered") ? "true" : nil,
174
- number: node.attr("number"),
175
- filename: node.attr("filename")))
185
+ attr_code(keep_attrs(node).
186
+ merge(lang: node.attr("language"),
187
+ id: Metanorma::Utils::anchor_or_uuid(node),
188
+ unnumbered: node.option?("unnumbered") ? "true" : nil,
189
+ number: node.attr("number"),
190
+ filename: node.attr("filename")))
176
191
  end
177
192
 
178
193
  # NOTE: html escaping is performed by Nokogiri
@@ -12,9 +12,11 @@ module Asciidoctor
12
12
  end
13
13
 
14
14
  def note_attrs(node)
15
- attr_code(termnote_attrs(node).merge(
16
- type: node.attr("type"),
17
- beforeclauses: node.attr("beforeclauses") == "true" ? "true" : nil))
15
+ attr_code(termnote_attrs(node)
16
+ .merge(
17
+ type: node.attr("type"),
18
+ beforeclauses: node.attr("beforeclauses") == "true" ? "true" : nil
19
+ ))
18
20
  end
19
21
 
20
22
  def sidebar_attrs(node)
@@ -24,6 +26,7 @@ module Asciidoctor
24
26
 
25
27
  def sidebar(node)
26
28
  return unless draft?
29
+
27
30
  noko do |xml|
28
31
  xml.review **(sidebar_attrs(node)) do |r|
29
32
  wrap_in_para(node, r)
@@ -33,33 +36,34 @@ module Asciidoctor
33
36
 
34
37
  def todo_attrs(node)
35
38
  date = node.attr("date") || Date.today.iso8601.gsub(/\+.*$/, "")
36
- date += "T00:00:00Z" unless /T/.match date
39
+ date += "T00:00:00Z" unless /T/.match? date
37
40
  attr_code(
38
41
  id: ::Metanorma::Utils::anchor_or_uuid(node),
39
42
  reviewer: node.attr("reviewer") || node.attr("source") || "(Unknown)",
40
- date: date )
43
+ date: date
44
+ )
41
45
  end
42
46
 
43
47
  def todo(node)
44
48
  noko do |xml|
45
- xml.review **(todo_attrs(node)) do |r|
49
+ xml.review **todo_attrs(node) do |r|
46
50
  wrap_in_para(node, r)
47
51
  end
48
52
  end
49
53
  end
50
54
 
51
- def termnote(n)
55
+ def termnote(node)
52
56
  noko do |xml|
53
- xml.termnote **termnote_attrs(n) do |ex|
54
- wrap_in_para(n, ex)
57
+ xml.termnote **termnote_attrs(node) do |ex|
58
+ wrap_in_para(node, ex)
55
59
  end
56
60
  end.join("\n")
57
61
  end
58
62
 
59
- def note(n)
63
+ def note(node)
60
64
  noko do |xml|
61
- xml.note **note_attrs(n) do |c|
62
- wrap_in_para(n, c)
65
+ xml.note **note_attrs(node) do |c|
66
+ wrap_in_para(node, c)
63
67
  end
64
68
  end.join("\n")
65
69
  end
@@ -69,14 +73,16 @@ module Asciidoctor
69
73
  a = node.attr("type") and ["danger", "safety precautions"].each do |t|
70
74
  name = t if a.casecmp(t).zero?
71
75
  end
72
- attr_code(keep_attrs(node).merge(id: Metanorma::Utils::anchor_or_uuid(node), type: name,
73
- beforeclauses: node.attr("beforeclauses") == "true" ? "true" : nil))
76
+ attr_code(keep_attrs(node)
77
+ .merge(id: Metanorma::Utils::anchor_or_uuid(node), type: name,
78
+ beforeclauses: node.attr("beforeclauses") == "true" ? "true" : nil))
74
79
  end
75
80
 
76
81
  def admonition(node)
77
82
  return termnote(node) if in_terms?
78
83
  return note(node) if node.attr("name") == "note"
79
84
  return todo(node) if node.attr("name") == "todo"
85
+
80
86
  noko do |xml|
81
87
  xml.admonition **admonition_attrs(node) do |a|
82
88
  node.title.nil? or a.name { |name| name << node.title }
@@ -2,27 +2,29 @@ require "nokogiri"
2
2
  require "pathname"
3
3
  require "open-uri"
4
4
  require "html2doc"
5
- require_relative "./cleanup_block.rb"
6
- require_relative "./cleanup_footnotes.rb"
7
- require_relative "./cleanup_ref.rb"
8
- require_relative "./cleanup_ref_dl.rb"
9
- require_relative "./cleanup_boilerplate.rb"
10
- require_relative "./cleanup_section.rb"
11
- require_relative "./cleanup_terms.rb"
12
- require_relative "./cleanup_inline.rb"
13
- require_relative "./cleanup_amend.rb"
14
- require_relative "./cleanup_maths.rb"
5
+ require_relative "./cleanup_block"
6
+ require_relative "./cleanup_footnotes"
7
+ require_relative "./cleanup_ref"
8
+ require_relative "./cleanup_ref_dl"
9
+ require_relative "./cleanup_boilerplate"
10
+ require_relative "./cleanup_section"
11
+ require_relative "./cleanup_terms"
12
+ require_relative "./cleanup_inline"
13
+ require_relative "./cleanup_amend"
14
+ require_relative "./cleanup_maths"
15
+ require_relative "./cleanup_image"
16
+ require_relative "./cleanup_reqt"
15
17
  require "relaton_iev"
16
18
 
17
19
  module Asciidoctor
18
20
  module Standoc
19
21
  module Cleanup
20
22
  def textcleanup(result)
21
- text = result.flatten.map { |l| l.sub(/\s*$/, "") } * "\n"
23
+ text = result.flatten.map { |l| l.sub(/\s*$/, "") } * "\n"
22
24
  !@keepasciimath and text = asciimath2mathml(text)
23
25
  text = text.gsub(/\s+<fn /, "<fn ")
24
26
  text.gsub(%r{<passthrough\s+formats="metanorma">([^<]*)
25
- </passthrough>}mx) { |m| HTMLEntities.new.decode($1) }
27
+ </passthrough>}mx) { HTMLEntities.new.decode($1) }
26
28
  end
27
29
 
28
30
  def cleanup(xmldoc)
@@ -73,22 +75,24 @@ module Asciidoctor
73
75
  xmldoc.xpath("//date").each { |d| Metanorma::Utils::endash_date(d) }
74
76
  xmldoc.traverse do |n|
75
77
  next unless n.text?
78
+
76
79
  if @smartquotes
77
80
  /[-'"(<>]|\.\.|\dx/.match(n) or next
78
- n.ancestors("pre, tt, sourcecode, bibdata, on, stem, figure[@class = 'pseudocode']").empty? or next
81
+
82
+ n.ancestors("pre, tt, sourcecode, bibdata, on, "\
83
+ "stem, figure[@class = 'pseudocode']").empty? or next
79
84
  n.replace(Metanorma::Utils::smartformat(n.text))
80
85
  else
81
- n.replace(n.text.gsub(/(?<=\p{Alnum})\u2019(?=\p{Alpha})/, "'"))#.
82
- #gsub(/</, "&lt;").gsub(/>/, "&gt;"))
86
+ n.replace(n.text.gsub(/(?<=\p{Alnum})\u2019(?=\p{Alpha})/, "'")) # .
87
+ # gsub(/</, "&lt;").gsub(/>/, "&gt;"))
83
88
  end
84
89
  end
85
90
  end
86
91
 
87
- def docidentifier_cleanup(xmldoc)
88
- end
92
+ def docidentifier_cleanup(xmldoc); end
89
93
 
90
94
  TEXT_ELEMS =
91
- %w{status language script version author name callout phone email
95
+ %w{status language script version author name callout phone email
92
96
  street city state country postcode identifier referenceFrom surname
93
97
  referenceTo docidentifier docnumber prefix initial addition forename
94
98
  title draft secretariat title-main title-intro title-part}.freeze
@@ -110,57 +114,6 @@ module Asciidoctor
110
114
  xmldoc.traverse { |n| n.name = n.name.gsub(/_/, "-") }
111
115
  end
112
116
 
113
- def link_callouts_to_annotations(callouts, annotations)
114
- callouts.each_with_index do |c, i|
115
- c["target"] = "_" + UUIDTools::UUID.random_create
116
- annotations[i]["id"] = c["target"]
117
- end
118
- end
119
-
120
- def align_callouts_to_annotations(xmldoc)
121
- xmldoc.xpath("//sourcecode").each do |x|
122
- callouts = x.elements.select { |e| e.name == "callout" }
123
- annotations = x.elements.select { |e| e.name == "annotation" }
124
- callouts.size == annotations.size and
125
- link_callouts_to_annotations(callouts, annotations)
126
- end
127
- end
128
-
129
- def merge_annotations_into_sourcecode(xmldoc)
130
- xmldoc.xpath("//sourcecode").each do |x|
131
- while x&.next_element&.name == "annotation"
132
- x.next_element.parent = x
133
- end
134
- end
135
- end
136
-
137
- def callout_cleanup(xmldoc)
138
- merge_annotations_into_sourcecode(xmldoc)
139
- align_callouts_to_annotations(xmldoc)
140
- end
141
-
142
- def sourcecode_cleanup(xmldoc)
143
- xmldoc.xpath("//sourcecode").each do |x|
144
- x.traverse do |n|
145
- next unless n.text?
146
- next unless /#{Regexp.escape(@sourcecode_markup_start)}/.match(n.text)
147
- n.replace(sourcecode_markup(n))
148
- end
149
- end
150
- end
151
-
152
- def sourcecode_markup(n)
153
- acc = []
154
- n.text.split(/(#{Regexp.escape(@sourcecode_markup_start)}|#{Regexp.escape(@sourcecode_markup_end)})/).
155
- each_slice(4).map do |a|
156
- acc << Nokogiri::XML::Text.new(a[0], n.document).
157
- to_xml(encoding: "US-ASCII", save_with: Nokogiri::XML::Node::SaveOptions::NO_DECLARATION)
158
- next unless a.size == 4
159
- acc << Asciidoctor.convert(a[2], backend: (self&.backend&.to_sym || :standoc), doctype: :inline)
160
- end
161
- acc.join
162
- end
163
-
164
117
  # allows us to deal with doc relation localities,
165
118
  # temporarily stashed to "bpart"
166
119
  def bpart_cleanup(xmldoc)
@@ -170,23 +123,24 @@ module Asciidoctor
170
123
  end
171
124
  end
172
125
 
173
- def img_cleanup(xmldoc)
174
- return xmldoc unless @datauriimage
175
- xmldoc.xpath("//image").each { |i| i["src"] = Metanorma::Utils::datauri(i["src"], @localdir) }
176
- end
177
-
178
126
  def variant_cleanup(xmldoc)
179
127
  xmldoc.xpath("//*[variant]").each do |c|
180
- c&.next&.text? && c&.next&.next&.name == "variant" && c.next.text.gsub(/\s/, "").empty? and
128
+ c&.next&.text? && c&.next&.next&.name == "variant" &&
129
+ c.next.text.gsub(/\s/, "").empty? and
181
130
  c.next.remove
182
131
  end
183
132
  xmldoc.xpath("//*[variant]").each do |c|
184
- next unless c.children.any? { |n| n.name != "variant" && (!n.text? || !n.text.gsub(/\s/, "").empty?) }
133
+ next unless c.children.any? do |n|
134
+ n.name != "variant" && (!n.text? || !n.text.gsub(/\s/, "").empty?)
135
+ end
136
+
185
137
  c.xpath("./variant").each do |n|
186
- if n.at_xpath('preceding-sibling::node()[not(self::text()[not(normalize-space())])][1][self::variantwrap]')
138
+ if n.at_xpath("preceding-sibling::node()"\
139
+ "[not(self::text()[not(normalize-space())])][1]"\
140
+ "[self::variantwrap]")
187
141
  n.previous_element << n
188
142
  else
189
- n.replace('<variantwrap/>').first << n
143
+ n.replace("<variantwrap/>").first << n
190
144
  end
191
145
  end
192
146
  end