stepmod-utils 0.3.30 → 0.3.31
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/README.adoc +168 -1
- data/exe/stepmod-annotate-all +32 -26
- data/exe/stepmod-extract-concepts +1 -1
- data/exe/stepmod-srl-migrate +96 -0
- data/exe/stepmod-srl-migrate-docs +82 -0
- data/exe/stepmod-srl-migrate-schemas +114 -0
- data/lib/stepmod/utils/converters/express_g.rb +3 -2
- data/lib/stepmod/utils/stepmod_file_annotator.rb +31 -3
- data/lib/stepmod/utils/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e7459842ad5de4eed3337c26d6267a5d85e6255f8a730a443d27dfd93ec76bbf
|
|
4
|
+
data.tar.gz: e43d507c19b7027d0c22f6bb0e7fba544db9443a7a4df36162e3b8af3f2a28c7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a547cb2ee89f17a9d869dbc19aa6c74ee15a830c5bb88836166c4bf7d61532268508982e171ff318f2cb163b4041187d3e8638141a26e9d340433ebcb1b3ae58
|
|
7
|
+
data.tar.gz: 61e26c2579d309560b5336868e1c75f3b18cca9cd036272f990e8d872118e779ff1b4969ac55c84c3f8fa9c39ae76d93cac86f8ac290d068f9acde029cd4f1ec
|
data/README.adoc
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
= STEPmod utilities
|
|
2
2
|
|
|
3
|
-
image:https://img.shields.io/gem/v/
|
|
3
|
+
image:https://img.shields.io/gem/v/stepmod-utils.svg["Gem Version", link="https://rubygems.org/gems/stepmod-utils"]
|
|
4
4
|
image:https://github.com/metanorma/stepmod-utils/workflows/ubuntu/badge.svg["Ubuntu Build Status", link="https://github.com/metanorma/stepmod-utils/actions?query=workflow%3Aubuntu"]
|
|
5
5
|
image:https://github.com/metanorma/stepmod-utils/workflows/macos/badge.svg["OSX Build Status", link="https://github.com/metanorma/stepmod-utils/actions?query=workflow%3Amacos"]
|
|
6
6
|
image:https://github.com/metanorma/stepmod-utils/workflows/windows/badge.svg["Windows Build Status", link="https://github.com/metanorma/stepmod-utils/actions?query=workflow%3Awindows"]
|
|
@@ -111,6 +111,173 @@ expg_image:contract_schemaexpg1.xml[]
|
|
|
111
111
|
expg_image:contract_schemaexpg2.xml[]
|
|
112
112
|
----
|
|
113
113
|
|
|
114
|
+
== Convertion of all schema history information into independent per-schema YAML files
|
|
115
|
+
|
|
116
|
+
Command:
|
|
117
|
+
|
|
118
|
+
[source,sh]
|
|
119
|
+
----
|
|
120
|
+
$ stepmod-extract-changes -p {stepmod-data-directory}
|
|
121
|
+
----
|
|
122
|
+
|
|
123
|
+
=== Examples
|
|
124
|
+
|
|
125
|
+
Given the following XML
|
|
126
|
+
|
|
127
|
+
[source,xml]
|
|
128
|
+
----
|
|
129
|
+
<change version="4">
|
|
130
|
+
<arm.changes>
|
|
131
|
+
<arm.modifications>
|
|
132
|
+
<modified.object type="TYPE" name="ap242_requirement_assignment_item" />
|
|
133
|
+
<!-- ... -->
|
|
134
|
+
</arm.modifications>
|
|
135
|
+
</arm.changes>
|
|
136
|
+
<mim.changes>
|
|
137
|
+
<mim.additions>
|
|
138
|
+
<modified.object type="CONSTANT" name="ap242_shape_representation_reference_types" />
|
|
139
|
+
<!-- ... -->
|
|
140
|
+
</mim.additions>
|
|
141
|
+
<mim.modifications>
|
|
142
|
+
<modified.object type="CONSTANT" name="deprecated_interfaced_data_types" />
|
|
143
|
+
<!-- ... -->
|
|
144
|
+
</mim.modifications>
|
|
145
|
+
<mim.deletions>
|
|
146
|
+
<modified.object type="RULE" name="subtype_mandatory_shape_representation" />
|
|
147
|
+
</mim.deletions>
|
|
148
|
+
</mim.changes>
|
|
149
|
+
|
|
150
|
+
<arm_longform.changes>
|
|
151
|
+
<arm.additions>
|
|
152
|
+
<modified.object type="TYPE" name="advanced_face_model" />
|
|
153
|
+
<!-- ... -->
|
|
154
|
+
</arm.additions>
|
|
155
|
+
<arm.modifications>
|
|
156
|
+
<modified.object type="TYPE" name="assembly_constraint_select">
|
|
157
|
+
<description>
|
|
158
|
+
<ul>
|
|
159
|
+
<li>Remove SELECT value 'ENTITY Binary_assembly_constraint'</li>
|
|
160
|
+
<!-- ... -->
|
|
161
|
+
</ul>
|
|
162
|
+
</description>
|
|
163
|
+
</modified.object>
|
|
164
|
+
<!-- ... -->
|
|
165
|
+
</arm.modifications>
|
|
166
|
+
<arm.deletions>
|
|
167
|
+
<modified.object type="TYPE" name="axis_placement_mapping_source" />
|
|
168
|
+
</arm.deletions>
|
|
169
|
+
</arm_longform.changes>
|
|
170
|
+
|
|
171
|
+
<mim_longform.changes>
|
|
172
|
+
<mim.additions>
|
|
173
|
+
<modified.object type="CONSTANT" name="ap242_shape_representation_reference_types" />
|
|
174
|
+
</mim.additions>
|
|
175
|
+
|
|
176
|
+
<mim.modifications>
|
|
177
|
+
<modified.object type="CONSTANT" name="deprecated_constructed_data_types">
|
|
178
|
+
<description>
|
|
179
|
+
CONSTANT 'deprecated_constructed_data_types': Expression Changed
|
|
180
|
+
</description>
|
|
181
|
+
</modified.object>
|
|
182
|
+
<!-- ... -->
|
|
183
|
+
</mim.modifications>
|
|
184
|
+
|
|
185
|
+
<mim.deletions>
|
|
186
|
+
<modified.object type="TYPE" name="connected_edge_with_length_set_items" />
|
|
187
|
+
<!-- ... -->
|
|
188
|
+
</mim.deletions>
|
|
189
|
+
</mim_longform.changes>
|
|
190
|
+
|
|
191
|
+
</change>
|
|
192
|
+
----
|
|
193
|
+
|
|
194
|
+
Will Generate 4 files:
|
|
195
|
+
|
|
196
|
+
- arm.changes.yml
|
|
197
|
+
- mim.changes.yml
|
|
198
|
+
- arm_lf.changes.yml
|
|
199
|
+
- mim_lf.changes.yml
|
|
200
|
+
|
|
201
|
+
`arm.changes.yml`:
|
|
202
|
+
|
|
203
|
+
[source,yaml]
|
|
204
|
+
----
|
|
205
|
+
---
|
|
206
|
+
schema: Ap242_managed_model_based_3d_engineering_arm
|
|
207
|
+
change_edition:
|
|
208
|
+
- version: 4
|
|
209
|
+
description:
|
|
210
|
+
modifications:
|
|
211
|
+
- type: TYPE
|
|
212
|
+
name: ap242_requirement_assignment_item
|
|
213
|
+
----
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
`mim.changes.yml`:
|
|
217
|
+
|
|
218
|
+
[source,yaml]
|
|
219
|
+
----
|
|
220
|
+
---
|
|
221
|
+
schema: Ap242_managed_model_based_3d_engineering_mim
|
|
222
|
+
change_edition:
|
|
223
|
+
- version: 4
|
|
224
|
+
description:
|
|
225
|
+
additions:
|
|
226
|
+
- type: CONSTANT
|
|
227
|
+
name: ap242_shape_representation_reference_types
|
|
228
|
+
modifications:
|
|
229
|
+
- type: CONSTANT
|
|
230
|
+
name: deprecated_interfaced_data_types
|
|
231
|
+
deletions:
|
|
232
|
+
- type: RULE
|
|
233
|
+
name: subtype_mandatory_shape_representation
|
|
234
|
+
----
|
|
235
|
+
|
|
236
|
+
`arm_lf.changes.yml`:
|
|
237
|
+
|
|
238
|
+
[source,yaml]
|
|
239
|
+
----
|
|
240
|
+
---
|
|
241
|
+
schema: Ap242_managed_model_based_3d_engineering_arm_LF
|
|
242
|
+
change_edition:
|
|
243
|
+
- version: 4
|
|
244
|
+
description:
|
|
245
|
+
additions:
|
|
246
|
+
- type: TYPE
|
|
247
|
+
name: advanced_face_model
|
|
248
|
+
modifications:
|
|
249
|
+
- type: TYPE
|
|
250
|
+
name: assembly_constraint_select
|
|
251
|
+
descriptions:
|
|
252
|
+
- Remove SELECT value 'ENTITY Binary_assembly_constraint'
|
|
253
|
+
deletions:
|
|
254
|
+
- type: TYPE
|
|
255
|
+
name: axis_placement_mapping_source
|
|
256
|
+
----
|
|
257
|
+
|
|
258
|
+
`mim_lf.changes.yml`:
|
|
259
|
+
|
|
260
|
+
[source,yaml]
|
|
261
|
+
----
|
|
262
|
+
---
|
|
263
|
+
schema: Ap242_managed_model_based_3d_engineering_mim_LF
|
|
264
|
+
change_edition:
|
|
265
|
+
- version: 4
|
|
266
|
+
description:
|
|
267
|
+
additions:
|
|
268
|
+
- type: CONSTANT
|
|
269
|
+
name: ap242_shape_representation_reference_types
|
|
270
|
+
modifications:
|
|
271
|
+
- type: CONSTANT
|
|
272
|
+
name: deprecated_constructed_data_types
|
|
273
|
+
description: |
|
|
274
|
+
CONSTANT 'deprecated_constructed_data_types': Expression Changed
|
|
275
|
+
deletions:
|
|
276
|
+
- type: TYPE
|
|
277
|
+
name: connected_edge_with_length_set_items
|
|
278
|
+
----
|
|
279
|
+
|
|
280
|
+
|
|
114
281
|
== Git repository
|
|
115
282
|
|
|
116
283
|
If the STEPmod repository is a Git repository, term extract will work.
|
data/exe/stepmod-annotate-all
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
require "concurrent"
|
|
4
4
|
require "stepmod/utils/stepmod_file_annotator"
|
|
5
|
+
require "fileutils"
|
|
5
6
|
|
|
6
7
|
stepmod_dir = ARGV.first || Dir.pwd
|
|
8
|
+
stepmod_dir = Pathname.new(stepmod_dir.gsub("\\", "/"))
|
|
7
9
|
|
|
8
10
|
def all_express_files(stepmod_dir)
|
|
9
11
|
index_file = File.read(File.join(stepmod_dir, "repository_index.xml"))
|
|
@@ -32,34 +34,38 @@ end
|
|
|
32
34
|
MAX_THREADS = 1 #[2, Concurrent.processor_count].max * 2
|
|
33
35
|
MAX_QUEUE_SIZE = MAX_THREADS * 4
|
|
34
36
|
# https://github.com/ruby-concurrency/concurrent-ruby/blob/master/docs-source/thread_pools.md
|
|
35
|
-
pool = Concurrent::ThreadPoolExecutor.new(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
37
|
+
# pool = Concurrent::ThreadPoolExecutor.new(
|
|
38
|
+
# min_threads: MAX_THREADS,
|
|
39
|
+
# max_threads: MAX_THREADS,
|
|
40
|
+
# max_queue: MAX_QUEUE_SIZE,
|
|
41
|
+
# fallback_policy: :caller_runs,
|
|
42
|
+
# )
|
|
41
43
|
|
|
42
44
|
files = all_express_files(stepmod_dir)
|
|
43
45
|
|
|
44
|
-
files.
|
|
45
|
-
puts
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
46
|
+
files.each do |file|
|
|
47
|
+
puts "#{Thread.current.object_id}: Processing #{file}"
|
|
48
|
+
|
|
49
|
+
result = Stepmod::Utils::StepmodFileAnnotator.new(
|
|
50
|
+
express_file: file,
|
|
51
|
+
stepmod_dir: stepmod_dir,
|
|
52
|
+
).call
|
|
53
|
+
|
|
54
|
+
annotated_file_name = "#{File.basename(file, '.exp')}_annotated.exp"
|
|
55
|
+
annotated_file_path = File.join(File.dirname(file), annotated_file_name)
|
|
56
|
+
|
|
57
|
+
File.open(annotated_file_path, "w") do |annotated_file|
|
|
58
|
+
annotated_file.puts(result[:annotated_text])
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
result[:images_references].each do |source, destination|
|
|
62
|
+
source_path = File.join(stepmod_dir, "data", source)
|
|
63
|
+
destination_path = File.join(File.dirname(file), destination)
|
|
64
|
+
|
|
65
|
+
next if File.exist?(destination_path) || !File.exist?(source_path)
|
|
66
|
+
|
|
67
|
+
FileUtils.cp(source_path, destination_path)
|
|
63
68
|
end
|
|
64
|
-
|
|
69
|
+
|
|
70
|
+
puts "#{Thread.current.object_id}: Done processing #{File.basename(file)} => #{annotated_file_path}."
|
|
65
71
|
end
|
|
@@ -86,7 +86,7 @@ else
|
|
|
86
86
|
)
|
|
87
87
|
end
|
|
88
88
|
|
|
89
|
-
default_output_dir = File.join(stepmod_dir, "output_yaml")
|
|
89
|
+
default_output_dir = File.join(File.expand_path("..", stepmod_dir), "output_yaml")
|
|
90
90
|
output_dir = options[:output_dir] || default_output_dir
|
|
91
91
|
unless File.directory?(output_dir)
|
|
92
92
|
FileUtils.mkdir_p(output_dir)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# encoding: UTF-8
|
|
4
|
+
|
|
5
|
+
require "pathname"
|
|
6
|
+
bin_file = Pathname.new(__FILE__).realpath
|
|
7
|
+
|
|
8
|
+
# add self to libpath
|
|
9
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
|
10
|
+
|
|
11
|
+
# Fixes https://github.com/rubygems/rubygems/issues/1420
|
|
12
|
+
require "rubygems/specification"
|
|
13
|
+
|
|
14
|
+
module Gem
|
|
15
|
+
class Specification
|
|
16
|
+
def this; self; end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
require "bundler/setup"
|
|
21
|
+
require "optparse"
|
|
22
|
+
|
|
23
|
+
def log(message)
|
|
24
|
+
puts "[stepmod-utils] #{message}"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
options = {}
|
|
28
|
+
OptionParser.new do |opts|
|
|
29
|
+
opts.banner = "Usage: #{$0} [options]"
|
|
30
|
+
|
|
31
|
+
opts.on(
|
|
32
|
+
"--stepmod-data-dir STEPMOD_DATA_DIR",
|
|
33
|
+
String,
|
|
34
|
+
"Path to STEPmod data directory",
|
|
35
|
+
) do |path|
|
|
36
|
+
options[:stepmod_dir] = path
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
opts.on(
|
|
40
|
+
"--srl-docs-dir SRL_DOCS_DIR",
|
|
41
|
+
String,
|
|
42
|
+
"Path to output srl docs",
|
|
43
|
+
) do |path|
|
|
44
|
+
options[:srl_output_docs_dir] = path
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
opts.on(
|
|
48
|
+
"--srl-schemas-dir SRL_SCHEMAS_DIR",
|
|
49
|
+
String,
|
|
50
|
+
"Path to output srl schemas",
|
|
51
|
+
) do |path|
|
|
52
|
+
options[:srl_output_schemas_dir] = path
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
opts.on(
|
|
56
|
+
"-s",
|
|
57
|
+
"--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
|
|
58
|
+
String,
|
|
59
|
+
"Path to STEPMOD2MN_EXECUTEABLE",
|
|
60
|
+
) do |path|
|
|
61
|
+
options[:stepmod2mn_path] = path
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
65
|
+
puts opts
|
|
66
|
+
exit
|
|
67
|
+
end
|
|
68
|
+
end.parse!
|
|
69
|
+
|
|
70
|
+
stepmod2mn_path = options[:stepmod2mn_path]
|
|
71
|
+
if stepmod2mn_path.nil?
|
|
72
|
+
raise StandardError.new(
|
|
73
|
+
"stepmod2mn executeable is required, set with the `-s` option.",
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
stepmod_dir = options[:stepmod_dir] || "stepmod"
|
|
78
|
+
if stepmod_dir.nil?
|
|
79
|
+
raise StandardError.new(
|
|
80
|
+
"stepmod data directory required, set with the `--stepmod_dir` option.",
|
|
81
|
+
)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
migrate_docs_command = %(stepmod-srl-migrate-docs -s "#{stepmod2mn_path}" --stepmod-data-dir "#{stepmod_dir}")
|
|
85
|
+
migrate_docs_command += %( --srl-docs-dir #{options[:srl_output_docs_dir]}) if options[:srl_output_docs_dir]
|
|
86
|
+
|
|
87
|
+
migrate_schemas_command = %(stepmod-srl-migrate-schemas -s "#{stepmod2mn_path}" --stepmod-data-dir "#{stepmod_dir}")
|
|
88
|
+
migrate_schemas_command += %( --srl-schemas-dir #{options[:srl_output_schemas_dir]}) if options[:srl_output_schemas_dir]
|
|
89
|
+
|
|
90
|
+
log("--- START Migrate Docs ---")
|
|
91
|
+
system migrate_docs_command
|
|
92
|
+
log("--- END Migrate Docs ---")
|
|
93
|
+
|
|
94
|
+
log("--- START Migrate Schemas ---")
|
|
95
|
+
system migrate_schemas_command
|
|
96
|
+
log("--- END Migrate Schemas ---")
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# encoding: UTF-8
|
|
4
|
+
|
|
5
|
+
require "fileutils"
|
|
6
|
+
# resolve bin path, ignoring symlinks
|
|
7
|
+
require "pathname"
|
|
8
|
+
bin_file = Pathname.new(__FILE__).realpath
|
|
9
|
+
|
|
10
|
+
# add self to libpath
|
|
11
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
|
12
|
+
|
|
13
|
+
# Fixes https://github.com/rubygems/rubygems/issues/1420
|
|
14
|
+
require "rubygems/specification"
|
|
15
|
+
|
|
16
|
+
module Gem
|
|
17
|
+
class Specification
|
|
18
|
+
def this; self; end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
require "bundler/setup"
|
|
23
|
+
require "optparse"
|
|
24
|
+
|
|
25
|
+
def log(message)
|
|
26
|
+
puts "[stepmod-utils] #{message}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
options = {}
|
|
30
|
+
OptionParser.new do |opts|
|
|
31
|
+
opts.banner = "Usage: #{$0} [options]"
|
|
32
|
+
|
|
33
|
+
opts.on(
|
|
34
|
+
"--stepmod-data-dir STEPMOD_DATA_DIR",
|
|
35
|
+
String,
|
|
36
|
+
"Path to STEPmod data directory",
|
|
37
|
+
) do |path|
|
|
38
|
+
options[:stepmod_dir] = path
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
opts.on(
|
|
42
|
+
"--srl-docs-dir SRL_DOCS_DIR",
|
|
43
|
+
String,
|
|
44
|
+
"Path to output srl docs",
|
|
45
|
+
) do |path|
|
|
46
|
+
options[:srl_output_docs_dir] = path
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
opts.on(
|
|
50
|
+
"-s",
|
|
51
|
+
"--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
|
|
52
|
+
String,
|
|
53
|
+
"Path to STEPMOD2MN_EXECUTEABLE",
|
|
54
|
+
) do |path|
|
|
55
|
+
options[:stepmod2mn_path] = path
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
59
|
+
puts opts
|
|
60
|
+
exit
|
|
61
|
+
end
|
|
62
|
+
end.parse!
|
|
63
|
+
|
|
64
|
+
stepmod2mn_path = options[:stepmod2mn_path]
|
|
65
|
+
if stepmod2mn_path.nil?
|
|
66
|
+
raise StandardError.new(
|
|
67
|
+
"stepmod2mn executeable is required, set with the `-s` option.",
|
|
68
|
+
)
|
|
69
|
+
else
|
|
70
|
+
log "stepmod2mn executeable path: `#{stepmod2mn_path}`"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
stepmod_dir = options[:stepmod_dir] || "stepmod/data"
|
|
74
|
+
log "STEPmod data path: `#{stepmod_dir}`"
|
|
75
|
+
|
|
76
|
+
srl_output_docs_dir = options[:srl_output_docs_dir] || "documents"
|
|
77
|
+
unless File.directory?(srl_output_docs_dir)
|
|
78
|
+
FileUtils.mkdir_p(srl_output_docs_dir)
|
|
79
|
+
end
|
|
80
|
+
log "SRL output docs directory path: `#{srl_output_docs_dir}`"
|
|
81
|
+
|
|
82
|
+
system "java -Xss5m -jar #{stepmod2mn_path} #{stepmod_dir} --output #{srl_output_docs_dir}"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
# encoding: UTF-8
|
|
4
|
+
|
|
5
|
+
require "fileutils"
|
|
6
|
+
# resolve bin path, ignoring symlinks
|
|
7
|
+
require "pathname"
|
|
8
|
+
bin_file = Pathname.new(__FILE__).realpath
|
|
9
|
+
|
|
10
|
+
# add self to libpath
|
|
11
|
+
$:.unshift File.expand_path("../../lib", bin_file)
|
|
12
|
+
|
|
13
|
+
# Fixes https://github.com/rubygems/rubygems/issues/1420
|
|
14
|
+
require "rubygems/specification"
|
|
15
|
+
|
|
16
|
+
module Gem
|
|
17
|
+
class Specification
|
|
18
|
+
def this; self; end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
require "bundler/setup"
|
|
23
|
+
require "optparse"
|
|
24
|
+
|
|
25
|
+
def log(message, indent = 0)
|
|
26
|
+
indent_spaces = " " * (indent * 2)
|
|
27
|
+
puts "[stepmod-utils] #{indent_spaces}#{message}"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def copy_files_to_schemas(path, output_dir)
|
|
31
|
+
schema_name = path.dirname.basename
|
|
32
|
+
file_name = path.basename
|
|
33
|
+
|
|
34
|
+
new_dir = File.join(output_dir, schema_name)
|
|
35
|
+
new_file_path = File.join(new_dir, file_name.to_s.gsub("_annotated.exp", ".exp"))
|
|
36
|
+
|
|
37
|
+
unless Dir.exist?(new_dir)
|
|
38
|
+
FileUtils.mkdir_p(new_dir)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
FileUtils.copy_file(path, new_file_path)
|
|
42
|
+
log("Copied #{path.basename} to #{new_file_path}", 1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
options = {}
|
|
46
|
+
OptionParser.new do |opts|
|
|
47
|
+
opts.banner = "Usage: #{$0} [options]"
|
|
48
|
+
|
|
49
|
+
opts.on(
|
|
50
|
+
"--stepmod-data-dir STEPMOD_DATA_DIR",
|
|
51
|
+
String,
|
|
52
|
+
"Path to STEPmod data directory",
|
|
53
|
+
) do |path|
|
|
54
|
+
options[:stepmod_dir] = path
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
opts.on(
|
|
58
|
+
"--srl-schemas-dir SRL_SCHEMAS_DIR",
|
|
59
|
+
String,
|
|
60
|
+
"Path to output srl schemas",
|
|
61
|
+
) do |path|
|
|
62
|
+
options[:srl_output_schemas_dir] = path
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
opts.on(
|
|
66
|
+
"-s",
|
|
67
|
+
"--stepmod2mn-executeable STEPMOD2MN_EXECUTEABLE",
|
|
68
|
+
String,
|
|
69
|
+
"Path to STEPMOD2MN_EXECUTEABLE",
|
|
70
|
+
) do |path|
|
|
71
|
+
options[:stepmod2mn_path] = path
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
|
75
|
+
puts opts
|
|
76
|
+
exit
|
|
77
|
+
end
|
|
78
|
+
end.parse!
|
|
79
|
+
|
|
80
|
+
stepmod2mn_path = options[:stepmod2mn_path]
|
|
81
|
+
if stepmod2mn_path.nil?
|
|
82
|
+
raise StandardError.new(
|
|
83
|
+
"stepmod2mn executeable is required, set with the `-s` option.",
|
|
84
|
+
)
|
|
85
|
+
else
|
|
86
|
+
log "stepmod2mn executeable path: `#{stepmod2mn_path}`"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
stepmod_dir = options[:stepmod_dir] || "stepmod/data"
|
|
90
|
+
log "STEPmod data path: `#{stepmod_dir}`"
|
|
91
|
+
|
|
92
|
+
srl_output_schemas_dir = options[:srl_output_schemas_dir] || "schemas"
|
|
93
|
+
unless File.directory?(srl_output_schemas_dir)
|
|
94
|
+
FileUtils.mkdir_p(srl_output_schemas_dir)
|
|
95
|
+
end
|
|
96
|
+
log "SRL output schemas directory path: `#{srl_output_schemas_dir}`"
|
|
97
|
+
|
|
98
|
+
system "java -Xss5m -jar #{stepmod2mn_path} #{stepmod_dir} --output #{srl_output_schemas_dir} --svg"
|
|
99
|
+
|
|
100
|
+
system "stepmod-annotate-all #{stepmod_dir}"
|
|
101
|
+
|
|
102
|
+
Dir.glob("#{stepmod_dir}/data/**/*_annotated.exp").each do |filepath|
|
|
103
|
+
path = Pathname.new(filepath)
|
|
104
|
+
copy_files_to_schemas(path, srl_output_schemas_dir)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
system "stepmod-extract-changes -p #{stepmod_dir}"
|
|
108
|
+
|
|
109
|
+
Dir.glob("#{stepmod_dir}/data/**/*.changes.yaml").each do |filepath|
|
|
110
|
+
path = Pathname.new(filepath)
|
|
111
|
+
copy_files_to_schemas(path, srl_output_schemas_dir)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
log("Done")
|
|
@@ -18,15 +18,16 @@ module Stepmod
|
|
|
18
18
|
return "" unless File.file?(file)
|
|
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
|
*)
|
|
26
26
|
(*"#{state.fetch(:schema_name)}.__expressg"
|
|
27
|
+
[[#{svg_filename}]]
|
|
27
28
|
[.svgmap]
|
|
28
29
|
====
|
|
29
|
-
image::#{
|
|
30
|
+
image::#{svg_filename}.svg[]
|
|
30
31
|
|
|
31
32
|
#{image_document.xpath('//img.area').map.with_index(1) { |n, i| schema_reference(n['href'], i) }.join("\n")}
|
|
32
33
|
====
|
|
@@ -21,6 +21,7 @@ module Stepmod
|
|
|
21
21
|
@resource_docs_cache = resource_docs_schemas(stepmod_dir)
|
|
22
22
|
@stepmod_dir = stepmod_dir || Dir.pwd
|
|
23
23
|
@added_bibdata = {}
|
|
24
|
+
@images_references = {}
|
|
24
25
|
|
|
25
26
|
@schema_name = Expressir::Express::Parser.from_file(express_file)
|
|
26
27
|
.schemas
|
|
@@ -29,11 +30,11 @@ module Stepmod
|
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
def resource_docs_schemas(stepmod_dir)
|
|
32
|
-
filepath = File.join(stepmod_dir, "data
|
|
33
|
+
filepath = File.join(stepmod_dir, "data", "resource_docs", "*", "resource.xml")
|
|
33
34
|
|
|
34
35
|
schemas = {}
|
|
35
36
|
Dir.glob(filepath).each do |resource_docs_file|
|
|
36
|
-
match = resource_docs_file.match("data
|
|
37
|
+
match = resource_docs_file.match("data[/\]resource_docs[/\]([^/\]+)[/\]resource.xml")
|
|
37
38
|
resource_docs_dir = match.captures[0]
|
|
38
39
|
|
|
39
40
|
resource_docs = Nokogiri::XML(File.read(resource_docs_file)).root
|
|
@@ -55,6 +56,7 @@ module Stepmod
|
|
|
55
56
|
output_express = File.read(express_file)
|
|
56
57
|
converted_description = ""
|
|
57
58
|
base_linked = ""
|
|
59
|
+
processed_images_cache = {}
|
|
58
60
|
|
|
59
61
|
if File.exist?(descriptions_file)
|
|
60
62
|
descriptions = Nokogiri::XML(File.read(descriptions_file)).root
|
|
@@ -82,6 +84,10 @@ module Stepmod
|
|
|
82
84
|
descriptions_file, description
|
|
83
85
|
)
|
|
84
86
|
end
|
|
87
|
+
|
|
88
|
+
schema_base_dir = resource_docs_cache[base_linked]
|
|
89
|
+
add_images_references(converted_description, schema_base_dir, processed_images_cache)
|
|
90
|
+
|
|
85
91
|
# Add converted description from exact linked path
|
|
86
92
|
if resource_docs_dir && added_resource_descriptions[description["linkend"]].nil?
|
|
87
93
|
output_express << convert_from_resource_file(resource_docs_dir,
|
|
@@ -112,7 +118,10 @@ module Stepmod
|
|
|
112
118
|
converted_description
|
|
113
119
|
end
|
|
114
120
|
|
|
115
|
-
|
|
121
|
+
{
|
|
122
|
+
annotated_text: sanitize(output_express),
|
|
123
|
+
images_references: @images_references,
|
|
124
|
+
}
|
|
116
125
|
rescue StandardError => e
|
|
117
126
|
puts "[ERROR]!!! #{e.message}"
|
|
118
127
|
puts e.backtrace
|
|
@@ -124,6 +133,25 @@ module Stepmod
|
|
|
124
133
|
file_content.gsub("(*)", "(`*`)")
|
|
125
134
|
end
|
|
126
135
|
|
|
136
|
+
def add_images_references(description, schema_base_dir, processed_images_cache)
|
|
137
|
+
referenced_images = description.scan(/image::(.*?)\[\]/).flatten
|
|
138
|
+
|
|
139
|
+
referenced_images.each do |referenced_image|
|
|
140
|
+
next unless schema_base_dir
|
|
141
|
+
|
|
142
|
+
image_file_path = File.join("resource_docs", schema_base_dir, referenced_image)
|
|
143
|
+
new_image_file_path = referenced_image
|
|
144
|
+
|
|
145
|
+
if processed_images_cache[new_image_file_path]
|
|
146
|
+
processed_images_cache[new_image_file_path] = true
|
|
147
|
+
next
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
processed_images_cache[new_image_file_path] = true
|
|
151
|
+
@images_references[image_file_path] = new_image_file_path
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
127
155
|
def convert_from_description_text(descriptions_file, description)
|
|
128
156
|
Dir.chdir(File.dirname(descriptions_file)) do
|
|
129
157
|
wrapper = "<ext_descriptions>#{description}</ext_descriptions>"
|
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.3.
|
|
4
|
+
version: 0.3.31
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: concurrent-ruby
|
|
@@ -175,6 +175,9 @@ executables:
|
|
|
175
175
|
- stepmod-convert-express-resource
|
|
176
176
|
- stepmod-extract-changes
|
|
177
177
|
- stepmod-extract-concepts
|
|
178
|
+
- stepmod-srl-migrate
|
|
179
|
+
- stepmod-srl-migrate-docs
|
|
180
|
+
- stepmod-srl-migrate-schemas
|
|
178
181
|
extensions: []
|
|
179
182
|
extra_rdoc_files: []
|
|
180
183
|
files:
|
|
@@ -197,6 +200,9 @@ files:
|
|
|
197
200
|
- exe/stepmod-convert-express-resource
|
|
198
201
|
- exe/stepmod-extract-changes
|
|
199
202
|
- exe/stepmod-extract-concepts
|
|
203
|
+
- exe/stepmod-srl-migrate
|
|
204
|
+
- exe/stepmod-srl-migrate-docs
|
|
205
|
+
- exe/stepmod-srl-migrate-schemas
|
|
200
206
|
- lib/stepmod/utils.rb
|
|
201
207
|
- lib/stepmod/utils/bibdata.rb
|
|
202
208
|
- lib/stepmod/utils/change.rb
|