stepmod-utils 0.4.10 → 0.4.12
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/exe/stepmod-annotate-all +11 -0
- data/lib/stepmod/utils/converters/em_express_description.rb +3 -1
- data/lib/stepmod/utils/converters/eqn.rb +31 -3
- data/lib/stepmod/utils/converters/strong.rb +3 -1
- data/lib/stepmod/utils/converters/table.rb +8 -3
- data/lib/stepmod/utils/converters/text.rb +14 -4
- data/lib/stepmod/utils/equation_logger.rb +67 -0
- data/lib/stepmod/utils/stepmod_file_annotator.rb +6 -5
- data/lib/stepmod/utils/version.rb +1 -1
- data/lib/stepmod/utils.rb +23 -1
- data/stepmod-utils.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 277e199cae63ff4916555e4d208672a1d561809e7abb921eff70e022e781e5c1
|
4
|
+
data.tar.gz: c4762ca7dc28641cbca3c1eebcc393940963d702acd83ef183ad42bf44fb6944
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8999ccb49cae3922ed4c8ef8cdeece7f80ede6501dfe75219d6e6ba0749013850ccfcd6a0d55ecb479441e3210e5a1064a17cbfff9d0348c273b5e999670ae05
|
7
|
+
data.tar.gz: '039013eaddf84f1afc779b4311c254ace92513a0652418b1648d8da0dbbdb7cc86cad0efb4ba11670a5d5df4b8b56889e788cc73f4a98098e8b27857e74b9e6b'
|
data/.gitignore
CHANGED
data/exe/stepmod-annotate-all
CHANGED
@@ -40,6 +40,14 @@ OptionParser.new do |opts|
|
|
40
40
|
options[:srl_output_docs_dir] = path
|
41
41
|
end
|
42
42
|
|
43
|
+
opts.on(
|
44
|
+
"--eqn-log LOG_FILE_DIR",
|
45
|
+
String,
|
46
|
+
"Path to the directory for log file for equations",
|
47
|
+
) do |path|
|
48
|
+
options[:eqn_log_dir] = path
|
49
|
+
end
|
50
|
+
|
43
51
|
opts.on_tail("-h", "--help", "Show this message") do
|
44
52
|
puts opts
|
45
53
|
exit
|
@@ -67,6 +75,9 @@ unless File.exist?(srl_output_docs_dir) && File.directory?(srl_output_docs_dir)
|
|
67
75
|
raise StandardError.new("--documents directory for SRL documents (generated by stepmod2mn) does not exist yet, please run stepmod2mn")
|
68
76
|
end
|
69
77
|
|
78
|
+
eqn_log_dir = File.expand_path(options[:eqn_log_dir] || ".")
|
79
|
+
Stepmod::Utils.eqn_log_dir = eqn_log_dir
|
80
|
+
|
70
81
|
def all_express_files(stepmod_dir)
|
71
82
|
index_file = File.read(File.join(stepmod_dir, "repository_index.xml"))
|
72
83
|
index = Nokogiri::XML(index_file).root
|
@@ -18,7 +18,9 @@ module Stepmod
|
|
18
18
|
treat(equation, state.merge(equation: true, already_italic: true))
|
19
19
|
end
|
20
20
|
|
21
|
-
content = if
|
21
|
+
content = if state[:equation] && state[:convert_bold_and_italics]
|
22
|
+
"ii(#{content.strip})"
|
23
|
+
elsif content.strip.empty? || state[:already_italic] || state[:equation]
|
22
24
|
content
|
23
25
|
else
|
24
26
|
"#{content[/^\s*/]}_#{content.strip}_#{content[/\s*$/]}"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "stepmod/utils/html_to_asciimath"
|
4
|
+
require "stepmod/utils/equation_logger"
|
4
5
|
|
5
6
|
module Stepmod
|
6
7
|
module Utils
|
@@ -14,7 +15,11 @@ module Stepmod
|
|
14
15
|
return definition_converted(cloned_node, state)
|
15
16
|
end
|
16
17
|
|
17
|
-
stem_converted(cloned_node, state)
|
18
|
+
equation_converted = stem_converted(cloned_node, state)
|
19
|
+
|
20
|
+
log_equation(node, state, equation_converted)
|
21
|
+
|
22
|
+
equation_converted
|
18
23
|
end
|
19
24
|
|
20
25
|
private
|
@@ -50,11 +55,11 @@ module Stepmod
|
|
50
55
|
end
|
51
56
|
|
52
57
|
def stem_converted(cloned_node, state)
|
53
|
-
remove_tags_not_in_context(cloned_node)
|
58
|
+
remove_tags_not_in_context(cloned_node) unless state[:convert_bold_and_italics]
|
54
59
|
internal_content = treat_children(cloned_node, state.merge(equation: true))
|
55
60
|
content = Stepmod::Utils::HtmlToAsciimath.new.call(internal_content)
|
56
61
|
res = <<~TEMPLATE
|
57
|
-
|
62
|
+
#{source_type_comment(cloned_node)}
|
58
63
|
[stem]
|
59
64
|
++++
|
60
65
|
#{remove_trash_symbols(content.strip)}
|
@@ -66,6 +71,10 @@ module Stepmod
|
|
66
71
|
res
|
67
72
|
end
|
68
73
|
|
74
|
+
def source_type_comment(node)
|
75
|
+
"\n// source type is bigeqn\n" if node.name == "bigeqn"
|
76
|
+
end
|
77
|
+
|
69
78
|
def remove_trash_symbols(content)
|
70
79
|
content
|
71
80
|
.gsub(/ /, "")
|
@@ -92,9 +101,28 @@ module Stepmod
|
|
92
101
|
end
|
93
102
|
end
|
94
103
|
end
|
104
|
+
|
105
|
+
def equation_logger
|
106
|
+
@equation_logger ||= Stepmod::Utils::EquationLogger.new
|
107
|
+
end
|
108
|
+
|
109
|
+
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
|
+
|
112
|
+
return if equation_converted_with_bold_and_italics == equation_converted
|
113
|
+
|
114
|
+
equation_logger.anchor = state[:schema_and_entity] || state[:schema_name]
|
115
|
+
equation_logger.document = state[:descriptions_file]
|
116
|
+
equation_logger.equation = node.to_s
|
117
|
+
equation_logger.equation_converted = equation_converted
|
118
|
+
equation_logger.equation_converted_with_bold_and_italics = equation_converted_with_bold_and_italics
|
119
|
+
|
120
|
+
equation_logger.log
|
121
|
+
end
|
95
122
|
end
|
96
123
|
|
97
124
|
ReverseAdoc::Converters.register :eqn, Eqn.new
|
125
|
+
ReverseAdoc::Converters.register :bigeqn, Eqn.new
|
98
126
|
end
|
99
127
|
end
|
100
128
|
end
|
@@ -20,7 +20,9 @@ module Stepmod
|
|
20
20
|
treat(equation, state.merge(equation: true, already_strong: true))
|
21
21
|
end
|
22
22
|
|
23
|
-
content = if
|
23
|
+
content = if state[:equation] && state[:convert_bold_and_italics]
|
24
|
+
"bb(#{content.strip})"
|
25
|
+
elsif content.strip.empty? || state[:already_strong] || state[:equation]
|
24
26
|
content
|
25
27
|
else
|
26
28
|
strong_tag = state[:non_flanking_whitesapce] ? '**' : '*'
|
@@ -4,7 +4,6 @@ module Stepmod
|
|
4
4
|
module Utils
|
5
5
|
module Converters
|
6
6
|
class Table < Stepmod::Utils::Converters::Base
|
7
|
-
|
8
7
|
def self.pattern(state, id)
|
9
8
|
if state[:schema_and_entity].nil?
|
10
9
|
raise StandardError.new("[table]: no state given, #{id}")
|
@@ -23,8 +22,14 @@ module Stepmod
|
|
23
22
|
title = node["caption"].to_s
|
24
23
|
title = ".#{title}\n" unless title.empty?
|
25
24
|
attrs = style(node)
|
26
|
-
|
27
|
-
|
25
|
+
|
26
|
+
<<~TABLE
|
27
|
+
|
28
|
+
|
29
|
+
#{anchor}#{attrs}#{title}|===
|
30
|
+
#{treat_children(node, state.merge(inside_table: true))}
|
31
|
+
|===
|
32
|
+
TABLE
|
28
33
|
end
|
29
34
|
|
30
35
|
def frame(node)
|
@@ -8,7 +8,7 @@ module Stepmod
|
|
8
8
|
if node.text.strip.empty?
|
9
9
|
treat_empty(node, state)
|
10
10
|
else
|
11
|
-
treat_text(node)
|
11
|
+
treat_text(node, state)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
@@ -27,21 +27,25 @@ module Stepmod
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def treat_text(node)
|
30
|
+
def treat_text(node, state)
|
31
31
|
text = node.text
|
32
32
|
text = preserve_nbsp(text)
|
33
33
|
text = remove_inner_newlines(text)
|
34
34
|
text = remove_border_newlines(text)
|
35
35
|
|
36
36
|
text = preserve_keychars_within_backticks(text)
|
37
|
-
|
37
|
+
|
38
|
+
text = preserve_pipes_within_tables(text, state)
|
39
|
+
preserve_tags(text, state)
|
38
40
|
end
|
39
41
|
|
40
42
|
def preserve_nbsp(text)
|
41
43
|
text.gsub(/\u00A0/, " ")
|
42
44
|
end
|
43
45
|
|
44
|
-
def preserve_tags(text)
|
46
|
+
def preserve_tags(text, state)
|
47
|
+
return text if state[:inside_table]
|
48
|
+
|
45
49
|
text.gsub(/[<>]/, ">" => '\>', "<" => '\<')
|
46
50
|
end
|
47
51
|
|
@@ -58,6 +62,12 @@ module Stepmod
|
|
58
62
|
match.gsub('\_', "_").gsub('\*', "*")
|
59
63
|
end
|
60
64
|
end
|
65
|
+
|
66
|
+
def preserve_pipes_within_tables(text, state)
|
67
|
+
return text unless state[:inside_table]
|
68
|
+
|
69
|
+
text.gsub("|", "\\|")
|
70
|
+
end
|
61
71
|
end
|
62
72
|
|
63
73
|
ReverseAdoc::Converters.register :text, Text.new
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "plurimath"
|
2
|
+
require "stepmod/utils"
|
3
|
+
|
4
|
+
module Stepmod
|
5
|
+
module Utils
|
6
|
+
class EquationLogger
|
7
|
+
attr_accessor :anchor,
|
8
|
+
:document,
|
9
|
+
:equation,
|
10
|
+
:equation_converted,
|
11
|
+
:equation_converted_with_bold_and_italics
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@logger = Logger.new(logger_file_path)
|
15
|
+
end
|
16
|
+
|
17
|
+
def log
|
18
|
+
Stepmod::Utils.increment_eqn_counter
|
19
|
+
@logger.info do
|
20
|
+
<<~MESSAGE
|
21
|
+
|
22
|
+
=================== Equation #{Stepmod::Utils.eqn_counter} Start ===================
|
23
|
+
Document: #{document}
|
24
|
+
Nearest Anchor: #{anchor}
|
25
|
+
|
26
|
+
Formula (original):
|
27
|
+
#{equation}
|
28
|
+
|
29
|
+
------------------
|
30
|
+
|
31
|
+
Status: #{valid_asciimath?(equation_converted)}
|
32
|
+
Formula (asciimath):
|
33
|
+
#{equation_converted}
|
34
|
+
|
35
|
+
------------------
|
36
|
+
|
37
|
+
Status: #{valid_asciimath?(equation_converted_with_bold_and_italics)}
|
38
|
+
Formula (asciimath with bold and italics included):
|
39
|
+
#{equation_converted_with_bold_and_italics}
|
40
|
+
|
41
|
+
=================== Equation #{Stepmod::Utils.eqn_counter} End ===================
|
42
|
+
|
43
|
+
|
44
|
+
MESSAGE
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def logger_file_path
|
51
|
+
File.join(Stepmod::Utils.eqn_log_dir, "stepmod-utils.log.txt")
|
52
|
+
end
|
53
|
+
|
54
|
+
def valid_asciimath?(equation)
|
55
|
+
extracted_equation = extract_equation_from_stem(equation)
|
56
|
+
Plurimath::Math.parse(extracted_equation, :asciimath).to_mathml
|
57
|
+
"valid"
|
58
|
+
rescue StandardError
|
59
|
+
"invalid"
|
60
|
+
end
|
61
|
+
|
62
|
+
def extract_equation_from_stem(stem)
|
63
|
+
stem.gsub(/\[stem\]|\+\+\+\+/, "").strip
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -166,7 +166,7 @@ module Stepmod
|
|
166
166
|
|
167
167
|
converted_description = <<~DESCRIPTION
|
168
168
|
|
169
|
-
#{Stepmod::Utils::SmrlDescriptionConverter.convert(wrapper, no_notes_examples: true)}
|
169
|
+
#{Stepmod::Utils::SmrlDescriptionConverter.convert(wrapper, no_notes_examples: true, descriptions_file: descriptions_file)}
|
170
170
|
DESCRIPTION
|
171
171
|
|
172
172
|
if description["linkend"].nil?
|
@@ -176,25 +176,25 @@ module Stepmod
|
|
176
176
|
converted_figures = figures.map do |figure|
|
177
177
|
Stepmod::Utils::Converters::ExpressFigure
|
178
178
|
.new
|
179
|
-
.convert(figure, schema_and_entity: description["linkend"])
|
179
|
+
.convert(figure, schema_and_entity: description["linkend"], descriptions_file: descriptions_file)
|
180
180
|
end.join
|
181
181
|
|
182
182
|
converted_tables = tables.map do |table|
|
183
183
|
Stepmod::Utils::Converters::ExpressTable
|
184
184
|
.new
|
185
|
-
.convert(table, schema_and_entity: description["linkend"])
|
185
|
+
.convert(table, schema_and_entity: description["linkend"], descriptions_file: descriptions_file)
|
186
186
|
end.join
|
187
187
|
|
188
188
|
converted_notes = notes.map do |note|
|
189
189
|
Stepmod::Utils::Converters::ExpressNote
|
190
190
|
.new
|
191
|
-
.convert(note, schema_and_entity: description["linkend"])
|
191
|
+
.convert(note, schema_and_entity: description["linkend"], descriptions_file: descriptions_file)
|
192
192
|
end.join
|
193
193
|
|
194
194
|
converted_examples = examples.map do |example|
|
195
195
|
Stepmod::Utils::Converters::ExpressExample
|
196
196
|
.new
|
197
|
-
.convert(example, schema_and_entity: description["linkend"])
|
197
|
+
.convert(example, schema_and_entity: description["linkend"], descriptions_file: descriptions_file)
|
198
198
|
end.join
|
199
199
|
|
200
200
|
[
|
@@ -358,6 +358,7 @@ module Stepmod
|
|
358
358
|
{
|
359
359
|
no_notes_examples: false,
|
360
360
|
schema_and_entity: linked,
|
361
|
+
descriptions_file: descriptions_file,
|
361
362
|
},
|
362
363
|
)
|
363
364
|
end
|
data/lib/stepmod/utils.rb
CHANGED
@@ -3,6 +3,28 @@ require "stepmod/utils/version"
|
|
3
3
|
module Stepmod
|
4
4
|
module Utils
|
5
5
|
class Error < StandardError; end
|
6
|
-
|
6
|
+
|
7
|
+
@@eqn_log_dir = "."
|
8
|
+
@@eqn_counter = 0
|
9
|
+
|
10
|
+
def self.root
|
11
|
+
File.expand_path("../..", __dir__)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.eqn_log_dir=(eqn_log_dir)
|
15
|
+
@@eqn_log_dir = eqn_log_dir
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.eqn_log_dir
|
19
|
+
@@eqn_log_dir
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.eqn_counter
|
23
|
+
@@eqn_counter
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.increment_eqn_counter
|
27
|
+
@@eqn_counter += 1
|
28
|
+
end
|
7
29
|
end
|
8
30
|
end
|
data/stepmod-utils.gemspec
CHANGED
@@ -35,12 +35,14 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_runtime_dependency "expressir"
|
36
36
|
spec.add_runtime_dependency "glossarist", "~> 2.0"
|
37
37
|
spec.add_runtime_dependency "indefinite_article"
|
38
|
+
spec.add_runtime_dependency "plurimath"
|
38
39
|
spec.add_runtime_dependency "ptools"
|
39
40
|
spec.add_runtime_dependency "pubid-iso"
|
40
41
|
spec.add_runtime_dependency "octokit"
|
41
42
|
spec.add_runtime_dependency "down"
|
42
43
|
spec.add_runtime_dependency "reverse_adoc", ">= 0.3"
|
43
44
|
spec.add_runtime_dependency "thor", ">= 0.20"
|
45
|
+
spec.add_runtime_dependency "unitsml"
|
44
46
|
spec.add_development_dependency "rubocop"
|
45
47
|
spec.add_development_dependency "rubocop-performance"
|
46
48
|
spec.add_development_dependency "rubocop-rails"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stepmod-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: plurimath
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: ptools
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +164,20 @@ dependencies:
|
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0.20'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: unitsml
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
182
|
name: rubocop
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -293,6 +321,7 @@ files:
|
|
293
321
|
- lib/stepmod/utils/converters/term.rb
|
294
322
|
- lib/stepmod/utils/converters/text.rb
|
295
323
|
- lib/stepmod/utils/converters/uof.rb
|
324
|
+
- lib/stepmod/utils/equation_logger.rb
|
296
325
|
- lib/stepmod/utils/express_bibdata.rb
|
297
326
|
- lib/stepmod/utils/html_to_asciimath.rb
|
298
327
|
- lib/stepmod/utils/smrl_description_converter.rb
|