stepmod-utils 0.4.13 → 0.5.0

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +4 -3
  3. data/exe/stepmod-annotate-all +5 -4
  4. data/exe/stepmod-convert-express-description +4 -6
  5. data/exe/stepmod-convert-express-resource +4 -6
  6. data/exe/stepmod-extract-concepts +5 -4
  7. data/exe/stepmod-srl-migrate +53 -21
  8. data/exe/stepmod-validate-express +13 -15
  9. data/lib/stepmod/utils/change.rb +47 -4
  10. data/lib/stepmod/utils/change_collection.rb +1 -1
  11. data/lib/stepmod/utils/change_edition.rb +6 -6
  12. data/lib/stepmod/utils/changes_extractor.rb +46 -10
  13. data/lib/stepmod/utils/concept.rb +12 -10
  14. data/lib/stepmod/utils/converters/blockquote.rb +0 -2
  15. data/lib/stepmod/utils/converters/def.rb +4 -4
  16. data/lib/stepmod/utils/converters/dt.rb +1 -1
  17. data/lib/stepmod/utils/converters/em_express_description.rb +8 -7
  18. data/lib/stepmod/utils/converters/eqn.rb +8 -6
  19. data/lib/stepmod/utils/converters/express_figure.rb +1 -1
  20. data/lib/stepmod/utils/converters/express_g.rb +1 -1
  21. data/lib/stepmod/utils/converters/express_table.rb +1 -1
  22. data/lib/stepmod/utils/converters/ext_description.rb +2 -1
  23. data/lib/stepmod/utils/converters/figure.rb +5 -5
  24. data/lib/stepmod/utils/converters/module_ref.rb +3 -5
  25. data/lib/stepmod/utils/converters/module_ref_express_description.rb +3 -7
  26. data/lib/stepmod/utils/converters/ol.rb +7 -7
  27. data/lib/stepmod/utils/converters/stepmod_ext_description.rb +3 -3
  28. data/lib/stepmod/utils/converters/strong.rb +12 -11
  29. data/lib/stepmod/utils/converters/term.rb +0 -1
  30. data/lib/stepmod/utils/express_bibdata.rb +6 -2
  31. data/lib/stepmod/utils/html_to_asciimath.rb +80 -80
  32. data/lib/stepmod/utils/parsers/mapping_table_parser.rb +31 -0
  33. data/lib/stepmod/utils/parsers/models/a.rb +40 -0
  34. data/lib/stepmod/utils/parsers/models/aa.rb +53 -0
  35. data/lib/stepmod/utils/parsers/models/ae.rb +54 -0
  36. data/lib/stepmod/utils/parsers/models/aimelt.rb +21 -0
  37. data/lib/stepmod/utils/parsers/models/alt.rb +19 -0
  38. data/lib/stepmod/utils/parsers/models/alt_map.rb +46 -0
  39. data/lib/stepmod/utils/parsers/models/alt_scmap.rb +34 -0
  40. data/lib/stepmod/utils/parsers/models/b.rb +58 -0
  41. data/lib/stepmod/utils/parsers/models/bigeqn.rb +55 -0
  42. data/lib/stepmod/utils/parsers/models/bold.rb +52 -0
  43. data/lib/stepmod/utils/parsers/models/bom_ref.rb +21 -0
  44. data/lib/stepmod/utils/parsers/models/constraint.rb +19 -0
  45. data/lib/stepmod/utils/parsers/models/dd.rb +86 -0
  46. data/lib/stepmod/utils/parsers/models/description.rb +86 -0
  47. data/lib/stepmod/utils/parsers/models/dl.rb +24 -0
  48. data/lib/stepmod/utils/parsers/models/dt.rb +86 -0
  49. data/lib/stepmod/utils/parsers/models/eqn.rb +57 -0
  50. data/lib/stepmod/utils/parsers/models/example.rb +84 -0
  51. data/lib/stepmod/utils/parsers/models/express_extref.rb +21 -0
  52. data/lib/stepmod/utils/parsers/models/express_ref.rb +21 -0
  53. data/lib/stepmod/utils/parsers/models/figure.rb +30 -0
  54. data/lib/stepmod/utils/parsers/models/i.rb +52 -0
  55. data/lib/stepmod/utils/parsers/models/img.rb +25 -0
  56. data/lib/stepmod/utils/parsers/models/imgarea.rb +23 -0
  57. data/lib/stepmod/utils/parsers/models/li.rb +86 -0
  58. data/lib/stepmod/utils/parsers/models/mapping_table.rb +26 -0
  59. data/lib/stepmod/utils/parsers/models/module_ref.rb +21 -0
  60. data/lib/stepmod/utils/parsers/models/note.rb +84 -0
  61. data/lib/stepmod/utils/parsers/models/ol.rb +25 -0
  62. data/lib/stepmod/utils/parsers/models/p.rb +56 -0
  63. data/lib/stepmod/utils/parsers/models/refpath.rb +23 -0
  64. data/lib/stepmod/utils/parsers/models/refpath_extend.rb +23 -0
  65. data/lib/stepmod/utils/parsers/models/rules.rb +19 -0
  66. data/lib/stepmod/utils/parsers/models/sc.rb +36 -0
  67. data/lib/stepmod/utils/parsers/models/screen.rb +55 -0
  68. data/lib/stepmod/utils/parsers/models/source.rb +21 -0
  69. data/lib/stepmod/utils/parsers/models/sub.rb +52 -0
  70. data/lib/stepmod/utils/parsers/models/sup.rb +52 -0
  71. data/lib/stepmod/utils/parsers/models/table.rb +29 -0
  72. data/lib/stepmod/utils/parsers/models/td.rb +98 -0
  73. data/lib/stepmod/utils/parsers/models/th.rb +98 -0
  74. data/lib/stepmod/utils/parsers/models/title.rb +53 -0
  75. data/lib/stepmod/utils/parsers/models/tr.rb +26 -0
  76. data/lib/stepmod/utils/parsers/models/tt.rb +68 -0
  77. data/lib/stepmod/utils/parsers/models/ul.rb +21 -0
  78. data/lib/stepmod/utils/parsers/models.rb +0 -0
  79. data/lib/stepmod/utils/parsers/types/string_without_indent.rb +17 -0
  80. data/lib/stepmod/utils/parsers.rb +4 -0
  81. data/lib/stepmod/utils/smrl_description_converter.rb +2 -1
  82. data/lib/stepmod/utils/smrl_resource_converter.rb +2 -1
  83. data/lib/stepmod/utils/stepmod_file_annotator.rb +14 -7
  84. data/lib/stepmod/utils/term.rb +1 -1
  85. data/lib/stepmod/utils/terms_extractor.rb +33 -31
  86. data/lib/stepmod/utils/version.rb +1 -1
  87. data/stepmod-utils.gemspec +4 -3
  88. metadata +76 -13
@@ -6,12 +6,10 @@ module Stepmod
6
6
  class Blockquote < Stepmod::Utils::Converters::Base
7
7
  def convert(node, state = {})
8
8
  id = node["id"]
9
- anchor = id ? "[[#{id}]]\n" : ""
10
9
  cite = node["cite"]
11
10
  attrs = cite ? "[quote, #{cite}]\n" : ""
12
11
  content = treat_children(node, state).strip
13
12
  content = ReverseAdoc.cleaner.remove_newlines(content)
14
- # "\n\n> " << content.lines.to_a.join('> ') << "\n\n"
15
13
  "\n\n#{attrs}____\n" << content.lines.to_a.join("") << "\n____\n\n"
16
14
  end
17
15
  end
@@ -50,13 +50,13 @@ module Stepmod
50
50
  def additional_block(node)
51
51
  # Treat first `p` tag as an `alt` block, metanorma/stepmod-utils#9
52
52
  first_child_tag = node
53
- .children
54
- .find { |n| n.is_a?(Nokogiri::XML::Element) }
53
+ .children
54
+ .find { |n| n.is_a?(Nokogiri::XML::Element) }
55
55
  return unless can_transform_to_alt?(first_child_tag)
56
56
 
57
57
  result = Stepmod::Utils::Converters::Synonym
58
- .new
59
- .convert(first_child_tag)
58
+ .new
59
+ .convert(first_child_tag)
60
60
 
61
61
  first_child_tag.remove
62
62
  "#{result}\n\n"
@@ -5,7 +5,7 @@ module Stepmod
5
5
  module Converters
6
6
  class Dt < Stepmod::Utils::Converters::Base
7
7
  def convert(node, _state = {})
8
- return "\n\n{blank}::" if node.text.strip.length.zero?
8
+ return "\n\n{blank}::" if node.text.strip.empty?
9
9
 
10
10
  "\n\n#{node.text}:: "
11
11
  end
@@ -13,18 +13,19 @@ module Stepmod
13
13
  def italic_converted(node, state)
14
14
  cloned_node = node.clone
15
15
  equations = extract_equations(cloned_node)
16
- content = treat_children(cloned_node, state.merge(already_italic: true))
16
+ content = treat_children(cloned_node,
17
+ state.merge(already_italic: true))
17
18
  equation_content = equations.map do |equation|
18
19
  treat(equation, state.merge(equation: true, already_italic: true))
19
20
  end
20
21
 
21
22
  content = if state[:equation] && state[:convert_bold_and_italics]
22
- "ii(#{content.strip})"
23
- elsif content.strip.empty? || state[:already_italic] || state[:equation]
24
- content
25
- else
26
- "#{content[/^\s*/]}_#{content.strip}_#{content[/\s*$/]}"
27
- end
23
+ "ii(#{content.strip})"
24
+ elsif content.strip.empty? || state[:already_italic] || state[:equation]
25
+ content
26
+ else
27
+ "#{content[/^\s*/]}_#{content.strip}_#{content[/\s*$/]}"
28
+ end
28
29
 
29
30
  [content, equation_content].compact.join("")
30
31
  end
@@ -26,8 +26,8 @@ module Stepmod
26
26
 
27
27
  def definition_node?(node)
28
28
  first_strong_node = node
29
- .children
30
- .find do |n|
29
+ .children
30
+ .find do |n|
31
31
  return false if !n.text? && n.name != "b"
32
32
 
33
33
  n.name == "b"
@@ -39,8 +39,8 @@ module Stepmod
39
39
 
40
40
  def definition_converted(cloned_node, state)
41
41
  first_strong_node = cloned_node
42
- .children
43
- .find do |n|
42
+ .children
43
+ .find do |n|
44
44
  return false if !n.text? && n.name != "b"
45
45
 
46
46
  n.name == "b"
@@ -56,7 +56,8 @@ module Stepmod
56
56
 
57
57
  def stem_converted(cloned_node, state)
58
58
  remove_tags_not_in_context(cloned_node) unless state[:convert_bold_and_italics]
59
- internal_content = treat_children(cloned_node, state.merge(equation: true))
59
+ internal_content = treat_children(cloned_node,
60
+ state.merge(equation: true))
60
61
  content = Stepmod::Utils::HtmlToAsciimath.new.call(internal_content)
61
62
  res = <<~TEMPLATE
62
63
  #{source_type_comment(cloned_node)}
@@ -107,7 +108,8 @@ module Stepmod
107
108
  end
108
109
 
109
110
  def log_equation(node, state, equation_converted)
110
- equation_converted_with_bold_and_italics = stem_converted(node.clone, state.merge(convert_bold_and_italics: true))
111
+ equation_converted_with_bold_and_italics = stem_converted(node.clone,
112
+ state.merge(convert_bold_and_italics: true))
111
113
 
112
114
  return if equation_converted_with_bold_and_italics == equation_converted
113
115
 
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative "./figure"
3
4
 
4
5
  module Stepmod
5
6
  module Utils
6
7
  module Converters
7
8
  class ExpressFigure < Stepmod::Utils::Converters::Figure
8
-
9
9
  # def self.pattern(state, id)
10
10
  # "figure-exp-#{id}"
11
11
  # end
@@ -19,7 +19,7 @@ module Stepmod
19
19
 
20
20
  image_document = Nokogiri::XML(File.read(file))
21
21
  svg_filename = File.basename(image_document.xpath("//img").first["src"],
22
- ".*")
22
+ ".*")
23
23
  <<~SVGMAP
24
24
 
25
25
  *)
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require_relative "./table"
3
4
 
4
5
  module Stepmod
5
6
  module Utils
6
7
  module Converters
7
8
  class ExpressTable < Stepmod::Utils::Converters::Table
8
-
9
9
  # def self.pattern(id)
10
10
  # "table-exp-#{id}"
11
11
  # end
@@ -3,7 +3,8 @@ module Stepmod
3
3
  module Converters
4
4
  class ExtDescription < Stepmod::Utils::Converters::Base
5
5
  def convert(node, state = {})
6
- state = state.merge(schema_name: node["linkend"], non_flanking_whitesapce: true)
6
+ state = state.merge(schema_name: node["linkend"],
7
+ non_flanking_whitesapce: true)
7
8
  child_text = treat_children(node, state).strip
8
9
 
9
10
  <<~TEMPLATE
@@ -20,11 +20,11 @@ module Stepmod
20
20
  return "" if state[:no_notes_examples]
21
21
 
22
22
  # Set ID to "figure-id" in case of conflicts
23
- node['id'] = if node['id']
24
- self.class.pattern(state, node['id'])
25
- else
26
- self.class.pattern(state, node['number'])
27
- end
23
+ node["id"] = if node["id"]
24
+ self.class.pattern(state, node["id"])
25
+ else
26
+ self.class.pattern(state, node["number"])
27
+ end
28
28
 
29
29
  super(node, state)
30
30
  end
@@ -7,7 +7,6 @@ module Stepmod
7
7
  def convert(node, _state = {})
8
8
  link_end = node["linkend"].to_s.split(":")
9
9
  ref_id = link_end.last
10
- parts = link_end.last.split(".")
11
10
  text = node.text.gsub(/\s/, " ").squeeze(" ").strip
12
11
  schema = link_end.first
13
12
 
@@ -16,7 +15,7 @@ module Stepmod
16
15
  _state[:schema_and_entity] = schema
17
16
  end
18
17
 
19
- result = case link_end[1]
18
+ case link_end[1]
20
19
  when "1_scope", "introduction"
21
20
  # When we see this:
22
21
  # <module_ref linkend="functional_usage_view:1_scope">Functional usage view</module_ref>
@@ -66,12 +65,11 @@ module Stepmod
66
65
  create_ref(Table.pattern(_state, ref_id), text)
67
66
  end
68
67
  else
69
- puts "[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(":")}"
70
- raise StandardError.new("[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(":")}")
68
+ puts "[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(':')}"
69
+ raise StandardError.new("[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(':')}")
71
70
  end
72
71
 
73
72
  # puts "[module_ref] #{result}"
74
- result
75
73
  end
76
74
 
77
75
  private
@@ -1,4 +1,3 @@
1
-
2
1
  require "stepmod/utils/converters/figure"
3
2
  require "stepmod/utils/converters/table"
4
3
 
@@ -8,13 +7,11 @@ module Stepmod
8
7
  class ModuleRefExpressDescription < Stepmod::Utils::Converters::Base
9
8
  def convert(node, _state = {})
10
9
  link_end = node["linkend"].to_s.split(":")
11
- ref_id = link_end.last
12
- parts = link_end.last.split(".")
13
10
  text = node.text.gsub(/\s/, " ").squeeze(" ").strip
14
11
 
15
12
  # puts "linkend #{node["linkend"]}"
16
13
 
17
- result = case link_end[1]
14
+ case link_end[1]
18
15
  when "1_scope", "introduction"
19
16
  # When we see this:
20
17
  # <module_ref linkend="functional_usage_view:1_scope">Functional usage view</module_ref>
@@ -41,12 +38,11 @@ module Stepmod
41
38
  # ISO 10303-2 does not contain figures and tables, ignore
42
39
  ""
43
40
  else
44
- puts "[module_ref_express_description]: encountered unknown <module_ref> tag, #{link_end.join(":")}"
45
- raise StandardError.new("[module_ref_express_description]: encountered unknown <module_ref> tag, #{link_end.join(":")}")
41
+ puts "[module_ref_express_description]: encountered unknown <module_ref> tag, #{link_end.join(':')}"
42
+ raise StandardError.new("[module_ref_express_description]: encountered unknown <module_ref> tag, #{link_end.join(':')}")
46
43
  end
47
44
 
48
45
  # puts "[module_ref] #{result}"
49
- result
50
46
  end
51
47
  end
52
48
  ReverseAdoc::Converters.register :module_ref,
@@ -20,13 +20,13 @@ module Stepmod
20
20
  end
21
21
 
22
22
  def number_style(node)
23
- style = case node["style"]
24
- when "1" then "arabic"
25
- when "A" then "upperalpha"
26
- when "a" then "loweralpha"
27
- when "I" then "upperroman"
28
- when "i" then "lowerroman"
29
- end
23
+ case node["style"]
24
+ when "1" then "arabic"
25
+ when "A" then "upperalpha"
26
+ when "a" then "loweralpha"
27
+ when "I" then "upperroman"
28
+ when "i" then "lowerroman"
29
+ end
30
30
  end
31
31
 
32
32
  def ol_attrs(node)
@@ -22,8 +22,8 @@ module Stepmod
22
22
  first_child =~ /include:?\s*\Z/ ||
23
23
  first_child =~ /of:?\s*\Z/ ||
24
24
  first_child =~ /[:;]\s*\Z/
25
- ) &&
26
- child_text =~ /\n\n\*/
25
+ ) &&
26
+ child_text =~ /\n\n\*/
27
27
 
28
28
  # Only taking the first paragraph of the definition
29
29
  child_text = first_child
@@ -32,7 +32,7 @@ module Stepmod
32
32
  # TEMP: Remove any whitespace (" ", not newlines) after an immediate
33
33
  # newline due to:
34
34
  # https://github.com/metanorma/iso-10303-2/issues/71
35
- if child_text =~ /\n\ +/
35
+ if /\n\ +/.match?(child_text)
36
36
  child_text = child_text.gsub(/\n\ +/, "\n")
37
37
  end
38
38
 
@@ -15,22 +15,23 @@ module Stepmod
15
15
  def bold_converted(node, state)
16
16
  cloned_node = node.clone
17
17
  equations = extract_equations(cloned_node)
18
- content = treat_children(cloned_node, state.merge(already_strong: true))
18
+ content = treat_children(cloned_node,
19
+ state.merge(already_strong: true))
19
20
  equation_content = equations.map do |equation|
20
21
  treat(equation, state.merge(equation: true, already_strong: true))
21
22
  end
22
23
 
23
24
  content = if state[:equation] && state[:convert_bold_and_italics]
24
- "bb(#{content.strip})"
25
- elsif content.strip.empty? || state[:already_strong] || state[:equation]
26
- content
27
- else
28
- strong_tag = state[:non_flanking_whitesapce] ? '**' : '*'
29
- handle_express_escape_seq(
30
- node,
31
- "#{content[/^\s*/]}#{strong_tag}#{content.strip}#{strong_tag}#{content[/\s*$/]}"
32
- )
33
- end
25
+ "bb(#{content.strip})"
26
+ elsif content.strip.empty? || state[:already_strong] || state[:equation]
27
+ content
28
+ else
29
+ strong_tag = state[:non_flanking_whitesapce] ? "**" : "*"
30
+ handle_express_escape_seq(
31
+ node,
32
+ "#{content[/^\s*/]}#{strong_tag}#{content.strip}#{strong_tag}#{content[/\s*$/]}",
33
+ )
34
+ end
34
35
 
35
36
  [content, equation_content].compact.join("")
36
37
  end
@@ -8,7 +8,6 @@ module Stepmod
8
8
  module Utils
9
9
  module Converters
10
10
  class Term < Stepmod::Utils::Converters::Base
11
-
12
11
  # We strip all the children in the case for "stem:[d]-manifold"
13
12
  # vs "stem:[d] -manifold"
14
13
  def treat_children(node, state)
@@ -26,8 +26,12 @@ module Stepmod
26
26
  @pub_year = pubid.year&.to_i
27
27
  elsif !schema.version.nil?
28
28
  @part = schema.version.items.find { |i| i.name == "part" }.value&.to_i
29
- @version = schema.version.items.find { |i| i.name == "part" }.value&.to_i
30
- @pub_year = schema.version.items.find { |i| i.name == "part" }.value&.to_i
29
+ @version = schema.version.items.find do |i|
30
+ i.name == "part"
31
+ end.value&.to_i
32
+ @pub_year = schema.version.items.find do |i|
33
+ i.name == "part"
34
+ end.value&.to_i
31
35
  else
32
36
  raise "PublishedInfoNotFound"
33
37
  end
@@ -68,90 +68,90 @@ module Stepmod
68
68
 
69
69
  def html_entities_to_asciimath(x)
70
70
  x.gsub("&alpha;", "alpha")
71
- .gsub("&beta;", "beta")
72
- .gsub("&gamma;", "gamma")
73
- .gsub("&Gamma;", "Gamma")
74
- .gsub("&delta;", "delta")
75
- .gsub("&Delta;", "Delta")
76
- .gsub("&epsilon;", "epsilon")
77
- .gsub("&varepsilon;", "varepsilon")
78
- .gsub("&zeta;", "zeta")
79
- .gsub("&eta;", "eta")
80
- .gsub("&theta;", "theta")
81
- .gsub("&Theta;", "Theta")
82
- .gsub("&vartheta;", "vartheta")
83
- .gsub("&iota;", "iota")
84
- .gsub("&kappa;", "kappa")
85
- .gsub("&lambda;", "lambda")
86
- .gsub("&Lambda;", "Lambda")
87
- .gsub("&mu;", "mu")
88
- .gsub("&nu;", "nu")
89
- .gsub("&xi;", "xi")
90
- .gsub("&Xi;", "Xi")
91
- .gsub("&pi;", "pi")
92
- .gsub("&Pi;", "Pi")
93
- .gsub("&rho;", "rho")
94
- .gsub("&beta;", "beta")
95
- .gsub("&sigma;", "sigma")
96
- .gsub("&Sigma;", "Sigma")
97
- .gsub("&tau;", "tau")
98
- .gsub("&upsilon;", "upsilon")
99
- .gsub("&phi;", "phi")
100
- .gsub("&Phi;", "Phi")
101
- .gsub("&varphi;", "varphi")
102
- .gsub("&chi;", "chi")
103
- .gsub("&psi;", "psi")
104
- .gsub("&Psi;", "Psi")
105
- .gsub("&omega;", "omega")
106
- .gsub("&#967", "χ")
107
- .gsub("&#215", "×")
108
- .gsub("&#931", "Σ")
109
- .gsub("&#961", "ρ")
110
- .gsub("&#963", "σ")
111
- .gsub("&#955", "λ")
112
- .gsub("&#964", "τ")
113
- .gsub("&#8706", "∂")
114
- .gsub("&#8804", "≤")
115
- .gsub("&#8805", "≥")
71
+ .gsub("&beta;", "beta")
72
+ .gsub("&gamma;", "gamma")
73
+ .gsub("&Gamma;", "Gamma")
74
+ .gsub("&delta;", "delta")
75
+ .gsub("&Delta;", "Delta")
76
+ .gsub("&epsilon;", "epsilon")
77
+ .gsub("&varepsilon;", "varepsilon")
78
+ .gsub("&zeta;", "zeta")
79
+ .gsub("&eta;", "eta")
80
+ .gsub("&theta;", "theta")
81
+ .gsub("&Theta;", "Theta")
82
+ .gsub("&vartheta;", "vartheta")
83
+ .gsub("&iota;", "iota")
84
+ .gsub("&kappa;", "kappa")
85
+ .gsub("&lambda;", "lambda")
86
+ .gsub("&Lambda;", "Lambda")
87
+ .gsub("&mu;", "mu")
88
+ .gsub("&nu;", "nu")
89
+ .gsub("&xi;", "xi")
90
+ .gsub("&Xi;", "Xi")
91
+ .gsub("&pi;", "pi")
92
+ .gsub("&Pi;", "Pi")
93
+ .gsub("&rho;", "rho")
94
+ .gsub("&beta;", "beta")
95
+ .gsub("&sigma;", "sigma")
96
+ .gsub("&Sigma;", "Sigma")
97
+ .gsub("&tau;", "tau")
98
+ .gsub("&upsilon;", "upsilon")
99
+ .gsub("&phi;", "phi")
100
+ .gsub("&Phi;", "Phi")
101
+ .gsub("&varphi;", "varphi")
102
+ .gsub("&chi;", "chi")
103
+ .gsub("&psi;", "psi")
104
+ .gsub("&Psi;", "Psi")
105
+ .gsub("&omega;", "omega")
106
+ .gsub("&#967", "χ")
107
+ .gsub("&#215", "×")
108
+ .gsub("&#931", "Σ")
109
+ .gsub("&#961", "ρ")
110
+ .gsub("&#963", "σ")
111
+ .gsub("&#955", "λ")
112
+ .gsub("&#964", "τ")
113
+ .gsub("&#8706", "∂")
114
+ .gsub("&#8804", "≤")
115
+ .gsub("&#8805", "≥")
116
116
  end
117
117
 
118
118
  def html_entities_to_stem(x)
119
119
  x.gsub("&alpha;", "stem:[alpha]")
120
- .gsub("&beta;", "stem:[beta]")
121
- .gsub("&gamma;", "stem:[gamma]")
122
- .gsub("&Gamma;", "stem:[Gamma]")
123
- .gsub("&delta;", "stem:[delta]")
124
- .gsub("&Delta;", "stem:[Delta]")
125
- .gsub("&epsilon;", "stem:[epsilon]")
126
- .gsub("&varepsilon;", "stem:[varepsilon]")
127
- .gsub("&zeta;", "stem:[zeta]")
128
- .gsub("&eta;", "stem:[eta]")
129
- .gsub("&theta;", "stem:[theta]")
130
- .gsub("&Theta;", "stem:[Theta]")
131
- .gsub("&vartheta;", "stem:[vartheta]")
132
- .gsub("&iota;", "stem:[iota]")
133
- .gsub("&kappa;", "stem:[kappa]")
134
- .gsub("&lambda;", "stem:[lambda]")
135
- .gsub("&Lambda;", "stem:[Lambda]")
136
- .gsub("&mu;", "stem:[mu]")
137
- .gsub("&nu;", "stem:[nu]")
138
- .gsub("&xi;", "stem:[xi]")
139
- .gsub("&Xi;", "stem:[Xi]")
140
- .gsub("&pi;", "stem:[pi]")
141
- .gsub("&Pi;", "stem:[Pi]")
142
- .gsub("&rho;", "stem:[rho]")
143
- .gsub("&beta;", "stem:[beta]")
144
- .gsub("&sigma;", "stem:[sigma]")
145
- .gsub("&Sigma;", "stem:[Sigma]")
146
- .gsub("&tau;", "stem:[tau]")
147
- .gsub("&upsilon;", "stem:[upsilon]")
148
- .gsub("&phi;", "stem:[phi]")
149
- .gsub("&Phi;", "stem:[Phi]")
150
- .gsub("&varphi;", "stem:[varphi]")
151
- .gsub("&chi;", "stem:[chi]")
152
- .gsub("&psi;", "stem:[psi]")
153
- .gsub("&Psi;", "stem:[Psi]")
154
- .gsub("&omega;", "stem:[omega]")
120
+ .gsub("&beta;", "stem:[beta]")
121
+ .gsub("&gamma;", "stem:[gamma]")
122
+ .gsub("&Gamma;", "stem:[Gamma]")
123
+ .gsub("&delta;", "stem:[delta]")
124
+ .gsub("&Delta;", "stem:[Delta]")
125
+ .gsub("&epsilon;", "stem:[epsilon]")
126
+ .gsub("&varepsilon;", "stem:[varepsilon]")
127
+ .gsub("&zeta;", "stem:[zeta]")
128
+ .gsub("&eta;", "stem:[eta]")
129
+ .gsub("&theta;", "stem:[theta]")
130
+ .gsub("&Theta;", "stem:[Theta]")
131
+ .gsub("&vartheta;", "stem:[vartheta]")
132
+ .gsub("&iota;", "stem:[iota]")
133
+ .gsub("&kappa;", "stem:[kappa]")
134
+ .gsub("&lambda;", "stem:[lambda]")
135
+ .gsub("&Lambda;", "stem:[Lambda]")
136
+ .gsub("&mu;", "stem:[mu]")
137
+ .gsub("&nu;", "stem:[nu]")
138
+ .gsub("&xi;", "stem:[xi]")
139
+ .gsub("&Xi;", "stem:[Xi]")
140
+ .gsub("&pi;", "stem:[pi]")
141
+ .gsub("&Pi;", "stem:[Pi]")
142
+ .gsub("&rho;", "stem:[rho]")
143
+ .gsub("&beta;", "stem:[beta]")
144
+ .gsub("&sigma;", "stem:[sigma]")
145
+ .gsub("&Sigma;", "stem:[Sigma]")
146
+ .gsub("&tau;", "stem:[tau]")
147
+ .gsub("&upsilon;", "stem:[upsilon]")
148
+ .gsub("&phi;", "stem:[phi]")
149
+ .gsub("&Phi;", "stem:[Phi]")
150
+ .gsub("&varphi;", "stem:[varphi]")
151
+ .gsub("&chi;", "stem:[chi]")
152
+ .gsub("&psi;", "stem:[psi]")
153
+ .gsub("&Psi;", "stem:[Psi]")
154
+ .gsub("&omega;", "stem:[omega]")
155
155
  end
156
156
  end
157
157
  end
@@ -0,0 +1,31 @@
1
+ module Stepmod
2
+ module Utils
3
+ module Parsers
4
+ module Models
5
+ end
6
+ end
7
+ end
8
+ end
9
+
10
+ require_relative "models/mapping_table"
11
+
12
+ module Stepmod
13
+ module Utils
14
+ module Parsers
15
+ class MappingTableParser
16
+ def self.parse(node)
17
+ new(node).parse
18
+ end
19
+
20
+ def initialize(node)
21
+ @node = node
22
+ @xml = node.to_xml
23
+ end
24
+
25
+ def parse
26
+ Models::MappingTable.from_xml(@xml)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,40 @@
1
+ require "shale"
2
+
3
+ require_relative "b"
4
+ require_relative "bold"
5
+ require_relative "i"
6
+ require_relative "sub"
7
+ require_relative "sup"
8
+ require_relative "tt"
9
+
10
+ module Stepmod
11
+ module Utils
12
+ module Parsers
13
+ module Models
14
+ class A < Shale::Mapper
15
+ attribute :content, Shale::Type::String
16
+ attribute :href, Shale::Type::String
17
+ attribute :i, Italic, collection: true
18
+ attribute :b, B, collection: true
19
+ attribute :sub, Sub, collection: true
20
+ attribute :sup, Sup, collection: true
21
+ attribute :tt, Tt, collection: true
22
+ attribute :bold, Bold, collection: true
23
+
24
+ xml do
25
+ root "a"
26
+
27
+ map_content to: :content
28
+ map_attribute "href", to: :href
29
+ map_element "i", to: :i
30
+ map_element "b", to: :b
31
+ map_element "sub", to: :sub
32
+ map_element "sup", to: :sup
33
+ map_element "tt", to: :tt
34
+ map_element "bold", to: :bold
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end