stepmod-utils 0.3.5 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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