stepmod-utils 0.3.4 → 0.3.9

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -11
  3. data/.github/workflows/release.yml +7 -5
  4. data/.hound.yml +5 -0
  5. data/.rubocop.yml +10 -0
  6. data/Gemfile +3 -3
  7. data/Rakefile +1 -1
  8. data/exe/stepmod-annotate-all +17 -11
  9. data/exe/stepmod-build-resource-docs-cache +8 -7
  10. data/exe/stepmod-convert-express-description +6 -4
  11. data/exe/stepmod-convert-express-resource +6 -4
  12. data/exe/stepmod-extract-terms +68 -30
  13. data/exe/stepmod-find-express-files +8 -7
  14. data/lib/stepmod/utils/bibdata.rb +31 -35
  15. data/lib/stepmod/utils/cleaner.rb +3 -3
  16. data/lib/stepmod/utils/concept.rb +107 -34
  17. data/lib/stepmod/utils/converters/a.rb +7 -10
  18. data/lib/stepmod/utils/converters/blockquote.rb +4 -4
  19. data/lib/stepmod/utils/converters/br.rb +1 -1
  20. data/lib/stepmod/utils/converters/bypass.rb +33 -33
  21. data/lib/stepmod/utils/converters/clause_ref.rb +3 -3
  22. data/lib/stepmod/utils/converters/code.rb +1 -1
  23. data/lib/stepmod/utils/converters/comment.rb +5 -3
  24. data/lib/stepmod/utils/converters/dd.rb +2 -2
  25. data/lib/stepmod/utils/converters/def.rb +19 -19
  26. data/lib/stepmod/utils/converters/drop.rb +2 -2
  27. data/lib/stepmod/utils/converters/dt.rb +2 -2
  28. data/lib/stepmod/utils/converters/em.rb +1 -1
  29. data/lib/stepmod/utils/converters/em_express_description.rb +1 -1
  30. data/lib/stepmod/utils/converters/eqn.rb +28 -26
  31. data/lib/stepmod/utils/converters/example.rb +5 -6
  32. data/lib/stepmod/utils/converters/express_g.rb +10 -9
  33. data/lib/stepmod/utils/converters/express_ref.rb +2 -2
  34. data/lib/stepmod/utils/converters/express_ref_express_description.rb +3 -2
  35. data/lib/stepmod/utils/converters/ext_description.rb +1 -1
  36. data/lib/stepmod/utils/converters/figure.rb +3 -3
  37. data/lib/stepmod/utils/converters/fund_cons.rb +1 -1
  38. data/lib/stepmod/utils/converters/head.rb +3 -2
  39. data/lib/stepmod/utils/converters/hr.rb +2 -2
  40. data/lib/stepmod/utils/converters/ignore.rb +3 -3
  41. data/lib/stepmod/utils/converters/introduction.rb +1 -1
  42. data/lib/stepmod/utils/converters/module_ref.rb +7 -7
  43. data/lib/stepmod/utils/converters/note.rb +5 -6
  44. data/lib/stepmod/utils/converters/ol.rb +7 -5
  45. data/lib/stepmod/utils/converters/p.rb +2 -2
  46. data/lib/stepmod/utils/converters/pass_through.rb +2 -2
  47. data/lib/stepmod/utils/converters/q.rb +1 -1
  48. data/lib/stepmod/utils/converters/schema.rb +1 -1
  49. data/lib/stepmod/utils/converters/stem.rb +1 -1
  50. data/lib/stepmod/utils/converters/stepmod_ext_description.rb +10 -6
  51. data/lib/stepmod/utils/converters/strong.rb +7 -4
  52. data/lib/stepmod/utils/converters/sub.rb +2 -2
  53. data/lib/stepmod/utils/converters/sup.rb +2 -2
  54. data/lib/stepmod/utils/converters/synonym.rb +2 -2
  55. data/lib/stepmod/utils/converters/table.rb +7 -9
  56. data/lib/stepmod/utils/converters/term.rb +27 -9
  57. data/lib/stepmod/utils/converters/text.rb +11 -13
  58. data/lib/stepmod/utils/converters/uof.rb +3 -4
  59. data/lib/stepmod/utils/html_to_asciimath.rb +91 -90
  60. data/lib/stepmod/utils/smrl_description_converter.rb +34 -33
  61. data/lib/stepmod/utils/smrl_resource_converter.rb +50 -49
  62. data/lib/stepmod/utils/stepmod_definition_converter.rb +39 -38
  63. data/lib/stepmod/utils/stepmod_file_annotator.rb +26 -19
  64. data/lib/stepmod/utils/terms_extractor.rb +138 -86
  65. data/lib/stepmod/utils/version.rb +1 -1
  66. data/stepmod-utils.gemspec +11 -6
  67. metadata +60 -16
@@ -1,64 +1,137 @@
1
+ require "glossarist"
2
+
1
3
  module Stepmod
2
4
  module Utils
3
-
4
- class Concept
5
+ class Concept < Glossarist::LocalizedConcept
5
6
  attr_accessor *%w(
6
- designation
7
- definition
8
- reference_anchor
9
7
  reference_clause
10
- examples
11
- notes
12
- synonym
8
+ reference_anchor
13
9
  converted_definition
14
10
  file_path
15
11
  )
16
12
 
17
- def initialize(options)
18
- options.each_pair do |k, v|
19
- send("#{k}=", v)
13
+ class << self
14
+ def parse(definition_xml, reference_anchor:, reference_clause:, file_path:, language_code: "en")
15
+ converted_definition = Stepmod::Utils::StepmodDefinitionConverter.convert(
16
+ definition_xml,
17
+ {
18
+ # We don't want examples and notes
19
+ no_notes_examples: true,
20
+ reference_anchor: reference_anchor,
21
+ },
22
+ )
23
+
24
+ return nil if converted_definition.nil? || converted_definition.strip.empty?
25
+
26
+ if definition_xml.name == "ext_description"
27
+ converted_definition = <<~TEXT
28
+ #{converted_definition}
29
+
30
+ NOTE: This term is incompletely defined in this document.
31
+ Reference <<#{reference_anchor}>> for the complete definition.
32
+ TEXT
33
+ end
34
+
35
+ # https://github.com/metanorma/stepmod-utils/issues/86
36
+
37
+ # TODO: This portion DOES NOT HANDLE the <synonym> element. WTF??
38
+ if definition_xml.name == "definition"
39
+ designation = definition_designation(definition_xml)
40
+ definition = definition_xml_definition(definition_xml,
41
+ reference_anchor)
42
+ converted_definition = definition_xml_converted_definition(
43
+ designation, definition
44
+ ).strip
45
+ end
46
+
47
+ new(
48
+ designations: [designation],
49
+ definition: definition,
50
+ converted_definition: converted_definition,
51
+ id: "#{reference_anchor}.#{reference_clause}",
52
+ reference_anchor: reference_anchor,
53
+ reference_clause: reference_clause,
54
+ file_path: file_path,
55
+ language_code: language_code,
56
+ )
20
57
  end
21
- end
22
58
 
23
- def self.parse(definition_xml, reference_anchor:, reference_clause:, file_path:)
24
- converted_definition = Stepmod::Utils::StepmodDefinitionConverter.convert(
25
- definition_xml,
59
+ def definition_designation(definition_xml)
60
+ # We take the <p> that is an alternative term (length<=20).
61
+ # Add in the <synonym> elements.
62
+ alts = definition_xml.xpath(".//synonym").map(&:text) +
63
+ definition_xml.xpath(".//def/p").map(&:text).reject do |text|
64
+ text.length > 20
65
+ end
66
+
67
+ term = Stepmod::Utils::Converters::Term
68
+ .new
69
+ .convert(
70
+ definition_xml.xpath(".//term").first
71
+ )
72
+
26
73
  {
27
- # We don't want examples and notes
28
- no_notes_examples: true,
29
- reference_anchor: reference_anchor
74
+ # [4..-1] because we want to skip the initial `=== {title}`
75
+ accepted: term[4..-1],
76
+ alt: alts,
30
77
  }
31
- )
78
+ end
32
79
 
33
- return nil if converted_definition.nil? || converted_definition.strip.empty?
80
+ def definition_xml_definition(definition_xml, reference_anchor)
81
+ # We reject the <p> that was considered an alternative term (length<=20)
82
+ text_nodes = definition_xml
83
+ .xpath(".//def")
84
+ .first
85
+ .children
86
+ .reject { |n| n.name == "p" && n.text.length <= 20 }
87
+
88
+ wrapper = "<def>#{text_nodes.map(&:to_s).join}</def>"
89
+
90
+ Stepmod::Utils::Converters::Def
91
+ .new
92
+ .convert(
93
+ Nokogiri::XML(wrapper).root,
94
+ {
95
+ # We don't want examples and notes
96
+ no_notes_examples: true,
97
+ reference_anchor: reference_anchor,
98
+ },
99
+ )
100
+ end
34
101
 
35
- if definition_xml.name == 'ext_description'
36
- converted_definition = <<~TEXT
37
- #{converted_definition}
102
+ def definition_xml_converted_definition(designation, definition)
103
+ if designation[:alt].length.positive?
104
+ alt_notation = "alt:[#{designation[:alt].map(&:strip).join(',')}]"
105
+ end
38
106
 
39
- NOTE: This term is incompletely defined in this document.
40
- Reference <<#{reference_anchor}>> for the complete definition.
107
+ result = <<~TEXT
108
+ === #{designation[:accepted].strip}
109
+ TEXT
110
+
111
+ if alt_notation
112
+ result += <<~TEXT
113
+
114
+ #{alt_notation}
115
+ TEXT
116
+ end
117
+
118
+ <<~TEXT
119
+ #{result}
120
+ #{definition}
41
121
  TEXT
42
122
  end
43
- new(
44
- converted_definition: converted_definition,
45
- reference_anchor: reference_anchor,
46
- reference_clause: reference_clause,
47
- file_path: file_path
48
- )
49
123
  end
50
124
 
51
125
  def to_mn_adoc
52
126
  <<~TEXT
53
- // STEPmod path:#{!file_path.empty? ? " #{file_path}" : ""}
127
+ // STEPmod path:#{!file_path.empty? ? " #{file_path}" : ''}
54
128
  #{converted_definition}
55
129
 
56
130
  [.source]
57
- <<#{reference_anchor}#{reference_clause ? ",clause=" + reference_clause : ""}>>
131
+ <<#{reference_anchor}#{reference_clause ? ",clause=#{reference_clause}" : ''}>>
58
132
 
59
133
  TEXT
60
134
  end
61
-
62
135
  end
63
136
  end
64
137
  end
@@ -8,17 +8,17 @@ module Stepmod
8
8
  class A < ReverseAdoc::Converters::Base
9
9
  def convert(node, state = {})
10
10
  name = treat_children(node, state)
11
- href = node['href']
11
+ href = node["href"]
12
12
  title = extract_title(node)
13
- id = node['id'] || node['name']
13
+ id = node["id"] || node["name"]
14
14
 
15
15
  id = id&.gsub(/\s/, "")&.gsub(/__+/, "_")
16
16
 
17
- if /^_Toc\d+$|^_GoBack$/.match id
17
+ if /^_Toc\d+$|^_GoBack$/.match? id
18
18
  ""
19
19
  elsif !id.nil? && !id.empty?
20
20
  "[[#{id}]]"
21
- elsif href.to_s.start_with?('#')
21
+ elsif href.to_s.start_with?("#")
22
22
  href = href.sub(/^#/, "").gsub(/\s/, "").gsub(/__+/, "_")
23
23
  if name.empty?
24
24
  "<<#{href}>>"
@@ -29,16 +29,13 @@ module Stepmod
29
29
  name
30
30
  else
31
31
  name = title if name.empty?
32
- href = "link:#{href}" unless href.to_s =~ URI::DEFAULT_PARSER.make_regexp
32
+ href = "link:#{href}" unless href.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
33
33
  link = "#{href}[#{name}]"
34
34
  # link.prepend(' ')
35
- link = " #{link}"
36
- link
35
+ " #{link}"
36
+
37
37
  end
38
38
  end
39
-
40
- private
41
-
42
39
  end
43
40
 
44
41
  ReverseAdoc::Converters.register :a, A.new
@@ -5,14 +5,14 @@ module Stepmod
5
5
  module Converters
6
6
  class Blockquote < ReverseAdoc::Converters::Base
7
7
  def convert(node, state = {})
8
- id = node['id']
8
+ id = node["id"]
9
9
  anchor = id ? "[[#{id}]]\n" : ""
10
- cite = node['cite']
10
+ cite = node["cite"]
11
11
  attrs = cite ? "[quote, #{cite}]\n" : ""
12
12
  content = treat_children(node, state).strip
13
13
  content = ReverseAdoc.cleaner.remove_newlines(content)
14
- #"\n\n> " << content.lines.to_a.join('> ') << "\n\n"
15
- "\n\n#{attrs}____\n" << content.lines.to_a.join('') << "\n____\n\n"
14
+ # "\n\n> " << content.lines.to_a.join('> ') << "\n\n"
15
+ "\n\n#{attrs}____\n" << content.lines.to_a.join("") << "\n____\n\n"
16
16
  end
17
17
  end
18
18
 
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Br < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(_node, _state = {})
8
8
  " +\n"
9
9
  end
10
10
  end
@@ -16,66 +16,66 @@ module Stepmod
16
16
  ReverseAdoc::Converters.register :thead, Bypass.new
17
17
  ReverseAdoc::Converters.register :tbody, Bypass.new
18
18
  ReverseAdoc::Converters.register :tfoot, Bypass.new
19
- ReverseAdoc::Converters.register :abbr, Bypass.new
19
+ ReverseAdoc::Converters.register :abbr, Bypass.new
20
20
  ReverseAdoc::Converters.register :acronym, Bypass.new
21
21
  ReverseAdoc::Converters.register :address, Bypass.new
22
- ReverseAdoc::Converters.register :applet, Bypass.new
23
- ReverseAdoc::Converters.register :map, Bypass.new
24
- ReverseAdoc::Converters.register :area, Bypass.new
22
+ ReverseAdoc::Converters.register :applet, Bypass.new
23
+ ReverseAdoc::Converters.register :map, Bypass.new
24
+ ReverseAdoc::Converters.register :area, Bypass.new
25
25
  ReverseAdoc::Converters.register :bdi, Bypass.new
26
26
  ReverseAdoc::Converters.register :bdo, Bypass.new
27
27
  ReverseAdoc::Converters.register :big, Bypass.new
28
28
  ReverseAdoc::Converters.register :button, Bypass.new
29
29
  ReverseAdoc::Converters.register :canvas, Bypass.new
30
- ReverseAdoc::Converters.register :data, Bypass.new
31
- ReverseAdoc::Converters.register :datalist, Bypass.new
30
+ ReverseAdoc::Converters.register :data, Bypass.new
31
+ ReverseAdoc::Converters.register :datalist, Bypass.new
32
32
  ReverseAdoc::Converters.register :del, Bypass.new
33
33
  ReverseAdoc::Converters.register :ins, Bypass.new
34
34
  ReverseAdoc::Converters.register :dfn, Bypass.new
35
- ReverseAdoc::Converters.register :dialog, Bypass.new
36
- ReverseAdoc::Converters.register :embed, Bypass.new
37
- ReverseAdoc::Converters.register :fieldset, Bypass.new
38
- ReverseAdoc::Converters.register :font, Bypass.new
39
- ReverseAdoc::Converters.register :footer, Bypass.new
40
- ReverseAdoc::Converters.register :form, Bypass.new
41
- ReverseAdoc::Converters.register :frame, Bypass.new
42
- ReverseAdoc::Converters.register :frameset, Bypass.new
35
+ ReverseAdoc::Converters.register :dialog, Bypass.new
36
+ ReverseAdoc::Converters.register :embed, Bypass.new
37
+ ReverseAdoc::Converters.register :fieldset, Bypass.new
38
+ ReverseAdoc::Converters.register :font, Bypass.new
39
+ ReverseAdoc::Converters.register :footer, Bypass.new
40
+ ReverseAdoc::Converters.register :form, Bypass.new
41
+ ReverseAdoc::Converters.register :frame, Bypass.new
42
+ ReverseAdoc::Converters.register :frameset, Bypass.new
43
43
  ReverseAdoc::Converters.register :header, Bypass.new
44
44
  ReverseAdoc::Converters.register :iframe, Bypass.new
45
45
  ReverseAdoc::Converters.register :input, Bypass.new
46
46
  ReverseAdoc::Converters.register :label, Bypass.new
47
- ReverseAdoc::Converters.register :legend, Bypass.new
47
+ ReverseAdoc::Converters.register :legend, Bypass.new
48
48
  ReverseAdoc::Converters.register :main, Bypass.new
49
49
  ReverseAdoc::Converters.register :menu, Bypass.new
50
- ReverseAdoc::Converters.register :menulist, Bypass.new
51
- ReverseAdoc::Converters.register :meter, Bypass.new
52
- ReverseAdoc::Converters.register :nav, Bypass.new
50
+ ReverseAdoc::Converters.register :menulist, Bypass.new
51
+ ReverseAdoc::Converters.register :meter, Bypass.new
52
+ ReverseAdoc::Converters.register :nav, Bypass.new
53
53
  ReverseAdoc::Converters.register :noframes, Bypass.new
54
54
  ReverseAdoc::Converters.register :noscript, Bypass.new
55
- ReverseAdoc::Converters.register :object, Bypass.new
56
- ReverseAdoc::Converters.register :optgroup, Bypass.new
55
+ ReverseAdoc::Converters.register :object, Bypass.new
56
+ ReverseAdoc::Converters.register :optgroup, Bypass.new
57
57
  ReverseAdoc::Converters.register :option, Bypass.new
58
58
  ReverseAdoc::Converters.register :output, Bypass.new
59
- ReverseAdoc::Converters.register :param, Bypass.new
60
- ReverseAdoc::Converters.register :picture, Bypass.new
61
- ReverseAdoc::Converters.register :progress, Bypass.new
62
- ReverseAdoc::Converters.register :ruby, Bypass.new
59
+ ReverseAdoc::Converters.register :param, Bypass.new
60
+ ReverseAdoc::Converters.register :picture, Bypass.new
61
+ ReverseAdoc::Converters.register :progress, Bypass.new
62
+ ReverseAdoc::Converters.register :ruby, Bypass.new
63
63
  ReverseAdoc::Converters.register :rt, Bypass.new
64
64
  ReverseAdoc::Converters.register :rp, Bypass.new
65
- ReverseAdoc::Converters.register :s, Bypass.new
66
- ReverseAdoc::Converters.register :select, Bypass.new
67
- ReverseAdoc::Converters.register :small, Bypass.new
68
- ReverseAdoc::Converters.register :span, Bypass.new
69
- ReverseAdoc::Converters.register :strike, Bypass.new
65
+ ReverseAdoc::Converters.register :s, Bypass.new
66
+ ReverseAdoc::Converters.register :select, Bypass.new
67
+ ReverseAdoc::Converters.register :small, Bypass.new
68
+ ReverseAdoc::Converters.register :span, Bypass.new
69
+ ReverseAdoc::Converters.register :strike, Bypass.new
70
70
  ReverseAdoc::Converters.register :details, Bypass.new
71
71
  ReverseAdoc::Converters.register :section, Bypass.new
72
72
  ReverseAdoc::Converters.register :summary, Bypass.new
73
- ReverseAdoc::Converters.register :svg, Bypass.new
73
+ ReverseAdoc::Converters.register :svg, Bypass.new
74
74
  ReverseAdoc::Converters.register :template, Bypass.new
75
75
  ReverseAdoc::Converters.register :textarea, Bypass.new
76
- ReverseAdoc::Converters.register :track, Bypass.new
77
- ReverseAdoc::Converters.register :u, Bypass.new
78
- ReverseAdoc::Converters.register :wbr, Bypass.new
76
+ ReverseAdoc::Converters.register :track, Bypass.new
77
+ ReverseAdoc::Converters.register :u, Bypass.new
78
+ ReverseAdoc::Converters.register :wbr, Bypass.new
79
79
  end
80
80
  end
81
81
  end
@@ -5,7 +5,7 @@ module Stepmod
5
5
  module Converters
6
6
  class ClauseRef < ReverseAdoc::Converters::Base
7
7
  def convert(node, _state = {})
8
- " term:[#{normalized_ref(node['linkend'])}] "
8
+ " {{#{normalized_ref(node['linkend'])}}} "
9
9
  end
10
10
 
11
11
  private
@@ -13,10 +13,10 @@ module Stepmod
13
13
  def normalized_ref(ref)
14
14
  return unless ref || ref.empty?
15
15
 
16
- ref.to_s.split(':').last.squeeze(' ').strip
16
+ ref.to_s.split(":").last.squeeze(" ").strip
17
17
  end
18
18
  end
19
19
  ReverseAdoc::Converters.register :clause_ref, ClauseRef.new
20
20
  end
21
21
  end
22
- end
22
+ end
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Code < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(node, _state = {})
8
8
  "`#{node.text}`"
9
9
  end
10
10
  end
@@ -4,8 +4,10 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Comment < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
8
- comment = node.text.strip.split("\n").map{|line| "// #{line}"}.join("\n")
7
+ def convert(node, _state = {})
8
+ comment = node.text.strip.split("\n").map do |line|
9
+ "\n// #{line}"
10
+ end.join("\n")
9
11
  "#{comment}\n"
10
12
  end
11
13
  end
@@ -13,4 +15,4 @@ module Stepmod
13
15
  ReverseAdoc::Converters.register :comment, Comment.new
14
16
  end
15
17
  end
16
- end
18
+ end
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Dd < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(node, _state = {})
8
8
  "#{node.text}\n"
9
9
  end
10
10
 
@@ -12,4 +12,4 @@ module Stepmod
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -1,4 +1,3 @@
1
-
2
1
  module Stepmod
3
2
  module Utils
4
3
  module Converters
@@ -12,30 +11,29 @@ module Stepmod
12
11
 
13
12
  def treat_children(node, state)
14
13
  converted = node.children.each_with_object({}) do |child, res|
15
-
16
14
  content = treat(child, state)
17
15
  next if content.strip.empty?
18
16
 
19
17
  res[child] = content
20
18
  end
21
19
  previous = nil
22
- result = ''
23
-
24
- converted.each.with_index do |(child, content), i|
25
- if block_tag?(child, previous)
26
- result += "\n\n"
27
- elsif comment_tag?(child, previous)
28
- result += "\n"
29
- else
30
- result += ' '
31
- end
20
+ result = ""
21
+
22
+ converted.each.with_index do |(child, content), _i|
23
+ result += if block_tag?(child, previous)
24
+ "\n\n"
25
+ elsif comment_tag?(child, previous)
26
+ "\n"
27
+ else
28
+ " "
29
+ end
32
30
  result += content
33
31
  previous = child
34
32
  end
35
33
 
36
34
  # Remove double newlines for every line
37
35
  result = result.gsub(/\n\n+/, "\n\n")
38
- result = result.squeeze(' ')
36
+ result = result.squeeze(" ")
39
37
 
40
38
  result.strip
41
39
  end
@@ -46,14 +44,14 @@ module Stepmod
46
44
  end
47
45
 
48
46
  def comment_tag?(child, previous)
49
- child.name == 'comment' || (previous && previous.name === 'comment')
47
+ child.name == "comment" || (previous && previous.name === "comment")
50
48
  end
51
49
 
52
50
  def additional_block(node)
53
51
  # Treat first `p` tag as an `alt` block, metanorma/stepmod-utils#9
54
52
  first_child_tag = node
55
- .children
56
- .find { |n| n.is_a?(Nokogiri::XML::Element) }
53
+ .children
54
+ .find { |n| n.is_a?(Nokogiri::XML::Element) }
57
55
  return unless can_transform_to_alt?(first_child_tag)
58
56
 
59
57
  result = Stepmod::Utils::Converters::Synonym
@@ -66,12 +64,14 @@ module Stepmod
66
64
 
67
65
  # metanorma/stepmod-utils#18 when para is the only text doe snot transform it
68
66
  def can_transform_to_alt?(first_child_tag)
69
- return false unless first_child_tag&.name == 'p' &&
70
- defined?(Stepmod::Utils::Converters::Synonym)
67
+ return false unless first_child_tag&.name == "p" &&
68
+ defined?(Stepmod::Utils::Converters::Synonym)
71
69
 
72
70
  next_sibling = first_child_tag.next
73
71
  while next_sibling
74
- return true if !next_sibling.text.to_s.strip.empty? && %w[p text].include?(next_sibling.name)
72
+ return true if !next_sibling.text.to_s.strip.empty? && %w[p
73
+ text].include?(next_sibling.name)
74
+
75
75
  next_sibling = next_sibling.next
76
76
  end
77
77
  false
@@ -4,8 +4,8 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Drop < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
8
- ''
7
+ def convert(_node, _state = {})
8
+ ""
9
9
  end
10
10
  end
11
11
 
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Dt < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(node, _state = {})
8
8
  return "\n\n{blank}::" if node.text.strip.length.zero?
9
9
 
10
10
  "\n\n#{node.text}:: "
@@ -14,4 +14,4 @@ module Stepmod
14
14
  end
15
15
  end
16
16
  end
17
- end
17
+ end
@@ -15,7 +15,7 @@ module Stepmod
15
15
  end
16
16
 
17
17
  ReverseAdoc::Converters.register :em, Em.new
18
- ReverseAdoc::Converters.register :cite, Em.new
18
+ ReverseAdoc::Converters.register :cite, Em.new
19
19
  end
20
20
  end
21
21
  end
@@ -16,7 +16,7 @@ module Stepmod
16
16
 
17
17
  ReverseAdoc::Converters.register :em, Em.new
18
18
  ReverseAdoc::Converters.register :i, Em.new
19
- ReverseAdoc::Converters.register :cite, Em.new
19
+ ReverseAdoc::Converters.register :cite, Em.new
20
20
  end
21
21
  end
22
22
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'stepmod/utils/html_to_asciimath'
3
+ require "stepmod/utils/html_to_asciimath"
4
4
 
5
5
  module Stepmod
6
6
  module Utils
@@ -21,30 +21,32 @@ module Stepmod
21
21
 
22
22
  def definition_node?(node)
23
23
  first_strong_node = node
24
- .children
25
- .find do |n|
26
- return false if !n.text? && n.name != 'b'
27
-
28
- n.name == 'b'
29
- end
30
- first_strong_node &&
31
- first_strong_node.next &&
24
+ .children
25
+ .find do |n|
26
+ return false if !n.text? && n.name != "b"
27
+
28
+ n.name == "b"
29
+ end
30
+ first_strong_node&.next &&
32
31
  first_strong_node.next.text? &&
33
32
  first_strong_node.next.content =~ /\s+:/
34
33
  end
35
34
 
36
35
  def definition_converted(cloned_node, state)
37
36
  first_strong_node = cloned_node
38
- .children
39
- .find do |n|
40
- return false if !n.text? && n.name != 'b'
37
+ .children
38
+ .find do |n|
39
+ return false if !n.text? && n.name != "b"
41
40
 
42
- n.name == 'b'
43
- end
44
- first_strong_node.next.content = first_strong_node.next.content.gsub(/\s?:/, '')
41
+ n.name == "b"
42
+ end
43
+ first_strong_node.next.content = first_strong_node.next.content.gsub(
44
+ /\s?:/, ""
45
+ )
45
46
  term = first_strong_node.text.strip
46
47
  first_strong_node.remove
47
- "\n\n#{term}:: #{remove_trash_symbols(treat_children(cloned_node, state))}\n"
48
+ "\n\n#{term}:: #{remove_trash_symbols(treat_children(cloned_node,
49
+ state))}\n"
48
50
  end
49
51
 
50
52
  def stem_converted(cloned_node, state)
@@ -53,22 +55,22 @@ module Stepmod
53
55
  content = Stepmod::Utils::HtmlToAsciimath.new.call(internal_content)
54
56
  res = <<~TEMPLATE
55
57
 
56
- [stem]
57
- ++++
58
- #{remove_trash_symbols(content.strip)}
59
- ++++
58
+ [stem]
59
+ ++++
60
+ #{remove_trash_symbols(content.strip)}
61
+ ++++
60
62
 
61
- TEMPLATE
62
- res = "[[#{cloned_node['id']}]]\n#{res}" if cloned_node['id'] && cloned_node['id'].length > 0
63
+ TEMPLATE
64
+ res = "[[#{cloned_node['id']}]]\n#{res}" if cloned_node["id"]&.length&.positive?
63
65
  res
64
66
  end
65
67
 
66
68
  def remove_trash_symbols(content)
67
69
  content
68
- .gsub(/ /, '')
70
+ .gsub(/ /, "")
69
71
  .strip
70
- .gsub(/\(\d\)$/, '')
71
- .gsub(/\b(\w*?[_]+\w+)\b/, '"\1"')
72
+ .gsub(/\(\d\)$/, "")
73
+ .gsub(/\b(\w*?_+\w+)\b/, '"\1"')
72
74
  .gsub(/([^\s])\s+_{/, '\1_{')
73
75
  .strip
74
76
  end
@@ -81,7 +83,7 @@ module Stepmod
81
83
  node
82
84
  .children
83
85
  .each do |n|
84
- remove_tags_not_in_context(n) if n.children.length > 0
86
+ remove_tags_not_in_context(n) if n.children.length.positive?
85
87
  next if n.name != tag_name
86
88
 
87
89
  n.add_previous_sibling(n.children)
@@ -5,16 +5,15 @@ module Stepmod
5
5
  module Converters
6
6
  class Example < ReverseAdoc::Converters::Base
7
7
  def convert(node, state = {})
8
-
9
8
  # If we want to skip this node
10
- return '' if state[:no_notes_examples]
9
+ return "" if state[:no_notes_examples]
11
10
 
12
11
  <<~TEMPLATE
13
12
 
14
- [example]
15
- ====
16
- #{treat_children(node, state).strip}
17
- ====
13
+ [example]
14
+ ====
15
+ #{treat_children(node, state).strip}
16
+ ====
18
17
 
19
18
  TEMPLATE
20
19
  end