stepmod-utils 0.3.2 → 0.3.8

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 +69 -236
  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 +86 -30
  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 +30 -22
  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 +12 -2
  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 +4 -2
  36. data/lib/stepmod/utils/converters/figure.rb +20 -0
  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 +11 -7
  43. data/lib/stepmod/utils/converters/note.rb +12 -2
  44. data/lib/stepmod/utils/converters/ol.rb +5 -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 +30 -7
  51. data/lib/stepmod/utils/converters/strong.rb +5 -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 +18 -9
  57. data/lib/stepmod/utils/converters/text.rb +12 -14
  58. data/lib/stepmod/utils/converters/uof.rb +11 -7
  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 +51 -50
  62. data/lib/stepmod/utils/stepmod_definition_converter.rb +39 -37
  63. data/lib/stepmod/utils/stepmod_file_annotator.rb +26 -19
  64. data/lib/stepmod/utils/terms_extractor.rb +378 -0
  65. data/lib/stepmod/utils/version.rb +1 -1
  66. data/stepmod-utils.gemspec +12 -6
  67. metadata +80 -20
@@ -1,8 +1,6 @@
1
1
  module Stepmod
2
2
  module Utils
3
-
4
3
  class Bibdata
5
-
6
4
  DOCNUMBER = 10303
7
5
 
8
6
  attr_accessor *%w(
@@ -15,23 +13,25 @@ module Stepmod
15
13
  # module, resource, application_protocol, business_object_model
16
14
  @type = document.name
17
15
 
18
- raise 'UnknownFileError' unless %w(module resource application_protocol business_object_model).include?(@type)
16
+ raise "UnknownFileError" unless %w(module resource
17
+ application_protocol business_object_model).include?(@type)
19
18
 
20
- @doctype = document['status']
21
- @part = document['part']
22
- @title_en = document['title'] ||
23
- document['name'].gsub('_', ' ').capitalize.gsub('2d','2D').gsub('3d','3D')
24
- @title_fr = document['name.french']
25
- @version = document['version']
26
- @language = document['language']
19
+ @doctype = document["status"]
20
+ @part = document["part"]
21
+ @title_en = document["title"] ||
22
+ document["name"].gsub("_", " ").capitalize.gsub("2d", "2D").gsub("3d",
23
+ "3D")
24
+ @title_fr = document["name.french"]
25
+ @version = document["version"]
26
+ @language = document["language"]
27
27
 
28
28
  # Some publication.year contains month...
29
- @pub_year = document['publication.year'].split('-').first
30
- @pub_date = document['publication.date']
29
+ @pub_year = document["publication.year"].split("-").first
30
+ @pub_date = document["publication.date"]
31
31
 
32
32
  # puts to_mn_adoc
33
33
 
34
- return self
34
+ self
35
35
  # <module
36
36
  # name="security_classification"
37
37
  # name.french="Classification des s&#233;curit&#233;s"
@@ -54,28 +54,27 @@ module Stepmod
54
54
  # rcs.revision="$Revision: 1.26 $"
55
55
  # development.folder="dvlp"
56
56
  # >
57
-
58
57
  end
59
58
 
60
59
  def docid
61
60
  no_date = case doctype
62
- when "IS"
63
- "ISO #{DOCNUMBER}-#{part}"
64
- when "WD"
65
- "ISO/WD #{DOCNUMBER}-#{part}"
66
- when "CD"
67
- "ISO/CD #{DOCNUMBER}-#{part}"
68
- when "DIS"
69
- "ISO/DIS #{DOCNUMBER}-#{part}"
70
- when "FDIS"
71
- "ISO/FDIS #{DOCNUMBER}-#{part}"
72
- when "TS"
73
- "ISO/TS #{DOCNUMBER}-#{part}"
74
- when "CD-TS"
75
- "ISO/CD TS #{DOCNUMBER}-#{part}"
76
- else
77
- "UNKNOWN DOCTYPE: (#{doctype})"
78
- end
61
+ when "IS"
62
+ "ISO #{DOCNUMBER}-#{part}"
63
+ when "WD"
64
+ "ISO/WD #{DOCNUMBER}-#{part}"
65
+ when "CD"
66
+ "ISO/CD #{DOCNUMBER}-#{part}"
67
+ when "DIS"
68
+ "ISO/DIS #{DOCNUMBER}-#{part}"
69
+ when "FDIS"
70
+ "ISO/FDIS #{DOCNUMBER}-#{part}"
71
+ when "TS"
72
+ "ISO/TS #{DOCNUMBER}-#{part}"
73
+ when "CD-TS"
74
+ "ISO/CD TS #{DOCNUMBER}-#{part}"
75
+ else
76
+ "UNKNOWN DOCTYPE: (#{doctype})"
77
+ end
79
78
 
80
79
  if pub_year
81
80
  "#{no_date}:#{pub_year}"
@@ -106,7 +105,7 @@ module Stepmod
106
105
  end
107
106
 
108
107
  def anchor
109
- docid.gsub('/', '-').gsub(' ', '_').gsub(':', '_')
108
+ docid.gsub("/", "-").gsub(" ", "_").gsub(":", "_")
110
109
  end
111
110
 
112
111
  def to_mn_adoc
@@ -116,9 +115,6 @@ module Stepmod
116
115
  "* [[[#{anchor},#{docid}]]]"
117
116
  end
118
117
  end
119
-
120
118
  end
121
-
122
119
  end
123
120
  end
124
-
@@ -1,11 +1,11 @@
1
- require 'reverse_adoc/cleaner'
1
+ require "reverse_adoc/cleaner"
2
2
 
3
3
  module Stepmod
4
4
  module Utils
5
5
  class Cleaner < ReverseAdoc::Cleaner
6
6
  def tidy(string)
7
- super.gsub(/^ +/, '')
7
+ super.gsub(/^ +/, "")
8
8
  end
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,58 +1,114 @@
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
+ # https://github.com/metanorma/stepmod-utils/issues/86
35
+ if definition_xml.name == "definition"
36
+ designation = definition_designation(definition_xml)
37
+ definition = definition_xml_definition(definition_xml,
38
+ reference_anchor)
39
+ converted_definition = definition_xml_converted_definition(
40
+ designation, definition
41
+ ).strip
42
+ end
43
+ new(
44
+ designations: [designation],
45
+ definition: definition,
46
+ converted_definition: converted_definition,
47
+ id: "#{reference_anchor}.#{reference_clause}",
48
+ reference_anchor: reference_anchor,
49
+ reference_clause: reference_clause,
50
+ file_path: file_path,
51
+ language_code: language_code,
52
+ )
20
53
  end
21
- end
22
54
 
23
- def self.parse(definition_xml, reference_anchor:, reference_clause:, file_path:)
24
- converted_definition = Stepmod::Utils::StepmodDefinitionConverter
25
- .convert(definition_xml, { reference_anchor: reference_anchor })
55
+ def definition_designation(definition_xml)
56
+ alts = definition_xml.xpath(".//def/p").map(&:text)
57
+ {
58
+ accepted: definition_xml.xpath(".//term").first&.text,
59
+ alt: alts,
60
+ }
61
+ end
26
62
 
27
- return nil if converted_definition.nil? || converted_definition.strip.empty?
63
+ def definition_xml_definition(definition_xml, reference_anchor)
64
+ text_nodes = definition_xml
65
+ .xpath(".//def")
66
+ .first
67
+ .children
68
+ .reject { |n| n.name == "p" }
69
+ wrapper = "<def>#{text_nodes.map(&:to_s).join}</def>"
70
+ Stepmod::Utils::Converters::Def
71
+ .new
72
+ .convert(
73
+ Nokogiri::XML(wrapper).root,
74
+ {
75
+ # We don't want examples and notes
76
+ no_notes_examples: true,
77
+ reference_anchor: reference_anchor,
78
+ },
79
+ )
80
+ end
28
81
 
29
- if definition_xml.name == 'uof' || definition_xml.name == 'ext_description'
30
- converted_definition = <<~TEXT
31
- #{converted_definition.split("\n")[0..3].join("\n")}
82
+ def definition_xml_converted_definition(designation, definition)
83
+ if designation[:alt].length.positive?
84
+ alt_notation = "alt:[#{designation[:alt].map(&:strip).join(',')}]"
85
+ end
86
+ result = <<~TEXT
87
+ === #{designation[:accepted]}
88
+ TEXT
89
+ if alt_notation
90
+ result += <<~TEXT
32
91
 
33
- NOTE: This term is incompletely defined in this document.
34
- Reference <<#{reference_anchor}>> for the complete definition.
92
+ #{alt_notation}
93
+ TEXT
94
+ end
95
+ <<~TEXT
96
+ #{result}
97
+ #{definition}
35
98
  TEXT
36
99
  end
37
- new(
38
- converted_definition: converted_definition,
39
- reference_anchor: reference_anchor,
40
- reference_clause: reference_clause,
41
- file_path: file_path
42
- )
43
100
  end
44
101
 
45
102
  def to_mn_adoc
46
103
  <<~TEXT
47
- // STEPmod path: #{file_path}
104
+ // STEPmod path:#{!file_path.empty? ? " #{file_path}" : ''}
48
105
  #{converted_definition}
49
106
 
50
107
  [.source]
51
- <<#{reference_anchor}#{reference_clause ? ",clause=" + reference_clause : ""}>>
108
+ <<#{reference_anchor}#{reference_clause ? ",clause=#{reference_clause}" : ''}>>
52
109
 
53
110
  TEXT
54
111
  end
55
-
56
112
  end
57
113
  end
58
114
  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,24 +11,30 @@ module Stepmod
12
11
 
13
12
  def treat_children(node, state)
14
13
  converted = node.children.each_with_object({}) do |child, res|
15
- content = treat(child, state).strip
16
- next if content.empty?
14
+ content = treat(child, state)
15
+ next if content.strip.empty?
17
16
 
18
- res[child] = content
19
- end
17
+ res[child] = content
18
+ end
20
19
  previous = nil
21
- result = ''
22
- converted.each.with_index do |(child, content), i|
23
- if block_tag?(child, previous)
24
- result += "\n\n"
25
- elsif comment_tag?(child, previous)
26
- result += "\n"
27
- else
28
- result += ' '
29
- 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
30
30
  result += content
31
31
  previous = child
32
32
  end
33
+
34
+ # Remove double newlines for every line
35
+ result = result.gsub(/\n\n+/, "\n\n")
36
+ result = result.squeeze(" ")
37
+
33
38
  result.strip
34
39
  end
35
40
 
@@ -39,31 +44,34 @@ module Stepmod
39
44
  end
40
45
 
41
46
  def comment_tag?(child, previous)
42
- child.name == 'comment' || (previous && previous.name === 'comment')
47
+ child.name == "comment" || (previous && previous.name === "comment")
43
48
  end
44
49
 
45
50
  def additional_block(node)
46
51
  # Treat first `p` tag as an `alt` block, metanorma/stepmod-utils#9
47
52
  first_child_tag = node
48
- .children
49
- .find { |n| n.is_a?(Nokogiri::XML::Element) }
53
+ .children
54
+ .find { |n| n.is_a?(Nokogiri::XML::Element) }
50
55
  return unless can_transform_to_alt?(first_child_tag)
51
56
 
52
57
  result = Stepmod::Utils::Converters::Synonym
53
- .new
54
- .convert(first_child_tag)
58
+ .new
59
+ .convert(first_child_tag)
60
+
55
61
  first_child_tag.remove
56
62
  "#{result}\n\n"
57
63
  end
58
64
 
59
65
  # metanorma/stepmod-utils#18 when para is the only text doe snot transform it
60
66
  def can_transform_to_alt?(first_child_tag)
61
- return false unless first_child_tag&.name == 'p' &&
62
- defined?(Stepmod::Utils::Converters::Synonym)
67
+ return false unless first_child_tag&.name == "p" &&
68
+ defined?(Stepmod::Utils::Converters::Synonym)
63
69
 
64
70
  next_sibling = first_child_tag.next
65
71
  while next_sibling
66
- 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
+
67
75
  next_sibling = next_sibling.next
68
76
  end
69
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