metanorma-standoc 2.9.2 → 2.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: afbcf21ea1b8e99868178616c755a4dcef811f631326c65f6835ad491d1f2835
4
- data.tar.gz: 9d3499adf6025521d2683f4456e64b1cd27dd63722c231de8fab7aa47fe79973
3
+ metadata.gz: e946ea4ef470077763b56b2435a231a884ddede3c32f9bd09dde4fd912b15bfc
4
+ data.tar.gz: 80511a11e935c1e090be377db8180907835895d5507e8b4e88df6c2dee7d4f9a
5
5
  SHA512:
6
- metadata.gz: 46a8beb31cb6230dccdcdb36352dd05e705a3114d0b1b6e04b46b1a445aa1fe30249426c81be8a441f615c95fe633cc078bd70c030616cdc25ff4c50eb45ab76
7
- data.tar.gz: 300aeca29fa514e88535c4f60577f9a6e83446f195b76e7e15029ae912d0beb06c0f6f028b098e4662ab53fbf83fc8e675a920ef7c3269f1e501afa835ba127f
6
+ metadata.gz: a72d55869cbd272db4c6818cd8aadd3057021bf4b876c595ecb6c10d98008c7da98368189df23ad25297eaa68119c2c2cdc3efeb9b573812b9a200974458d703
7
+ data.tar.gz: 6710ac348b46e662a77ec202ec26944c3d0956a5b984546995444f352f661fefff3995c328ee6c7b2448137d690a7091db2b873584a277279f1c01e549c8a099
@@ -15,7 +15,7 @@ module Metanorma
15
15
  def inline_anchor_ref(node)
16
16
  noko do |xml|
17
17
  xml.bookmark nil, **attr_code(id: node.id)
18
- end.join
18
+ end
19
19
  end
20
20
 
21
21
  def inline_anchor_xref(node)
@@ -26,7 +26,7 @@ module Metanorma
26
26
  xml.xref **attr_code(attrs) do |x|
27
27
  x << c
28
28
  end
29
- end.join
29
+ end
30
30
  end
31
31
 
32
32
  def inline_anchor_xref_attrs(node)
@@ -83,7 +83,7 @@ module Metanorma
83
83
  xml.link **attr_code(attributes) do |l|
84
84
  l << contents
85
85
  end
86
- end.join
86
+ end
87
87
  end
88
88
 
89
89
  def inline_anchor_link_attrs(node)
@@ -103,7 +103,7 @@ module Metanorma
103
103
  xml.ref **attr_code(id: node.target || node.id) do |r|
104
104
  r << eref_contents
105
105
  end
106
- end.join
106
+ end
107
107
  end
108
108
 
109
109
  def inline_anchor_bibref_contents(node)
@@ -114,7 +114,7 @@ module Metanorma
114
114
  def inline_callout(node)
115
115
  noko do |xml|
116
116
  xml.callout node.text
117
- end.join
117
+ end
118
118
  end
119
119
 
120
120
  def inline_footnote(node)
@@ -124,7 +124,7 @@ module Metanorma
124
124
  xml.fn reference: @fn_number do |fn|
125
125
  fn.p { |p| p << node.text }
126
126
  end
127
- end.join
127
+ end
128
128
  end
129
129
  end
130
130
  end
@@ -90,7 +90,7 @@ module Metanorma
90
90
  )) do |ex|
91
91
  wrap_in_para(node, ex)
92
92
  end
93
- end.join("")
93
+ end
94
94
  end
95
95
 
96
96
  def example(node)
@@ -128,7 +128,7 @@ module Metanorma
128
128
  figure_title(node, ex)
129
129
  wrap_in_para(node, ex)
130
130
  end
131
- end.join("")
131
+ end
132
132
  end
133
133
 
134
134
  def example_attrs(node)
@@ -141,7 +141,7 @@ module Metanorma
141
141
  node.title.nil? or ex.name { |name| name << node.title }
142
142
  wrap_in_para(node, ex)
143
143
  end
144
- end.join("")
144
+ end
145
145
  end
146
146
 
147
147
  def para_attrs(node)
@@ -158,7 +158,7 @@ module Metanorma
158
158
  xml.p **para_attrs(node) do |xml_t|
159
159
  xml_t << node.content
160
160
  end
161
- end.join("")
161
+ end
162
162
  end
163
163
 
164
164
  def quote_attrs(node)
@@ -183,7 +183,7 @@ module Metanorma
183
183
  quote_attribution(node, q)
184
184
  wrap_in_para(node, q)
185
185
  end
186
- end.join("")
186
+ end
187
187
  end
188
188
 
189
189
  def listing_attrs(node)
@@ -17,7 +17,7 @@ module Metanorma
17
17
  figure_title(node, ex)
18
18
  ex << node.content
19
19
  end
20
- end.join("\n")
20
+ end
21
21
  end
22
22
 
23
23
  def figure_example(node)
@@ -26,7 +26,7 @@ module Metanorma
26
26
  node.title.nil? or ex.name { |name| name << node.title }
27
27
  wrap_in_para(node, ex)
28
28
  end
29
- end.join("")
29
+ end
30
30
  end
31
31
 
32
32
  def figure_title(node, out)
@@ -32,7 +32,7 @@ module Metanorma
32
32
  xml.review **sidebar_attrs(node) do |r|
33
33
  wrap_in_para(node, r)
34
34
  end
35
- end.join("")
35
+ end
36
36
  end
37
37
 
38
38
  def todo_attrs(node)
@@ -49,7 +49,7 @@ module Metanorma
49
49
  xml.review **todo_attrs(node) do |r|
50
50
  wrap_in_para(node, r)
51
51
  end
52
- end.join("")
52
+ end
53
53
  end
54
54
 
55
55
  def termnote(node)
@@ -57,7 +57,7 @@ module Metanorma
57
57
  xml.termnote **termnote_attrs(node) do |ex|
58
58
  wrap_in_para(node, ex)
59
59
  end
60
- end.join("")
60
+ end
61
61
  end
62
62
 
63
63
  def note(node)
@@ -67,7 +67,7 @@ module Metanorma
67
67
  xml.note **note_attrs(node) do |c|
68
68
  wrap_in_para(node, c)
69
69
  end
70
- end.join("")
70
+ end
71
71
  end
72
72
 
73
73
  def boilerplate_note(node)
@@ -101,7 +101,7 @@ module Metanorma
101
101
  node.title.nil? or a.name { |name| name << node.title }
102
102
  wrap_in_para(node, a)
103
103
  end
104
- end.join("")
104
+ end
105
105
  end
106
106
 
107
107
  def admonition_alternatives(node)
@@ -82,6 +82,7 @@ module Metanorma
82
82
  boilerplate_cleanup(xmldoc)
83
83
  toc_cleanup(xmldoc)
84
84
  smartquotes_cleanup(xmldoc)
85
+ linebreak_cleanup(xmldoc)
85
86
  variant_cleanup(xmldoc)
86
87
  para_cleanup(xmldoc)
87
88
  empty_element_cleanup(xmldoc)
@@ -137,7 +138,7 @@ module Metanorma
137
138
  end
138
139
 
139
140
  def element_name_cleanup(xmldoc)
140
- xmldoc.traverse { |n| n.name = n.name.gsub("_", "-") }
141
+ xmldoc.traverse { |n| n.name = n.name.tr("_", "-") }
141
142
  end
142
143
 
143
144
  # allows us to deal with doc relation localities,
@@ -10,7 +10,7 @@ module Metanorma
10
10
  def symbol_key(sym)
11
11
  @c.decode(asciimath_key(sym).text)
12
12
  .gsub(/[\[\]{}<>()]/, "").gsub(/\s/m, "")
13
- .gsub(/[[:punct:]]|[_^]/, ":\\0").gsub("`", "")
13
+ .gsub(/[[:punct:]]|[_^]/, ":\\0").delete("`")
14
14
  .gsub(/[0-9]+/, "þ\\0")
15
15
  .tr("AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",
16
16
  "ABCFEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
@@ -46,7 +46,7 @@ module Metanorma
46
46
  %w(absent geographic-area).each do |a|
47
47
  dl_to_attrs(prev, dlist, a)
48
48
  end
49
- %w(field-of-application usage-info).reverse.each do |a|
49
+ %w(field-of-application usage-info).reverse_each do |a|
50
50
  dl_to_elems(prev.at("./expression"), prev, dlist, a)
51
51
  end
52
52
  end
@@ -78,7 +78,7 @@ module Metanorma
78
78
  end
79
79
 
80
80
  def term_dl_to_expression_name_metadata(prev, dlist)
81
- %w(abbreviation-type pronunciation).reverse.each do |a|
81
+ %w(abbreviation-type pronunciation).reverse_each do |a|
82
82
  dl_to_elems(prev.at("./expression/name"), prev, dlist, a)
83
83
  end
84
84
  g = dlist.at("./dt[text()='grammar']/following::dd//dl") and
@@ -89,7 +89,7 @@ module Metanorma
89
89
  prev.at(".//expression") or return
90
90
  prev.at(".//expression") << "<grammar><sentinel/></grammar>"
91
91
  %w(gender number isPreposition isParticiple isAdjective isAdverb isNoun
92
- grammar-value).reverse.each do |a|
92
+ grammar-value).reverse_each do |a|
93
93
  dl_to_elems(prev.at(".//expression/grammar/*"), prev.elements.last,
94
94
  dlist, a)
95
95
  end
@@ -11,6 +11,54 @@ module Metanorma
11
11
  text
12
12
  end
13
13
 
14
+ def ancestor_include?(elem, ancestors)
15
+ path = elem.path.gsub(/\[\d+\]/, "").split(%r{/})[1..-2]
16
+ !path.intersection(ancestors).empty?
17
+ end
18
+
19
+ def linebreak_cleanup(xmldoc)
20
+ xmldoc.traverse do |x|
21
+ x.text? && x.text.include?("\n") or next
22
+ ancestor_include?(x, PRESERVE_LINEBREAK_ELEMENTS) and next
23
+ ancestor_include?(x, STRIP_LINEBREAK_ELEMENTS) or next
24
+ x.replace(Metanorma::Utils
25
+ .line_sanitise(x.text.lines.map(&:rstrip)).join)
26
+ end
27
+ end
28
+
29
+ # process example/p, example/sourcecode, not example on its own:
30
+ # this is about stripping lines for blocks containing inline elems & text
31
+ def linebreak_cleanup(xmldoc)
32
+ xmldoc.xpath(STRIP_LINEBREAK_ELEMENTS.map { |e| "//#{e}" }.join(" | "))
33
+ .each do |b|
34
+ b.xpath(STRIP_LINEBREAK_ELEMENTS.map { |e| ".//#{e}" }.join(" | "))
35
+ .empty? or next
36
+ linebreak_cleanup_block(gather_text_for_linebreak_cleanup(b))
37
+ end
38
+ end
39
+
40
+ def linebreak_cleanup_block(block)
41
+ block.each_with_index do |e, i|
42
+ e[:skip] and next
43
+ lines = e[:text].lines.map(&:rstrip)
44
+ e[:last] or lines << block[i + 1][:text].lines.first # next token context
45
+ out = Metanorma::Utils.line_sanitise(lines)
46
+ e[:last] or out.pop
47
+ e[:elem].replace(out.join)
48
+ end
49
+ end
50
+
51
+ def gather_text_for_linebreak_cleanup(block)
52
+ x = block.xpath(".//text()").map do |e|
53
+ { elem: e, text: e.text,
54
+ skip: ancestor_include?(e, PRESERVE_LINEBREAK_ELEMENTS) }
55
+ end
56
+ x.empty? and return x
57
+ x.each { |e| e[:skip] ||= !e[:text].include?("\n") }
58
+ x[-1][:last] = true
59
+ x
60
+ end
61
+
14
62
  def smartquotes_cleanup(xmldoc)
15
63
  xmldoc.xpath("//date").each { |d| Metanorma::Utils::endash_date(d) }
16
64
  if @smartquotes then smartquotes_cleanup1(xmldoc)
@@ -37,10 +85,20 @@ module Metanorma
37
85
  %w(pre tt sourcecode stem asciimath figure bibdata passthrough
38
86
  identifier metanorma-extension).freeze
39
87
 
88
+ PRESERVE_LINEBREAK_ELEMENTS =
89
+ %w(pre sourcecode passthrough metanorma-extension).freeze
90
+
91
+ STRIP_LINEBREAK_ELEMENTS =
92
+ %w(title name variant-title figure example review admonition
93
+ note li th td dt dd p quote label annotation
94
+ preferred admitted related deprecates field-of-application
95
+ usage-info expression pronunciation grammar-value domain
96
+ definition termnote termexample modification description
97
+ newcontent floating-title).freeze
98
+
40
99
  def uninterrupt_quotes_around_xml_skip(elem)
41
100
  !(/\A['"]/.match?(elem.text) &&
42
- elem.previous.path.gsub(/\[\d+\]/, "").split(%r{/})[1..-2]
43
- .intersection(IGNORE_QUOTES_ELEMENTS).empty? &&
101
+ !ancestor_include?(elem.previous, IGNORE_QUOTES_ELEMENTS) &&
44
102
  ((elem.previous.text.strip.empty? &&
45
103
  !empty_tag_with_text_content?(elem.previous)) ||
46
104
  ignoretext?(elem.previous)))
@@ -69,7 +127,7 @@ module Metanorma
69
127
  abstract preferred admitted related deprecates field-of-application
70
128
  usage-info expression pronunciation grammar-value domain
71
129
  definition termnote termexample modification description
72
- newcontent floating-title tab).include? elem.name
130
+ newcontent floating-title tab review admonition annotation).include? elem.name
73
131
  end
74
132
 
75
133
  def empty_tag_with_text_content?(elem)
@@ -83,8 +141,9 @@ module Metanorma
83
141
  empty_tag_with_text_content?(x) and prev = "dummy"
84
142
  x.text? or next
85
143
 
86
- ancestors = x.path.gsub(/\[\d+\]/, "").split(%r{/})[1..-2]
87
- ancestors.intersection(IGNORE_QUOTES_ELEMENTS).empty? or next
144
+ # ancestors = x.path.gsub(/\[\d+\]/, "").split(%r{/})[1..-2]
145
+ # ancestors.intersection(IGNORE_QUOTES_ELEMENTS).empty? or next
146
+ ancestor_include?(x, IGNORE_QUOTES_ELEMENTS) and next
88
147
  dumb2smart_quotes1(x, prev)
89
148
  prev = x.text
90
149
  end
@@ -11,19 +11,19 @@ module Metanorma
11
11
  noko do |xml|
12
12
  xml << node.text
13
13
  xml.br
14
- end.join
14
+ end
15
15
  end
16
16
 
17
17
  def page_break(node)
18
18
  attrs = {}
19
19
  node.option?("landscape") and attrs[:orientation] = "landscape"
20
20
  node.option?("portrait") and attrs[:orientation] = "portrait"
21
- noko { |xml| xml.pagebreak **attr_code(attrs) }.join
21
+ noko { |xml| xml.pagebreak **attr_code(attrs) }
22
22
  end
23
23
 
24
24
  def thematic_break(_node)
25
25
  # noko(&:hr).join # Do not do this, noko blows up
26
- noko { |xml| xml.hr }.join # rubocop:disable Style/SymbolProc
26
+ noko { |xml| xml.hr } # rubocop:disable Style/SymbolProc
27
27
  end
28
28
 
29
29
  def latex_parse1(text, block)
@@ -102,7 +102,7 @@ module Metanorma
102
102
  xml << node.text
103
103
  end
104
104
  end
105
- end.join
105
+ end
106
106
  end
107
107
 
108
108
  def hash2styles(role)
@@ -146,7 +146,7 @@ module Metanorma
146
146
  def inline_image(node)
147
147
  noko do |xml|
148
148
  xml.image **image_attributes(node)
149
- end.join
149
+ end
150
150
  end
151
151
 
152
152
  def inline_indexterm(node)
@@ -154,7 +154,7 @@ module Metanorma
154
154
  node.type == :visible and xml << node.text
155
155
  terms = (node.attr("terms") || [node.text]).map { |x| xml_encode(x) }
156
156
  inline_indexterm1(xml, terms)
157
- end.join
157
+ end
158
158
  end
159
159
 
160
160
  def inline_indexterm1(xml, terms)
@@ -41,7 +41,7 @@ module Metanorma
41
41
  list_caption(node, xml_ul)
42
42
  node.items.each { |item| ul_li(xml_ul, item) }
43
43
  end
44
- end.join("")
44
+ end
45
45
  end
46
46
 
47
47
  def olist_style(style)
@@ -67,7 +67,7 @@ module Metanorma
67
67
  list_caption(node, xml_ol)
68
68
  node.items.each { |item| li(xml_ol, item) }
69
69
  end
70
- end.join("")
70
+ end
71
71
  end
72
72
 
73
73
  def dt(terms, xml_dl)
@@ -107,7 +107,7 @@ module Metanorma
107
107
  dd(dd, xml_dl)
108
108
  end
109
109
  end
110
- end.join("")
110
+ end
111
111
  end
112
112
 
113
113
  def colist(node)
@@ -117,7 +117,7 @@ module Metanorma
117
117
  xml_li.p { |p| p << item.text }
118
118
  end
119
119
  end
120
- end.join("")
120
+ end
121
121
  end
122
122
 
123
123
  def list_caption(node, out)
@@ -24,7 +24,7 @@ module Metanorma
24
24
 
25
25
  def references2xml(ret)
26
26
  out = ret.map do |b|
27
- b.nil? ? nil : noko { |xml| reference1out(b, xml) }.join
27
+ b.nil? ? nil : noko { |xml| reference1out(b, xml) }
28
28
  end
29
29
  out.map { |x| x.nil? ? nil : Nokogiri::XML(x).root }
30
30
  end
@@ -141,7 +141,7 @@ module Metanorma
141
141
  clause_parse(a, xml, node)
142
142
  end
143
143
  end
144
- end.join("\n")
144
+ end
145
145
  end
146
146
 
147
147
  def set_obligation(attrs, node)
@@ -162,7 +162,7 @@ module Metanorma
162
162
  end
163
163
  xml_abstract << node.content
164
164
  end
165
- end.join("\n")
165
+ end
166
166
  end
167
167
 
168
168
  def misccontainer_parse(_attrs, xml, node)
@@ -243,7 +243,7 @@ module Metanorma
243
243
  xml.floating_title **floating_title_attrs(node) do |xml_t|
244
244
  xml_t << node.title
245
245
  end
246
- end.join("\n")
246
+ end
247
247
  end
248
248
  end
249
249
  end
@@ -131,7 +131,7 @@ module Metanorma
131
131
  span[:surname] and return
132
132
  msg = "Missing surname: issue with bibliographic markup " \
133
133
  "in \"#{title}\": #{span}"
134
- @err << { msg: msg, fatal: true }
134
+ @err << { msg:, fatal: true }
135
135
  end
136
136
 
137
137
  def span_to_person(span, title)
@@ -170,7 +170,7 @@ module Metanorma
170
170
  seen_xref = Nokogiri::XML.fragment(matched[:xref])
171
171
  add_term_source(node, xml_t, seen_xref, matched)
172
172
  end
173
- end.join("")
173
+ end
174
174
  end
175
175
 
176
176
  def termdefinition(node)
@@ -178,7 +178,7 @@ module Metanorma
178
178
  xml.definition **attr_code(type: node.attr("type")) do |d|
179
179
  d << node.content
180
180
  end
181
- end.join("")
181
+ end
182
182
  end
183
183
  end
184
184
  end
@@ -19,6 +19,6 @@ module Metanorma
19
19
  end
20
20
 
21
21
  module Standoc
22
- VERSION = "2.9.2".freeze
22
+ VERSION = "2.9.3".freeze
23
23
  end
24
24
  end
@@ -32,12 +32,12 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency "asciidoctor", "~> 2.0.0"
33
33
  spec.add_dependency "crass", "~> 1.0.0"
34
34
  spec.add_dependency "iev", "~> 0.3.0"
35
- spec.add_dependency "isodoc", "~> 2.10.5"
35
+ spec.add_dependency "isodoc", "~> 2.11.0"
36
36
  spec.add_dependency "metanorma", ">= 1.6.0"
37
37
  spec.add_dependency "metanorma-plugin-datastruct", "~> 0.3.0"
38
38
  spec.add_dependency "metanorma-plugin-glossarist", "~> 0.2.0"
39
39
  spec.add_dependency "metanorma-plugin-lutaml", "~> 0.7.0"
40
- spec.add_dependency "metanorma-utils", "~> 1.9.0"
40
+ spec.add_dependency "metanorma-utils", "~> 1.10.0"
41
41
  spec.add_dependency "ruby-jing"
42
42
  # relaton-cli not just relaton, to avoid circular reference in metanorma
43
43
  spec.add_dependency "asciimath2unitsml", "~> 0.4.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-standoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.2
4
+ version: 2.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-05 00:00:00.000000000 Z
11
+ date: 2024-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 2.10.5
75
+ version: 2.11.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 2.10.5
82
+ version: 2.11.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: metanorma
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +142,14 @@ dependencies:
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 1.9.0
145
+ version: 1.10.0
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 1.9.0
152
+ version: 1.10.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: ruby-jing
155
155
  requirement: !ruby/object:Gem::Requirement