stepmod-utils 0.3.21 → 0.3.23

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d50ed47ffc263b007aa9f2bda3bf5535d9cf84dbc56f1fc87c63d4255ed3f02
4
- data.tar.gz: 3572d73a116953f337ac8add7bb47133f33ab3244daa6f3ee58e9901f26cb5f1
3
+ metadata.gz: 96740d6528de476007a4f312fa8889887e77a27d4a693924531813188a3cd60b
4
+ data.tar.gz: 867240182ffe77c721fe7ffa8ee53b77383db9954cffa9c4de723e652ec90780
5
5
  SHA512:
6
- metadata.gz: 5263394029779a53cca0c8f41171eb5bbc8e2490de14041c4e6ae56f8880a0f4eff49c1235d43d69f0d34501e5ae372a4c77bbfeb459147765fd87f81014d7dd
7
- data.tar.gz: 6aab6c46a9023e194fe278cedd353807d070eba8c61949777af13ff63a26d3f652a304575cfc56873b54fd57187347a1321df40d7527905320689664da89991c
6
+ metadata.gz: 6e5b71123d326d72e7f6f64269238e2c0db08cec4033794a1a104088d8ae3c0b7e9b005b2551bb2541b06d676fb6959120a7bd1aac30c3cc63068e581206d8c3
7
+ data.tar.gz: 9aba582cd94d7c7b85fd9bc8ad2e718c0bf23f6609a86de46393c55a85bda496fecbe9f8c847fd073a5aa1ca351148917520a490d695769fde21d118428fbe98
@@ -13,7 +13,7 @@ resource_docs_cache_file = `mktemp`
13
13
  # annotate each file
14
14
  files = `"#{File.join(__dir__,
15
15
  "stepmod-find-express-files")}" "#{stepmod_dir}"`.strip.split("\n")
16
- MAX_THREADS = [2, Concurrent.processor_count].max * 2
16
+ MAX_THREADS = 1 #[2, Concurrent.processor_count].max * 2
17
17
  MAX_QUEUE_SIZE = MAX_THREADS * 4
18
18
  # https://github.com/ruby-concurrency/concurrent-ruby/blob/master/docs-source/thread_pools.md
19
19
  pool = Concurrent::ThreadPoolExecutor.new(
@@ -94,14 +94,22 @@ IMAGE_REPLACEMENTS = {
94
94
  'image::eq01.gif[]' => 'stem:[H(A,B) = max {h(A, B), h(B,A)}]',
95
95
  'image::eq02.gif[]' => 'stem:[max_{a in A} { min_{b in B} d(a,b) }]',
96
96
  'image::vector_z_c.gif[]' => 'stem:[bar z_{c}]',
97
- 'image::one_direction_repeat_factor_expression.gif[]' => 'stem:[I + k cdot R;  k = -1, 1]',
98
- '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]'
97
+ 'image::one_direction_repeat_factor_expression.gif[]' => 'stem:[I + k cdot R; k = -1, 1]',
98
+ '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]',
99
99
  }
100
100
 
101
- def replace_images(content)
101
+ TEXT_REPLACEMENTS = {
102
+ ' (see <module_ref linkend="ply_orientation_specification:4_entities:figure:f2"> Figure 2</module_ref>)' => '',
103
+ ' (see <module_ref linkend="ply_orientation_specification:4_entities:figure:f3"> Figure 3</module_ref>)' => ''
104
+ }
105
+
106
+ def replace_content(content)
102
107
  IMAGE_REPLACEMENTS.each_pair do |k, v|
103
108
  content.gsub!(k, v)
104
109
  end
110
+ TEXT_REPLACEMENTS.each_pair do |k, v|
111
+ content.gsub!(k, v)
112
+ end
105
113
 
106
114
  content
107
115
  end
@@ -137,7 +145,7 @@ part_resources.each do |(bibdata, current_part_resources)|
137
145
  fn = "04x-stepmod-entities-resources-#{bibdata.part}.adoc"
138
146
  File.open(fn, "w") do |file|
139
147
  # file.puts("== #{part_to_title(bibdata)}\n\n")
140
- file.puts(replace_images(current_part_resources.map(&:to_mn_adoc).join("\n")))
148
+ file.puts(replace_content(current_part_resources.map(&:to_mn_adoc).join("\n")))
141
149
  end
142
150
  log "INFO: written to: #{fn}"
143
151
  end
@@ -181,7 +189,7 @@ end.each do |(bibdata, part_modules_arm, part_modules_mim)|
181
189
  n.localizations["en"]
182
190
  end
183
191
  file.puts("== #{schema_name}\n\n")
184
- file.puts(replace_images(concepts.map(&:to_mn_adoc).join("\n")))
192
+ file.puts(replace_content(concepts.map(&:to_mn_adoc).join("\n")))
185
193
  end
186
194
  end
187
195
 
@@ -214,7 +222,7 @@ log "INFO: written summary file to: 05x-stepmod-entities-modules.adoc"
214
222
 
215
223
  File.open("041-stepmod-entities-resources.adoc", "w") do |file|
216
224
  file.puts(
217
- replace_images(
225
+ replace_content(
218
226
  resource_concepts.to_a.map do |n|
219
227
  n.localizations["en"]
220
228
  end.map(&:to_mn_adoc).join("\n")
@@ -17,7 +17,7 @@ module Stepmod
17
17
  converted_definition = Stepmod::Utils::StepmodDefinitionConverter.convert(
18
18
  definition_xml,
19
19
  {
20
- # We don't want examples and notes
20
+ # We don't want examples, notes, figures and tables
21
21
  no_notes_examples: true,
22
22
  reference_anchor: reference_anchor,
23
23
  },
@@ -87,7 +87,7 @@ module Stepmod
87
87
  .convert(
88
88
  Nokogiri::XML(wrapper).root,
89
89
  {
90
- # We don't want examples and notes
90
+ # We don't want examples, notes, figures and tables
91
91
  no_notes_examples: true,
92
92
  reference_anchor: reference_anchor,
93
93
  },
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ require_relative "./figure"
3
+
4
+ module Stepmod
5
+ module Utils
6
+ module Converters
7
+ class ExpressFigure < Stepmod::Utils::Converters::Figure
8
+
9
+ # def self.pattern(state, id)
10
+ # "figure-exp-#{id}"
11
+ # end
12
+
13
+ def convert(node, state = {})
14
+ <<~TEMPLATE
15
+ (*"#{state[:schema_and_entity]}.__figure"
16
+ #{super(node, state.merge(no_notes_examples: nil)).strip}
17
+ *)
18
+ TEMPLATE
19
+ end
20
+ end
21
+
22
+ ReverseAdoc::Converters.register :express_figure, ExpressFigure.new
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ require_relative "./table"
3
+
4
+ module Stepmod
5
+ module Utils
6
+ module Converters
7
+ class ExpressTable < Stepmod::Utils::Converters::Table
8
+
9
+ # def self.pattern(id)
10
+ # "table-exp-#{id}"
11
+ # end
12
+
13
+ def convert(node, state = {})
14
+ <<~TEMPLATE
15
+ (*"#{state[:schema_and_entity]}.__table"
16
+ #{super(node, state.merge(no_notes_examples: nil)).strip}
17
+ *)
18
+ TEMPLATE
19
+ end
20
+ end
21
+
22
+ ReverseAdoc::Converters.register :express_table, ExpressTable.new
23
+ end
24
+ end
25
+ end
@@ -6,13 +6,31 @@ module Stepmod
6
6
  module Utils
7
7
  module Converters
8
8
  class Figure < ReverseAdoc::Converters::Figure
9
+
10
+ def self.pattern(state, id)
11
+ if state[:schema_and_entity].nil?
12
+ raise StandardError.new("[figure]: no state given, #{id}")
13
+ end
14
+
15
+ schema = state[:schema_and_entity].split(".").first
16
+ "figure-#{schema}-#{id}"
17
+ end
18
+
9
19
  def convert(node, state = {})
10
20
  # If we want to skip this node
11
21
  return "" if state[:no_notes_examples]
12
22
 
13
- super
23
+ # Set ID to "figure-id" in case of conflicts
24
+ node['id'] = if node['id']
25
+ self.class.pattern(state, node['id'])
26
+ else
27
+ self.class.pattern(state, node['number'])
28
+ end
29
+
30
+ super(node, state)
14
31
  end
15
32
  end
33
+
16
34
  # This replaces the converter
17
35
  ReverseAdoc::Converters.register :figure, Figure.new
18
36
  end
@@ -5,31 +5,69 @@ module Stepmod
5
5
  module Converters
6
6
  class ModuleRef < ReverseAdoc::Converters::Base
7
7
  def convert(node, _state = {})
8
- ref = node["linkend"]
9
- # #23:
10
- # In this case when we see this:
8
+ link_end = node["linkend"].to_s.split(":")
9
+ ref_id = link_end.last
10
+ parts = link_end.last.split(".")
11
+ text = node.text.gsub(/\s/, " ").squeeze(" ").strip
12
+ schema = link_end.first
11
13
 
12
- # <module_ref linkend="product_as_individual:3_definition">individual products</module_ref>
13
- # We take the text value of the element and convert to this:
14
+ if _state[:schema_and_entity].nil?
15
+ # puts "[module_ref] setting node state #{link_end.inspect}"
16
+ _state[:schema_and_entity] = schema
17
+ end
18
+
19
+ result = case link_end[1]
20
+ when "1_scope", "introduction"
21
+ # When we see this:
22
+ # <module_ref linkend="functional_usage_view:1_scope">Functional usage view</module_ref>
23
+ # <module_ref linkend="part_definition_relationship:introduction"> Part definition relationship</module_ref>
24
+ # We convert into:
25
+ # <<express:functional_usage_view>>
26
+ # <<express:part_definition_relationship>>
27
+
28
+ "<<express:#{schema}>>"
29
+
30
+ when "3_definition"
31
+ # #23:
32
+ # When we see this:
33
+ # <module_ref linkend="product_as_individual:3_definition">individual products</module_ref>
34
+ # We convert to this:
35
+ # {{individual products}}
14
36
 
15
- # {{individual products}}
37
+ "{{#{text}}}"
16
38
 
17
- ref = node.text.strip
18
- if !ref.empty?
19
- " {{#{normalized_ref(ref)}}} "
20
- elsif
21
- ref = node["linkend"].split(":").first
22
- " *#{ref}* "
39
+ when "4_types"
40
+ # When we see this:
41
+ # <module_ref linkend="activity_method_assignment:4_types">activity_method_item</module_ref>
42
+ # We convert to this:
43
+ # <<express:activity_method_assignment.activity_method_item>>
44
+ "<<express:#{[schema, text].join('.')},#{text}>>"
45
+ when "4_entities", "f_usage_guide"
46
+ case link_end[2]
47
+ when "figure"
48
+ # When we see this:
49
+ # <module_ref linkend="assembly_module_design:4_entities:figure:pudv">Figure 1</module_ref>
50
+ # We convert to this:
51
+ # <<figure-pudv,Figure 1>>
52
+ "<<#{Figure.pattern(_state,ref_id)},#{text}>>"
53
+ when "table"
54
+ # When we see this:
55
+ # <module_ref linkend="independent_property_definition:4_entities:table:T1">Table 1</module_ref>
56
+ # We convert to this:
57
+ # <<table-T1,Table 1>>
58
+ "<<#{Table.pattern(_state,ref_id)},#{text}>>"
59
+ end
60
+ else
61
+ puts "[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(":")}"
62
+ raise StandardError.new("[module_ref]: encountered unknown <module_ref> tag, #{link_end.join(":")}")
23
63
  end
64
+
65
+ # puts "[module_ref] #{result}"
66
+ result
24
67
  end
25
68
 
26
69
  private
27
70
 
28
- def normalized_ref(ref)
29
- return unless ref || ref.empty?
30
-
31
- ref.squeeze(" ").strip
32
- end
33
71
  end
34
72
  ReverseAdoc::Converters.register :module_ref, ModuleRef.new
35
73
  end
@@ -1,10 +1,52 @@
1
+
2
+ require "stepmod/utils/converters/figure"
3
+ require "stepmod/utils/converters/table"
4
+
1
5
  module Stepmod
2
6
  module Utils
3
7
  module Converters
4
8
  class ModuleRefExpressDescription < ReverseAdoc::Converters::Base
5
9
  def convert(node, _state = {})
6
- parts = node["linkend"].to_s.split(":").last.split(".")
7
- "<<express:#{parts.join('.').strip},#{parts.last.strip}>>"
10
+ link_end = node["linkend"].to_s.split(":")
11
+ ref_id = link_end.last
12
+ parts = link_end.last.split(".")
13
+ text = node.text.gsub(/\s/, " ").squeeze(" ").strip
14
+
15
+ # puts "linkend #{node["linkend"]}"
16
+
17
+ result = case link_end[1]
18
+ when "1_scope", "introduction"
19
+ # When we see this:
20
+ # <module_ref linkend="functional_usage_view:1_scope">Functional usage view</module_ref>
21
+ # <module_ref linkend="part_definition_relationship:introduction"> Part definition relationship</module_ref>
22
+ # We convert into:
23
+ # <<express:functional_usage_view>>
24
+ # <<express:part_definition_relationship>>
25
+
26
+ "<<express:#{link_end.first}>>"
27
+
28
+ when "3_definition"
29
+ # #23:
30
+ # When we see this:
31
+ # <module_ref linkend="product_as_individual:3_definition">individual products</module_ref>
32
+ # We convert to this:
33
+ # {{individual products}}
34
+
35
+ "{{#{text}}}"
36
+
37
+ when "4_types"
38
+ # ISO 10303-2 does not contain TYPEs, ignore
39
+ ""
40
+ when "4_entities", "f_usage_guide"
41
+ # ISO 10303-2 does not contain figures and tables, ignore
42
+ ""
43
+ 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(":")}")
46
+ end
47
+
48
+ # puts "[module_ref] #{result}"
49
+ result
8
50
  end
9
51
  end
10
52
  ReverseAdoc::Converters.register :module_ref,
@@ -4,9 +4,22 @@ module Stepmod
4
4
  module Utils
5
5
  module Converters
6
6
  class Table < ReverseAdoc::Converters::Base
7
+
8
+ def self.pattern(state, id)
9
+ if state[:schema_and_entity].nil?
10
+ raise StandardError.new("[table]: no state given, #{id}")
11
+ end
12
+
13
+ schema = state[:schema_and_entity].split(".").first
14
+ "table-#{schema}-#{id}"
15
+ end
16
+
7
17
  def convert(node, state = {})
18
+ # If we want to skip this node
19
+ return "" if state[:no_notes_examples]
20
+
8
21
  id = node["id"]
9
- anchor = id ? "[[#{id}]]\n" : ""
22
+ anchor = id ? "[[table-#{self.class.pattern(state, id)}]]\n" : ""
10
23
  title = node["caption"].to_s
11
24
  title = ".#{title}\n" unless title.empty?
12
25
  attrs = style(node)
@@ -15,6 +15,7 @@ require "stepmod/utils/converters/ext_descriptions"
15
15
  require "stepmod/utils/converters/head"
16
16
  require "stepmod/utils/converters/hr"
17
17
  require "stepmod/utils/converters/ignore"
18
+ require "stepmod/utils/converters/module_ref_express_description"
18
19
  require "stepmod/utils/converters/note"
19
20
  require "stepmod/utils/converters/p"
20
21
  require "stepmod/utils/converters/pass_through"
@@ -15,6 +15,7 @@ require "stepmod/utils/converters/dt"
15
15
  require "stepmod/utils/converters/drop"
16
16
  require "stepmod/utils/converters/example"
17
17
  require "stepmod/utils/converters/express_g"
18
+ require "stepmod/utils/converters/figure"
18
19
  require "stepmod/utils/converters/fund_cons"
19
20
  require "stepmod/utils/converters/eqn"
20
21
  require "stepmod/utils/converters/head"
@@ -25,6 +26,7 @@ require "stepmod/utils/converters/note"
25
26
  require "stepmod/utils/converters/ol"
26
27
  require "stepmod/utils/converters/p"
27
28
  require "stepmod/utils/converters/pass_through"
29
+ require "stepmod/utils/converters/module_ref"
28
30
  require "stepmod/utils/converters/q"
29
31
  require "stepmod/utils/converters/resource"
30
32
  require "stepmod/utils/converters/schema_diag"
@@ -36,7 +38,6 @@ require "stepmod/utils/converters/table"
36
38
  require "stepmod/utils/converters/text"
37
39
  require "stepmod/utils/cleaner"
38
40
 
39
- require "reverse_adoc/converters/figure"
40
41
  require "reverse_adoc/converters/img"
41
42
  require "reverse_adoc/converters/li"
42
43
  require "reverse_adoc/converters/tr"
@@ -17,6 +17,7 @@ require "stepmod/utils/converters/term"
17
17
  require "stepmod/utils/converters/synonym"
18
18
  require "stepmod/utils/converters/uof"
19
19
  require "stepmod/utils/converters/figure"
20
+ require "stepmod/utils/converters/table"
20
21
  require "stepmod/utils/cleaner"
21
22
 
22
23
  require "reverse_adoc/converters/a"
@@ -3,6 +3,8 @@ require "stepmod/utils/smrl_description_converter"
3
3
  require "stepmod/utils/smrl_resource_converter"
4
4
  require "stepmod/utils/converters/express_note"
5
5
  require "stepmod/utils/converters/express_example"
6
+ require "stepmod/utils/converters/express_figure"
7
+ require "stepmod/utils/converters/express_table"
6
8
 
7
9
  module Stepmod
8
10
  module Utils
@@ -59,6 +61,9 @@ module Stepmod
59
61
  end
60
62
 
61
63
  output_express
64
+ rescue StandardError => e
65
+ puts "[ERROR]!!! #{e.message}"
66
+ puts e.backtrace
62
67
  end
63
68
 
64
69
  private
@@ -68,16 +73,28 @@ module Stepmod
68
73
  wrapper = "<ext_descriptions>#{description}</ext_descriptions>"
69
74
  notes = description.xpath("note")
70
75
  examples = description.xpath("example")
76
+ figures = description.xpath("figure")
77
+ tables = description.xpath("table")
71
78
 
72
79
  converted_description = <<~DESCRIPTION
73
80
 
74
81
  #{Stepmod::Utils::SmrlDescriptionConverter.convert(wrapper, no_notes_examples: true)}
75
82
  DESCRIPTION
76
83
 
77
- converted_examples = examples.map do |example|
78
- Stepmod::Utils::Converters::ExpressExample
84
+ if description["linkend"].nil?
85
+ raise StandardError.new("[stepmod-file-annotator] ERROR: no linkend for #{descriptions_file}!")
86
+ end
87
+
88
+ converted_figures = figures.map do |figure|
89
+ Stepmod::Utils::Converters::ExpressFigure
79
90
  .new
80
- .convert(example, schema_and_entity: description["linkend"])
91
+ .convert(figure, schema_and_entity: description["linkend"])
92
+ end.join
93
+
94
+ converted_tables = tables.map do |table|
95
+ Stepmod::Utils::Converters::ExpressTable
96
+ .new
97
+ .convert(table, schema_and_entity: description["linkend"])
81
98
  end.join
82
99
 
83
100
  converted_notes = notes.map do |note|
@@ -86,20 +103,39 @@ module Stepmod
86
103
  .convert(note, schema_and_entity: description["linkend"])
87
104
  end.join
88
105
 
89
- "#{converted_description}#{converted_examples}#{converted_notes}"
106
+ converted_examples = examples.map do |example|
107
+ Stepmod::Utils::Converters::ExpressExample
108
+ .new
109
+ .convert(example, schema_and_entity: description["linkend"])
110
+ end.join
111
+
112
+ [
113
+ converted_description,
114
+ converted_figures,
115
+ converted_tables,
116
+ converted_examples,
117
+ converted_notes,
118
+ ].join("")
90
119
  end
91
120
  end
92
121
 
93
122
  def convert_from_resource_file(resource_docs_dir, stepmod_dir, linked, descriptions_file)
94
123
  resource_docs_file = File.join(stepmod_dir, "data/resource_docs",
95
124
  resource_docs_dir, "resource.xml")
96
- puts(resource_docs_file)
125
+ # puts(resource_docs_file)
97
126
  resource_docs = Nokogiri::XML(File.read(resource_docs_file)).root
98
127
  schema = resource_docs.xpath("schema[@name='#{linked}']")
99
128
 
100
129
  Dir.chdir(File.dirname(descriptions_file)) do
101
130
  wrapper = "<resource>#{schema}</resource>"
102
- "\n#{Stepmod::Utils::SmrlResourceConverter.convert(wrapper, no_notes_examples: true)}"
131
+
132
+ "\n" + Stepmod::Utils::SmrlResourceConverter.convert(
133
+ wrapper,
134
+ {
135
+ no_notes_examples: false,
136
+ schema_and_entity: linked
137
+ }
138
+ )
103
139
  end
104
140
  end
105
141
  end
@@ -476,44 +476,36 @@ module Stepmod
476
476
  entity_id.downcase.gsub(/_/, " ")
477
477
  end
478
478
 
479
+ # No longer used
480
+ # def entity_ref(entity_id)
481
+ # if entity_id == entity_name_to_text(entity_id)
482
+ # "{{#{entity_id}}}"
483
+ # else
484
+ # "{{#{entity_id},#{entity_name_to_text(entity_id)}}}"
485
+ # end
486
+ # end
487
+
479
488
  # rubocop:disable Layout/LineLength
480
489
  def generate_entity_definition(entity, domain, old_definition)
481
490
  return "" if entity.nil?
482
491
 
483
492
  # See: metanorma/iso-10303-2#90
484
- # TODO: This is not DRY in case we have to further customize
485
- entity_text = if domain_type = domain.match(/\A(application object):/)
486
-
487
- entity_ref = if entity.id == entity_name_to_text(entity.id)
488
- "{{#{entity.id}}}"
489
- else
490
- "{{#{entity.id},#{entity_name_to_text(entity.id)}}}"
491
- end
492
-
493
- if entity.subtype_of.size.zero?
494
- "#{domain_type[1]} that represents the " + entity_ref + " entity"
495
- else
496
- entity_subtypes = entity.subtype_of.map do |e|
497
- "{{#{e.id},#{entity_name_to_text(e.id)}}}"
498
- end
499
- "#{domain_type[1]} that is a type of " +
500
- "#{entity_subtypes.join(' and ')} that represents the " +
501
- entity_ref + " entity"
502
- end
503
-
493
+ entity_type = if domain_type = domain.match(/\A(application object):/)
494
+ "{{#{domain_type[1]}}}"
504
495
  else
496
+ "{{entity data type}}"
497
+ end
505
498
 
506
- # Not "application object"
507
- if entity.subtype_of.size.zero?
508
- "entity data type that represents the {{#{entity.id}}} entity"
509
- else
510
- entity_subtypes = entity.subtype_of.map do |e|
511
- "{{#{e.id}}}"
512
- end
513
- "entity data type that is a type of " +
514
- "#{entity_subtypes.join(' and ')} that represents the " +
515
- "{{#{entity.id}}} entity"
499
+ entity_text = if entity.subtype_of.size.zero?
500
+ "#{entity_type} " +
501
+ "that represents the " + entity_name_to_text(entity.id) + " {{entity}}"
502
+ else
503
+ entity_subtypes = entity.subtype_of.map do |e|
504
+ "{{#{e.id}}}"
516
505
  end
506
+ "#{entity_type} that is a type of " +
507
+ "#{entity_subtypes.join(' and ')} " +
508
+ "that represents the " + entity_name_to_text(entity.id) + " {{entity}}"
517
509
  end
518
510
 
519
511
  definition = <<~DEFINITION
@@ -1,5 +1,5 @@
1
1
  module Stepmod
2
2
  module Utils
3
- VERSION = "0.3.21".freeze
3
+ VERSION = "0.3.23".freeze
4
4
  end
5
5
  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.21
4
+ version: 0.3.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-12 00:00:00.000000000 Z
11
+ date: 2022-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -207,10 +207,12 @@ files:
207
207
  - lib/stepmod/utils/converters/eqn.rb
208
208
  - lib/stepmod/utils/converters/example.rb
209
209
  - lib/stepmod/utils/converters/express_example.rb
210
+ - lib/stepmod/utils/converters/express_figure.rb
210
211
  - lib/stepmod/utils/converters/express_g.rb
211
212
  - lib/stepmod/utils/converters/express_note.rb
212
213
  - lib/stepmod/utils/converters/express_ref.rb
213
214
  - lib/stepmod/utils/converters/express_ref_express_description.rb
215
+ - lib/stepmod/utils/converters/express_table.rb
214
216
  - lib/stepmod/utils/converters/ext_description.rb
215
217
  - lib/stepmod/utils/converters/ext_descriptions.rb
216
218
  - lib/stepmod/utils/converters/figure.rb