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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +1 -1
- data/.github/workflows/release.yml +4 -3
- data/.rubocop.yml +1 -1
- data/Gemfile +3 -3
- data/Rakefile +1 -1
- data/exe/stepmod-annotate-all +17 -11
- data/exe/stepmod-build-resource-docs-cache +8 -7
- data/exe/stepmod-convert-express-description +6 -4
- data/exe/stepmod-convert-express-resource +6 -4
- data/exe/stepmod-extract-terms +38 -25
- data/exe/stepmod-find-express-files +8 -7
- data/lib/stepmod/utils/bibdata.rb +31 -35
- data/lib/stepmod/utils/cleaner.rb +3 -3
- data/lib/stepmod/utils/concept.rb +30 -35
- data/lib/stepmod/utils/converters/a.rb +7 -10
- data/lib/stepmod/utils/converters/blockquote.rb +4 -4
- data/lib/stepmod/utils/converters/br.rb +1 -1
- data/lib/stepmod/utils/converters/bypass.rb +33 -33
- data/lib/stepmod/utils/converters/clause_ref.rb +3 -3
- data/lib/stepmod/utils/converters/code.rb +1 -1
- data/lib/stepmod/utils/converters/comment.rb +5 -3
- data/lib/stepmod/utils/converters/dd.rb +2 -2
- data/lib/stepmod/utils/converters/def.rb +19 -19
- data/lib/stepmod/utils/converters/drop.rb +2 -2
- data/lib/stepmod/utils/converters/dt.rb +2 -2
- data/lib/stepmod/utils/converters/em.rb +1 -1
- data/lib/stepmod/utils/converters/em_express_description.rb +1 -1
- data/lib/stepmod/utils/converters/eqn.rb +28 -26
- data/lib/stepmod/utils/converters/example.rb +5 -6
- data/lib/stepmod/utils/converters/express_g.rb +10 -9
- data/lib/stepmod/utils/converters/express_ref.rb +2 -2
- data/lib/stepmod/utils/converters/express_ref_express_description.rb +3 -2
- data/lib/stepmod/utils/converters/ext_description.rb +1 -1
- data/lib/stepmod/utils/converters/figure.rb +3 -3
- data/lib/stepmod/utils/converters/fund_cons.rb +1 -1
- data/lib/stepmod/utils/converters/head.rb +3 -2
- data/lib/stepmod/utils/converters/hr.rb +2 -2
- data/lib/stepmod/utils/converters/ignore.rb +3 -3
- data/lib/stepmod/utils/converters/introduction.rb +1 -1
- data/lib/stepmod/utils/converters/module_ref.rb +6 -6
- data/lib/stepmod/utils/converters/note.rb +5 -6
- data/lib/stepmod/utils/converters/ol.rb +5 -5
- data/lib/stepmod/utils/converters/p.rb +2 -2
- data/lib/stepmod/utils/converters/pass_through.rb +2 -2
- data/lib/stepmod/utils/converters/q.rb +1 -1
- data/lib/stepmod/utils/converters/schema.rb +1 -1
- data/lib/stepmod/utils/converters/stem.rb +1 -1
- data/lib/stepmod/utils/converters/stepmod_ext_description.rb +5 -4
- data/lib/stepmod/utils/converters/strong.rb +5 -4
- data/lib/stepmod/utils/converters/sub.rb +2 -2
- data/lib/stepmod/utils/converters/sup.rb +2 -2
- data/lib/stepmod/utils/converters/synonym.rb +2 -2
- data/lib/stepmod/utils/converters/table.rb +7 -9
- data/lib/stepmod/utils/converters/term.rb +18 -9
- data/lib/stepmod/utils/converters/text.rb +11 -13
- data/lib/stepmod/utils/converters/uof.rb +3 -4
- data/lib/stepmod/utils/html_to_asciimath.rb +91 -90
- data/lib/stepmod/utils/smrl_description_converter.rb +34 -33
- data/lib/stepmod/utils/smrl_resource_converter.rb +50 -49
- data/lib/stepmod/utils/stepmod_definition_converter.rb +39 -38
- data/lib/stepmod/utils/stepmod_file_annotator.rb +26 -19
- data/lib/stepmod/utils/terms_extractor.rb +138 -86
- data/lib/stepmod/utils/version.rb +1 -1
- data/stepmod-utils.gemspec +11 -5
- metadata +71 -15
@@ -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,
|
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
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
37
|
+
.children
|
38
|
+
.find do |n|
|
39
|
+
return false if !n.text? && n.name != "b"
|
41
40
|
|
42
|
-
|
43
|
-
|
44
|
-
first_strong_node.next.content = first_strong_node.next.content.gsub(
|
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,
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
58
|
+
[stem]
|
59
|
+
++++
|
60
|
+
#{remove_trash_symbols(content.strip)}
|
61
|
+
++++
|
60
62
|
|
61
|
-
|
62
|
-
res = "[[#{cloned_node['id']}]]\n#{res}" if cloned_node[
|
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*?
|
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
|
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
|
9
|
+
return "" if state[:no_notes_examples]
|
11
10
|
|
12
11
|
<<~TEMPLATE
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
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 ==
|
9
|
+
next unless child.name == "imgfile"
|
10
10
|
|
11
|
-
parse_to_svg_reference(child[
|
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
|
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(
|
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
|
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[
|
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,
|
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[
|
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
|
-
|
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
|
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
|
-
|
@@ -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,
|
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(
|
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(
|
8
|
-
|
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
|
@@ -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[
|
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
|
-
#
|
15
|
+
# {{individual products}}
|
16
16
|
|
17
17
|
ref = node.text.strip
|
18
18
|
if !ref.empty?
|
19
|
-
"
|
19
|
+
" {{#{normalized_ref(ref)}}} "
|
20
20
|
elsif
|
21
|
-
ref = node[
|
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(
|
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
|
9
|
+
return "" if state[:no_notes_examples]
|
11
10
|
|
12
11
|
<<~TEMPLATE
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
|
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[
|
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
|
-
|
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[
|
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
|