stepmod-utils 0.3.7 → 0.3.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6411f597f1b4e65a05304e06d5d27a337113c6ddb003bb8bc574fb95bc2a7885
4
- data.tar.gz: ab7abe00d931cf651c88223ce2eb37e9aab72780df7e2780691ca4aa7b4a2d8e
3
+ metadata.gz: b5d62b153f828f24d5e128e84ffcf18acdeaff96a8fb472e8d78432dce0eb7b0
4
+ data.tar.gz: 3eff53e916039c898332294e2f6ae6b61195ff0eca6d6e26b8551f7c753b35a9
5
5
  SHA512:
6
- metadata.gz: b66b9ac4aca80ac371459f3e36b9a3e4c8cb41faf90b5050af1709fac3a3013b0f44f05fd66fd1e64c322088ea52efa0995ffe047ee68961ca2dff00db3bc093
7
- data.tar.gz: b8a99b3f0e5decee185aa5aa4400a418e4c29c431fea9a40428b5be18704a54a9cd640e6b44ef5065687588661b2e063a7a27f05be91ef41427f618547c14c60
6
+ metadata.gz: 47ca986f76df9da95c7acd5b6716311b7575f570a47ded6d27099f28ccf1ada59e9065825909df8a9e07932fba4e76c81a7746cbc93970fc4c451b90816d1f5e
7
+ data.tar.gz: 96e624ef8e1223e4a09a6969e04aff34ef2ac75575f532f27da090a89b13ee5366b1b2d22bd2c319ba430aa5ac7f9a13c2513db391b005df55eb1b13b4bf3032
@@ -33,7 +33,7 @@ part_modules = Stepmod::Utils::TermsExtractor.call(stepmod_dir)
33
33
  def part_to_title(bibdata)
34
34
  case bibdata.part.to_i
35
35
  when 41
36
- "Part 41"
36
+ "Fundamentals of product description and support"
37
37
  when 42
38
38
  "Geometric and topological representation"
39
39
  when 43
@@ -41,7 +41,7 @@ def part_to_title(bibdata)
41
41
  when 44
42
42
  "Product structure, concept and configuration"
43
43
  when 45
44
- "Part 45"
44
+ "Material and other engineering properties"
45
45
  when 46
46
46
  "Visual presentation"
47
47
  when 47
@@ -53,6 +53,22 @@ def part_to_title(bibdata)
53
53
  end
54
54
  end
55
55
 
56
+ IMAGE_REPLACEMENTS = {
57
+ 'image::eq01.gif[]' => 'stem:[H(A,B) = max {h(A, B), h(B,A)}]',
58
+ 'image::eq02.gif[]' => 'stem:[max_{a in A} { min_{b in B} d(a,b) }]',
59
+ 'image::vector_z_c.gif[]' => 'stem:[bar z_{c}]',
60
+ 'image::one_direction_repeat_factor_expression.gif[]' => 'stem:[I + k cdot R;  k = -1, 1]',
61
+ 'image::two_direction_repeat_factor_expression.gif[]' => 'stem:[I + k_1 cdot R_1 + k_2 cdot R_2;  k_1, k_2 = -1, 0, 1, k^2_1 + k^2_2 != 0]'
62
+ }
63
+
64
+ def replace_images(content)
65
+ IMAGE_REPLACEMENTS.each_pair do |k, v|
66
+ content.gsub!(k, v)
67
+ end
68
+
69
+ content
70
+ end
71
+
56
72
  def log(message)
57
73
  puts "[stepmod-utils] #{message}"
58
74
  end
@@ -64,11 +80,22 @@ part_concepts.each do |(bibdata, current_part_concepts)|
64
80
  fn = "03x-stepmod-#{bibdata.part}.adoc"
65
81
  File.open(fn, "w") do |file|
66
82
  file.puts("== #{part_to_title(bibdata)}\n\n")
67
- file.puts(current_part_concepts.map(&:to_mn_adoc).join("\n"))
83
+ file.puts(replace_images(current_part_concepts.map(&:to_mn_adoc).join("\n")))
68
84
  end
69
85
  log "INFO: written to: #{fn}"
70
86
  end
71
87
 
88
+ File.open("03x-stepmod.adoc", "w") do |file|
89
+ part_concepts.sort_by do |(bibdata, current_part_concepts)|
90
+ bibdata.part.to_i
91
+ end.each do |(bibdata, current_part_concepts)|
92
+ fn = "03x-stepmod-#{bibdata.part}.adoc"
93
+ file.puts("\ninclude::#{fn}[]\n")
94
+ end
95
+ end
96
+
97
+ log "INFO: written summary file to: 03x-stepmod.adoc"
98
+
72
99
  part_resources.each do |(bibdata, current_part_resources)|
73
100
  current_part_resources = current_part_resources.to_a.map do |n|
74
101
  n.localizations["en"]
@@ -76,11 +103,22 @@ part_resources.each do |(bibdata, current_part_resources)|
76
103
  fn = "04x-stepmod-entities-resources-#{bibdata.part}.adoc"
77
104
  File.open(fn, "w") do |file|
78
105
  file.puts("== #{part_to_title(bibdata)}\n\n")
79
- file.puts(current_part_resources.map(&:to_mn_adoc).join("\n"))
106
+ file.puts(replace_images(current_part_resources.map(&:to_mn_adoc).join("\n")))
80
107
  end
81
108
  log "INFO: written to: #{fn}"
82
109
  end
83
110
 
111
+ File.open("04x-stepmod-entities-resources.adoc", "w") do |file|
112
+ part_resources.sort_by do |(bibdata, current_part_resources)|
113
+ bibdata.part.to_i
114
+ end.each do |(bibdata, current_part_resources)|
115
+ fn = "04x-stepmod-entities-resources-#{bibdata.part}.adoc"
116
+ file.puts("\ninclude::#{fn}[]\n")
117
+ end
118
+ end
119
+
120
+ log "INFO: written summary file to: 04x-stepmod-entities-resources.adoc"
121
+
84
122
  part_modules.each do |(bibdata, part_modules_arm, part_modules_mim)|
85
123
  fn = "05x-stepmod-entities-modules-#{bibdata.part}.adoc"
86
124
  File.open(fn, "w") do |file|
@@ -106,23 +144,43 @@ part_modules.each do |(bibdata, part_modules_arm, part_modules_mim)|
106
144
  n.localizations["en"]
107
145
  end
108
146
  file.puts("== #{schema_name}\n\n")
109
- file.puts(concepts.map(&:to_mn_adoc).join("\n"))
147
+ file.puts(replace_images(concepts.map(&:to_mn_adoc).join("\n")))
110
148
  end
111
149
  end
112
150
  log "INFO: written to: #{fn}"
113
151
  end
114
152
 
153
+ File.open("05x-stepmod-entities-modules.adoc", "w") do |file|
154
+ part_modules.sort_by do |(bibdata, part_modules_arm, part_modules_mim)|
155
+ bibdata.part.to_i
156
+ end.each do |(bibdata, part_modules_arm, part_modules_mim)|
157
+ fn = "05x-stepmod-entities-modules-#{bibdata.part}.adoc"
158
+ file.puts("\ninclude::#{fn}[]\n")
159
+ end
160
+ end
161
+
162
+ log "INFO: written summary file to: 05x-stepmod-entities-modules.adoc"
163
+
115
164
  File.open("031-stepmod-general.adoc", "w") do |file|
116
- file.puts(general_concepts.to_a.map do |n|
117
- n.localizations["en"]
118
- end.map(&:to_mn_adoc).join("\n"))
165
+ file.puts(
166
+ replace_images(
167
+ general_concepts.to_a.map do |n|
168
+ n.localizations["en"]
169
+ end.map(&:to_mn_adoc).join("\n")
170
+ )
171
+ )
119
172
  end
173
+
120
174
  log "INFO: written to: 031-stepmod-general.adoc"
121
175
 
122
176
  File.open("041-stepmod-entities-resources.adoc", "w") do |file|
123
- file.puts(resource_concepts.to_a.map do |n|
124
- n.localizations["en"]
125
- end.map(&:to_mn_adoc).join("\n"))
177
+ file.puts(
178
+ replace_images(
179
+ resource_concepts.to_a.map do |n|
180
+ n.localizations["en"]
181
+ end.map(&:to_mn_adoc).join("\n")
182
+ )
183
+ )
126
184
  end
127
185
  log "INFO: written to: 041-stepmod-entities-resources.adoc"
128
186
 
@@ -31,7 +31,10 @@ module Stepmod
31
31
  Reference <<#{reference_anchor}>> for the complete definition.
32
32
  TEXT
33
33
  end
34
+
34
35
  # https://github.com/metanorma/stepmod-utils/issues/86
36
+
37
+ # TODO: This portion DOES NOT HANDLE the <synonym> element. WTF??
35
38
  if definition_xml.name == "definition"
36
39
  designation = definition_designation(definition_xml)
37
40
  definition = definition_xml_definition(definition_xml,
@@ -40,6 +43,7 @@ module Stepmod
40
43
  designation, definition
41
44
  ).strip
42
45
  end
46
+
43
47
  new(
44
48
  designations: [designation],
45
49
  definition: definition,
@@ -53,20 +57,36 @@ module Stepmod
53
57
  end
54
58
 
55
59
  def definition_designation(definition_xml)
56
- alts = definition_xml.xpath(".//def/p").map(&:text)
60
+ # We take the <p> that is an alternative term (length<=20).
61
+ # Add in the <synonym> elements.
62
+ alts = definition_xml.xpath(".//synonym").map(&:text) +
63
+ definition_xml.xpath(".//def/p").map(&:text).reject do |text|
64
+ text.length > 20
65
+ end
66
+
67
+ term = Stepmod::Utils::Converters::Term
68
+ .new
69
+ .convert(
70
+ definition_xml.xpath(".//term").first
71
+ )
72
+
57
73
  {
58
- accepted: definition_xml.xpath(".//term").first&.text,
74
+ # [4..-1] because we want to skip the initial `=== {title}`
75
+ accepted: term[4..-1],
59
76
  alt: alts,
60
77
  }
61
78
  end
62
79
 
63
80
  def definition_xml_definition(definition_xml, reference_anchor)
81
+ # We reject the <p> that was considered an alternative term (length<=20)
64
82
  text_nodes = definition_xml
65
83
  .xpath(".//def")
66
84
  .first
67
85
  .children
68
- .reject { |n| n.name == "p" }
86
+ .reject { |n| n.name == "p" && n.text.length <= 20 }
87
+
69
88
  wrapper = "<def>#{text_nodes.map(&:to_s).join}</def>"
89
+
70
90
  Stepmod::Utils::Converters::Def
71
91
  .new
72
92
  .convert(
@@ -83,15 +103,18 @@ module Stepmod
83
103
  if designation[:alt].length.positive?
84
104
  alt_notation = "alt:[#{designation[:alt].map(&:strip).join(',')}]"
85
105
  end
106
+
86
107
  result = <<~TEXT
87
- === #{designation[:accepted]}
108
+ === #{designation[:accepted].strip}
88
109
  TEXT
110
+
89
111
  if alt_notation
90
112
  result += <<~TEXT
91
113
 
92
114
  #{alt_notation}
93
115
  TEXT
94
116
  end
117
+
95
118
  <<~TEXT
96
119
  #{result}
97
120
  #{definition}
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "uri"
4
-
5
3
  module Stepmod
6
4
  module Utils
7
5
  module Converters
@@ -31,9 +29,7 @@ module Stepmod
31
29
  name = title if name.empty?
32
30
  href = "link:#{href}" unless href.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
33
31
  link = "#{href}[#{name}]"
34
- # link.prepend(' ')
35
32
  " #{link}"
36
-
37
33
  end
38
34
  end
39
35
  end
@@ -5,7 +5,7 @@ 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
@@ -19,7 +19,7 @@ module Stepmod
19
19
  " {{#{normalized_ref(ref)}}} "
20
20
  elsif
21
21
  ref = node["linkend"].split(":").first
22
- " *#{ref}*"
22
+ " *#{ref}* "
23
23
  end
24
24
  end
25
25
 
@@ -9,10 +9,12 @@ module Stepmod
9
9
  anchor = id ? "[[#{id}]]\n" : ""
10
10
  ol_count = state.fetch(:ol_count, 0) + 1
11
11
  attrs = ol_attrs(node)
12
- "\n\n#{anchor}#{attrs}#{treat_children(node,
13
- state.merge(
14
- ol_count: ol_count, tdsinglepara: true,
15
- ))}\n"
12
+ children_s = treat_children(node, state.merge(
13
+ ol_count: ol_count,
14
+ tdsinglepara: true,
15
+ ))
16
+
17
+ "\n\n#{anchor}#{attrs}#{children_s}\n"
16
18
  # Why do we add this?
17
19
  # res = "\n" + res if node.parent && node.parent.name == 'note'
18
20
  end
@@ -13,8 +13,21 @@ module Stepmod
13
13
  child_text = treat_children(node, state).strip
14
14
  return nil if child_text.empty?
15
15
 
16
- # Only taking the first paragraph of the definition
17
- child_text = child_text.split("\n").first
16
+ # Unless the first paragraph ends with "between" and is followed by a
17
+ # list, don't split
18
+ first_child = child_text.split("\n").first
19
+
20
+ unless (
21
+ first_child =~ /between:?\s*\Z/ ||
22
+ first_child =~ /include:?\s*\Z/ ||
23
+ first_child =~ /of:?\s*\Z/ ||
24
+ first_child =~ /[:;]\s*\Z/
25
+ ) &&
26
+ child_text =~ /\n\n\*/
27
+
28
+ # Only taking the first paragraph of the definition
29
+ child_text = first_child
30
+ end
18
31
 
19
32
  # # Only taking the first sentence
20
33
  # if child_text.contains?(".")
@@ -11,8 +11,10 @@ module Stepmod
11
11
  if content.strip.empty? || state[:already_strong]
12
12
  content
13
13
  else
14
- handle_express_escape_seq(node,
15
- "#{content[/^\s*/]}*#{content.strip}*#{content[/\s*$/]}")
14
+ handle_express_escape_seq(
15
+ node,
16
+ "#{content[/^\s*/]}*#{content.strip}*#{content[/\s*$/]}"
17
+ )
16
18
  end
17
19
  end
18
20
 
@@ -6,10 +6,19 @@ module Stepmod
6
6
  module Utils
7
7
  module Converters
8
8
  class Term < ReverseAdoc::Converters::Base
9
+
10
+ # We strip all the children in the case for "stem:[d]-manifold"
11
+ # vs "stem:[d] -manifold"
12
+ def treat_children(node, state)
13
+ res = node.children.map { |child| treat(child, state) }
14
+ res.map(&:strip).reject(&:empty?).join("")
15
+ end
16
+
9
17
  def convert(node, state = {})
10
18
  first_child = node.children.find do |child|
11
19
  child.name == "text" && !child.text.to_s.strip.empty?
12
20
  end
21
+
13
22
  unless first_child &&
14
23
  node.text.split(";").length == 2 &&
15
24
  defined?(Stepmod::Utils::Converters::Synonym)
@@ -25,10 +34,10 @@ module Stepmod
25
34
  private
26
35
 
27
36
  def treat_acronym(term_def)
28
- return term_def if term_def !~ /.+\(.+?\)$/
37
+ return term_def.strip if term_def !~ /.+\(.+?\)$/
29
38
 
30
39
  _, term_text, term_acronym = term_def.match(/(.+?)(\(.+\))$/).to_a
31
- "#{term_text}\nalt:[#{term_acronym.gsub(/\(|\)/, '')}]"
40
+ "#{term_text.strip}\nalt:[#{term_acronym.gsub(/\(|\)/, '')}]"
32
41
  end
33
42
  end
34
43
 
@@ -1,5 +1,5 @@
1
1
  module Stepmod
2
2
  module Utils
3
- VERSION = "0.3.7".freeze
3
+ VERSION = "0.3.11".freeze
4
4
  end
5
5
  end
@@ -34,10 +34,9 @@ Gem::Specification.new do |spec|
34
34
  spec.add_runtime_dependency "concurrent-ruby"
35
35
  spec.add_runtime_dependency "glossarist", "~> 0.1.0"
36
36
  spec.add_runtime_dependency "ptools"
37
- spec.add_runtime_dependency "reverse_adoc", ">= 0.2.9"
37
+ spec.add_runtime_dependency "reverse_adoc", ">= 0.3.5"
38
38
  spec.add_runtime_dependency "thor", ">= 0.20.3"
39
- spec.add_development_dependency "byebug", "~> 11.1"
40
- spec.add_development_dependency "rubocop", "1.12"
39
+ spec.add_development_dependency "rubocop"
41
40
  spec.add_development_dependency "rubocop-performance"
42
41
  spec.add_development_dependency "rubocop-rails"
43
42
  end
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.7
4
+ version: 0.3.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-19 00:00:00.000000000 Z
11
+ date: 2021-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.9
61
+ version: 0.3.5
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 0.2.9
68
+ version: 0.3.5
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,34 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.20.3
83
- - !ruby/object:Gem::Dependency
84
- name: byebug
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '11.1'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '11.1'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rubocop
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
- - - '='
87
+ - - ">="
102
88
  - !ruby/object:Gem::Version
103
- version: '1.12'
89
+ version: '0'
104
90
  type: :development
105
91
  prerelease: false
106
92
  version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
- - - '='
94
+ - - ">="
109
95
  - !ruby/object:Gem::Version
110
- version: '1.12'
96
+ version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: rubocop-performance
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -236,7 +222,7 @@ homepage: https://github.com/metanorma/stepmod-utils
236
222
  licenses:
237
223
  - BSD-2-Clause
238
224
  metadata: {}
239
- post_install_message:
225
+ post_install_message:
240
226
  rdoc_options: []
241
227
  require_paths:
242
228
  - lib
@@ -251,8 +237,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
251
237
  - !ruby/object:Gem::Version
252
238
  version: '0'
253
239
  requirements: []
254
- rubygems_version: 3.0.3
255
- signing_key:
240
+ rubygems_version: 3.0.3.1
241
+ signing_key:
256
242
  specification_version: 4
257
243
  summary: Stepmod-utils is a toolkit that works on STEPmod data.
258
244
  test_files: []