stepmod-utils 0.3.5 → 0.3.7

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +1 -1
  3. data/.github/workflows/release.yml +4 -3
  4. data/.rubocop.yml +1 -1
  5. data/Gemfile +3 -3
  6. data/Rakefile +1 -1
  7. data/exe/stepmod-annotate-all +17 -11
  8. data/exe/stepmod-build-resource-docs-cache +8 -7
  9. data/exe/stepmod-convert-express-description +6 -4
  10. data/exe/stepmod-convert-express-resource +6 -4
  11. data/exe/stepmod-extract-terms +38 -25
  12. data/exe/stepmod-find-express-files +8 -7
  13. data/lib/stepmod/utils/bibdata.rb +31 -35
  14. data/lib/stepmod/utils/cleaner.rb +3 -3
  15. data/lib/stepmod/utils/concept.rb +30 -35
  16. data/lib/stepmod/utils/converters/a.rb +7 -10
  17. data/lib/stepmod/utils/converters/blockquote.rb +4 -4
  18. data/lib/stepmod/utils/converters/br.rb +1 -1
  19. data/lib/stepmod/utils/converters/bypass.rb +33 -33
  20. data/lib/stepmod/utils/converters/clause_ref.rb +3 -3
  21. data/lib/stepmod/utils/converters/code.rb +1 -1
  22. data/lib/stepmod/utils/converters/comment.rb +5 -3
  23. data/lib/stepmod/utils/converters/dd.rb +2 -2
  24. data/lib/stepmod/utils/converters/def.rb +19 -19
  25. data/lib/stepmod/utils/converters/drop.rb +2 -2
  26. data/lib/stepmod/utils/converters/dt.rb +2 -2
  27. data/lib/stepmod/utils/converters/em.rb +1 -1
  28. data/lib/stepmod/utils/converters/em_express_description.rb +1 -1
  29. data/lib/stepmod/utils/converters/eqn.rb +28 -26
  30. data/lib/stepmod/utils/converters/example.rb +5 -6
  31. data/lib/stepmod/utils/converters/express_g.rb +10 -9
  32. data/lib/stepmod/utils/converters/express_ref.rb +2 -2
  33. data/lib/stepmod/utils/converters/express_ref_express_description.rb +3 -2
  34. data/lib/stepmod/utils/converters/ext_description.rb +1 -1
  35. data/lib/stepmod/utils/converters/figure.rb +3 -3
  36. data/lib/stepmod/utils/converters/fund_cons.rb +1 -1
  37. data/lib/stepmod/utils/converters/head.rb +3 -2
  38. data/lib/stepmod/utils/converters/hr.rb +2 -2
  39. data/lib/stepmod/utils/converters/ignore.rb +3 -3
  40. data/lib/stepmod/utils/converters/introduction.rb +1 -1
  41. data/lib/stepmod/utils/converters/module_ref.rb +6 -6
  42. data/lib/stepmod/utils/converters/note.rb +5 -6
  43. data/lib/stepmod/utils/converters/ol.rb +5 -5
  44. data/lib/stepmod/utils/converters/p.rb +2 -2
  45. data/lib/stepmod/utils/converters/pass_through.rb +2 -2
  46. data/lib/stepmod/utils/converters/q.rb +1 -1
  47. data/lib/stepmod/utils/converters/schema.rb +1 -1
  48. data/lib/stepmod/utils/converters/stem.rb +1 -1
  49. data/lib/stepmod/utils/converters/stepmod_ext_description.rb +5 -4
  50. data/lib/stepmod/utils/converters/strong.rb +5 -4
  51. data/lib/stepmod/utils/converters/sub.rb +2 -2
  52. data/lib/stepmod/utils/converters/sup.rb +2 -2
  53. data/lib/stepmod/utils/converters/synonym.rb +2 -2
  54. data/lib/stepmod/utils/converters/table.rb +7 -9
  55. data/lib/stepmod/utils/converters/term.rb +18 -9
  56. data/lib/stepmod/utils/converters/text.rb +11 -13
  57. data/lib/stepmod/utils/converters/uof.rb +3 -4
  58. data/lib/stepmod/utils/html_to_asciimath.rb +91 -90
  59. data/lib/stepmod/utils/smrl_description_converter.rb +34 -33
  60. data/lib/stepmod/utils/smrl_resource_converter.rb +50 -49
  61. data/lib/stepmod/utils/stepmod_definition_converter.rb +39 -38
  62. data/lib/stepmod/utils/stepmod_file_annotator.rb +26 -19
  63. data/lib/stepmod/utils/terms_extractor.rb +138 -86
  64. data/lib/stepmod/utils/version.rb +1 -1
  65. data/stepmod-utils.gemspec +11 -5
  66. metadata +71 -15
@@ -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
@@ -6,19 +6,20 @@ module Stepmod
6
6
  class ExpressG < ReverseAdoc::Converters::Base
7
7
  def convert(node, state = {})
8
8
  node.children.map do |child|
9
- next unless child.name == 'imgfile'
9
+ next unless child.name == "imgfile"
10
10
 
11
- parse_to_svg_reference(child['file'], state)
11
+ parse_to_svg_reference(child["file"], state)
12
12
  end.join("\n")
13
13
  end
14
14
 
15
15
  private
16
16
 
17
17
  def parse_to_svg_reference(file, state)
18
- return '' unless File.file?(file)
18
+ return "" unless File.file?(file)
19
19
 
20
20
  image_document = Nokogiri::XML(File.read(file))
21
- svg_path = File.basename(image_document.xpath('//img').first['src'], '.*')
21
+ svg_path = File.basename(image_document.xpath("//img").first["src"],
22
+ ".*")
22
23
  <<~SVGMAP
23
24
 
24
25
  *)
@@ -27,23 +28,23 @@ module Stepmod
27
28
  ====
28
29
  image::#{svg_path}.svg[]
29
30
 
30
- #{image_document.xpath('//img.area').map.with_index(1) {|n, i| schema_reference(n['href'], i) }.join("\n")}
31
+ #{image_document.xpath('//img.area').map.with_index(1) { |n, i| schema_reference(n['href'], i) }.join("\n")}
31
32
  ====
32
33
  SVGMAP
33
34
  end
34
35
 
35
36
  def schema_reference(xml_path, index)
36
- if xml_path =~ /#/
37
- _,express_path_part = xml_path.split('#')
37
+ if /#/.match?(xml_path)
38
+ _, express_path_part = xml_path.split("#")
38
39
  "* <<express:#{express_path_part.strip}>>; #{index}"
39
40
  else
40
- schema_name = File.basename(xml_path, '.*')
41
+ schema_name = File.basename(xml_path, ".*")
41
42
  "* <<express:#{schema_name.strip}>>; #{index}"
42
43
  end
43
44
  end
44
45
  end
45
46
 
46
- ReverseAdoc::Converters.register 'express-g', ExpressG.new
47
+ ReverseAdoc::Converters.register "express-g", ExpressG.new
47
48
  end
48
49
  end
49
50
  end
@@ -5,10 +5,10 @@ module Stepmod
5
5
  module Converters
6
6
  class ExpressRef < ReverseAdoc::Converters::Base
7
7
  def convert(node, _state = {})
8
- "*#{node['linkend'].to_s.split('.').last}*"
8
+ " *#{node['linkend'].to_s.split('.').last}*"
9
9
  end
10
10
  end
11
11
  ReverseAdoc::Converters.register :express_ref, ExpressRef.new
12
12
  end
13
13
  end
14
- end
14
+ end
@@ -3,11 +3,12 @@ module Stepmod
3
3
  module Converters
4
4
  class ExpressRefExpressDescription < ReverseAdoc::Converters::Base
5
5
  def convert(node, _state = {})
6
- parts = node['linkend'].to_s.split(':').last.split('.')
6
+ parts = node["linkend"].to_s.split(":").last.split(".")
7
7
  "<<express:#{parts.join('.').strip},#{parts.last.strip}>>"
8
8
  end
9
9
  end
10
- ReverseAdoc::Converters.register :express_ref, ExpressRefExpressDescription.new
10
+ ReverseAdoc::Converters.register :express_ref,
11
+ ExpressRefExpressDescription.new
11
12
  end
12
13
  end
13
14
  end
@@ -3,7 +3,7 @@ module Stepmod
3
3
  module Converters
4
4
  class ExtDescription < ReverseAdoc::Converters::Base
5
5
  def convert(node, state = {})
6
- state = state.merge(schema_name: node['linkend'])
6
+ state = state.merge(schema_name: node["linkend"])
7
7
  child_text = treat_children(node, state).strip
8
8
 
9
9
  <<~TEMPLATE
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'reverse_adoc/converters/figure'
2
+
3
+ require "reverse_adoc/converters/figure"
3
4
 
4
5
  module Stepmod
5
6
  module Utils
@@ -7,7 +8,7 @@ module Stepmod
7
8
  class Figure < ReverseAdoc::Converters::Figure
8
9
  def convert(node, state = {})
9
10
  # If we want to skip this node
10
- return '' if state[:no_notes_examples]
11
+ return "" if state[:no_notes_examples]
11
12
 
12
13
  super
13
14
  end
@@ -17,4 +18,3 @@ module Stepmod
17
18
  end
18
19
  end
19
20
  end
20
-
@@ -18,4 +18,4 @@ module Stepmod
18
18
  ReverseAdoc::Converters.register :fund_cons, FundCons.new
19
19
  end
20
20
  end
21
- end
21
+ end
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Head < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(node, _state = {})
8
8
  title = extract_title(node)
9
9
  "= #{title}\n:stem:\n\n"
10
10
  end
@@ -12,6 +12,7 @@ module Stepmod
12
12
  def extract_title(node)
13
13
  title = node.at("./title")
14
14
  return "(???)" if title.nil?
15
+
15
16
  title.text
16
17
  end
17
18
  end
@@ -19,4 +20,4 @@ module Stepmod
19
20
  ReverseAdoc::Converters.register :head, Head.new
20
21
  end
21
22
  end
22
- end
23
+ end
@@ -4,7 +4,7 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Hr < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
7
+ def convert(_node, _state = {})
8
8
  "\n* * *\n"
9
9
  end
10
10
  end
@@ -12,4 +12,4 @@ module Stepmod
12
12
  ReverseAdoc::Converters.register :hr, Hr.new
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -4,8 +4,8 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Ignore < ReverseAdoc::Converters::Base
7
- def convert(node, state = {})
8
- '' # noop
7
+ def convert(_node, _state = {})
8
+ "" # noop
9
9
  end
10
10
  end
11
11
 
@@ -13,4 +13,4 @@ module Stepmod
13
13
  ReverseAdoc::Converters.register :col, Ignore.new
14
14
  end
15
15
  end
16
- end
16
+ end
@@ -12,4 +12,4 @@ module Stepmod
12
12
  ReverseAdoc::Converters.register :introduction, Introduction.new
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -5,20 +5,20 @@ module Stepmod
5
5
  module Converters
6
6
  class ModuleRef < ReverseAdoc::Converters::Base
7
7
  def convert(node, _state = {})
8
- ref = node['linkend']
8
+ ref = node["linkend"]
9
9
  # #23:
10
10
  # In this case when we see this:
11
11
 
12
12
  # <module_ref linkend="product_as_individual:3_definition">individual products</module_ref>
13
13
  # We take the text value of the element and convert to this:
14
14
 
15
- # term:[individual products]
15
+ # {{individual products}}
16
16
 
17
17
  ref = node.text.strip
18
18
  if !ref.empty?
19
- " term:[#{normalized_ref(ref)}] "
19
+ " {{#{normalized_ref(ref)}}} "
20
20
  elsif
21
- ref = node['linkend'].split(':').first
21
+ ref = node["linkend"].split(":").first
22
22
  " *#{ref}*"
23
23
  end
24
24
  end
@@ -28,10 +28,10 @@ module Stepmod
28
28
  def normalized_ref(ref)
29
29
  return unless ref || ref.empty?
30
30
 
31
- ref.squeeze(' ').strip
31
+ ref.squeeze(" ").strip
32
32
  end
33
33
  end
34
34
  ReverseAdoc::Converters.register :module_ref, ModuleRef.new
35
35
  end
36
36
  end
37
- end
37
+ end
@@ -5,16 +5,15 @@ module Stepmod
5
5
  module Converters
6
6
  class Note < 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
- [NOTE]
15
- --
16
- #{treat_children(node, state).strip}
17
- --
13
+ [NOTE]
14
+ --
15
+ #{treat_children(node, state).strip}
16
+ --
18
17
 
19
18
  TEMPLATE
20
19
  end
@@ -5,14 +5,16 @@ module Stepmod
5
5
  module Converters
6
6
  class Ol < ReverseAdoc::Converters::Base
7
7
  def convert(node, state = {})
8
- id = node['id']
8
+ id = node["id"]
9
9
  anchor = id ? "[[#{id}]]\n" : ""
10
10
  ol_count = state.fetch(:ol_count, 0) + 1
11
11
  attrs = ol_attrs(node)
12
- res = "\n\n#{anchor}#{attrs}#{treat_children(node, state.merge(ol_count: ol_count, tdsinglepara: true))}\n"
12
+ "\n\n#{anchor}#{attrs}#{treat_children(node,
13
+ state.merge(
14
+ ol_count: ol_count, tdsinglepara: true,
15
+ ))}\n"
13
16
  # Why do we add this?
14
17
  # res = "\n" + res if node.parent && node.parent.name == 'note'
15
- res
16
18
  end
17
19
 
18
20
  def number_style(node)
@@ -22,8 +24,6 @@ module Stepmod
22
24
  when "a" then "loweralpha"
23
25
  when "I" then "upperroman"
24
26
  when "i" then "lowerroman"
25
- else
26
- nil
27
27
  end
28
28
  end
29
29
 
@@ -5,7 +5,7 @@ module Stepmod
5
5
  module Converters
6
6
  class P < ReverseAdoc::Converters::Base
7
7
  def convert(node, state = {})
8
- id = node['id']
8
+ id = node["id"]
9
9
  anchor = id ? "[[#{id}]]\n" : ""
10
10
  if state[:tdsinglepara]
11
11
  "#{anchor}#{treat_children(node, state).strip}"
@@ -18,4 +18,4 @@ module Stepmod
18
18
  ReverseAdoc::Converters.register :p, P.new
19
19
  end
20
20
  end
21
- end
21
+ end