stepmod-utils 0.3.2 → 0.3.8
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/.github/workflows/rake.yml +1 -11
- data/.github/workflows/release.yml +7 -5
- data/.hound.yml +5 -0
- data/.rubocop.yml +10 -0
- 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 +69 -236
- 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 +86 -30
- 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 +30 -22
- 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 +12 -2
- 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 +4 -2
- data/lib/stepmod/utils/converters/figure.rb +20 -0
- 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 +11 -7
- data/lib/stepmod/utils/converters/note.rb +12 -2
- 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 +30 -7
- 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 +12 -14
- data/lib/stepmod/utils/converters/uof.rb +11 -7
- 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 +51 -50
- data/lib/stepmod/utils/stepmod_definition_converter.rb +39 -37
- data/lib/stepmod/utils/stepmod_file_annotator.rb +26 -19
- data/lib/stepmod/utils/terms_extractor.rb +378 -0
- data/lib/stepmod/utils/version.rb +1 -1
- data/stepmod-utils.gemspec +12 -6
- metadata +80 -20
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module Stepmod
|
|
2
2
|
module Utils
|
|
3
|
-
|
|
4
3
|
class Bibdata
|
|
5
|
-
|
|
6
4
|
DOCNUMBER = 10303
|
|
7
5
|
|
|
8
6
|
attr_accessor *%w(
|
|
@@ -15,23 +13,25 @@ module Stepmod
|
|
|
15
13
|
# module, resource, application_protocol, business_object_model
|
|
16
14
|
@type = document.name
|
|
17
15
|
|
|
18
|
-
raise
|
|
16
|
+
raise "UnknownFileError" unless %w(module resource
|
|
17
|
+
application_protocol business_object_model).include?(@type)
|
|
19
18
|
|
|
20
|
-
@doctype = document[
|
|
21
|
-
@part = document[
|
|
22
|
-
@title_en = document[
|
|
23
|
-
document[
|
|
24
|
-
|
|
25
|
-
@
|
|
26
|
-
@
|
|
19
|
+
@doctype = document["status"]
|
|
20
|
+
@part = document["part"]
|
|
21
|
+
@title_en = document["title"] ||
|
|
22
|
+
document["name"].gsub("_", " ").capitalize.gsub("2d", "2D").gsub("3d",
|
|
23
|
+
"3D")
|
|
24
|
+
@title_fr = document["name.french"]
|
|
25
|
+
@version = document["version"]
|
|
26
|
+
@language = document["language"]
|
|
27
27
|
|
|
28
28
|
# Some publication.year contains month...
|
|
29
|
-
@pub_year = document[
|
|
30
|
-
@pub_date = document[
|
|
29
|
+
@pub_year = document["publication.year"].split("-").first
|
|
30
|
+
@pub_date = document["publication.date"]
|
|
31
31
|
|
|
32
32
|
# puts to_mn_adoc
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
self
|
|
35
35
|
# <module
|
|
36
36
|
# name="security_classification"
|
|
37
37
|
# name.french="Classification des sécurités"
|
|
@@ -54,28 +54,27 @@ module Stepmod
|
|
|
54
54
|
# rcs.revision="$Revision: 1.26 $"
|
|
55
55
|
# development.folder="dvlp"
|
|
56
56
|
# >
|
|
57
|
-
|
|
58
57
|
end
|
|
59
58
|
|
|
60
59
|
def docid
|
|
61
60
|
no_date = case doctype
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
61
|
+
when "IS"
|
|
62
|
+
"ISO #{DOCNUMBER}-#{part}"
|
|
63
|
+
when "WD"
|
|
64
|
+
"ISO/WD #{DOCNUMBER}-#{part}"
|
|
65
|
+
when "CD"
|
|
66
|
+
"ISO/CD #{DOCNUMBER}-#{part}"
|
|
67
|
+
when "DIS"
|
|
68
|
+
"ISO/DIS #{DOCNUMBER}-#{part}"
|
|
69
|
+
when "FDIS"
|
|
70
|
+
"ISO/FDIS #{DOCNUMBER}-#{part}"
|
|
71
|
+
when "TS"
|
|
72
|
+
"ISO/TS #{DOCNUMBER}-#{part}"
|
|
73
|
+
when "CD-TS"
|
|
74
|
+
"ISO/CD TS #{DOCNUMBER}-#{part}"
|
|
75
|
+
else
|
|
76
|
+
"UNKNOWN DOCTYPE: (#{doctype})"
|
|
77
|
+
end
|
|
79
78
|
|
|
80
79
|
if pub_year
|
|
81
80
|
"#{no_date}:#{pub_year}"
|
|
@@ -106,7 +105,7 @@ module Stepmod
|
|
|
106
105
|
end
|
|
107
106
|
|
|
108
107
|
def anchor
|
|
109
|
-
docid.gsub(
|
|
108
|
+
docid.gsub("/", "-").gsub(" ", "_").gsub(":", "_")
|
|
110
109
|
end
|
|
111
110
|
|
|
112
111
|
def to_mn_adoc
|
|
@@ -116,9 +115,6 @@ module Stepmod
|
|
|
116
115
|
"* [[[#{anchor},#{docid}]]]"
|
|
117
116
|
end
|
|
118
117
|
end
|
|
119
|
-
|
|
120
118
|
end
|
|
121
|
-
|
|
122
119
|
end
|
|
123
120
|
end
|
|
124
|
-
|
|
@@ -1,58 +1,114 @@
|
|
|
1
|
+
require "glossarist"
|
|
2
|
+
|
|
1
3
|
module Stepmod
|
|
2
4
|
module Utils
|
|
3
|
-
|
|
4
|
-
class Concept
|
|
5
|
+
class Concept < Glossarist::LocalizedConcept
|
|
5
6
|
attr_accessor *%w(
|
|
6
|
-
designation
|
|
7
|
-
definition
|
|
8
|
-
reference_anchor
|
|
9
7
|
reference_clause
|
|
10
|
-
|
|
11
|
-
notes
|
|
12
|
-
synonym
|
|
8
|
+
reference_anchor
|
|
13
9
|
converted_definition
|
|
14
10
|
file_path
|
|
15
11
|
)
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
class << self
|
|
14
|
+
def parse(definition_xml, reference_anchor:, reference_clause:, file_path:, language_code: "en")
|
|
15
|
+
converted_definition = Stepmod::Utils::StepmodDefinitionConverter.convert(
|
|
16
|
+
definition_xml,
|
|
17
|
+
{
|
|
18
|
+
# We don't want examples and notes
|
|
19
|
+
no_notes_examples: true,
|
|
20
|
+
reference_anchor: reference_anchor,
|
|
21
|
+
},
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
return nil if converted_definition.nil? || converted_definition.strip.empty?
|
|
25
|
+
|
|
26
|
+
if definition_xml.name == "ext_description"
|
|
27
|
+
converted_definition = <<~TEXT
|
|
28
|
+
#{converted_definition}
|
|
29
|
+
|
|
30
|
+
NOTE: This term is incompletely defined in this document.
|
|
31
|
+
Reference <<#{reference_anchor}>> for the complete definition.
|
|
32
|
+
TEXT
|
|
33
|
+
end
|
|
34
|
+
# https://github.com/metanorma/stepmod-utils/issues/86
|
|
35
|
+
if definition_xml.name == "definition"
|
|
36
|
+
designation = definition_designation(definition_xml)
|
|
37
|
+
definition = definition_xml_definition(definition_xml,
|
|
38
|
+
reference_anchor)
|
|
39
|
+
converted_definition = definition_xml_converted_definition(
|
|
40
|
+
designation, definition
|
|
41
|
+
).strip
|
|
42
|
+
end
|
|
43
|
+
new(
|
|
44
|
+
designations: [designation],
|
|
45
|
+
definition: definition,
|
|
46
|
+
converted_definition: converted_definition,
|
|
47
|
+
id: "#{reference_anchor}.#{reference_clause}",
|
|
48
|
+
reference_anchor: reference_anchor,
|
|
49
|
+
reference_clause: reference_clause,
|
|
50
|
+
file_path: file_path,
|
|
51
|
+
language_code: language_code,
|
|
52
|
+
)
|
|
20
53
|
end
|
|
21
|
-
end
|
|
22
54
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
55
|
+
def definition_designation(definition_xml)
|
|
56
|
+
alts = definition_xml.xpath(".//def/p").map(&:text)
|
|
57
|
+
{
|
|
58
|
+
accepted: definition_xml.xpath(".//term").first&.text,
|
|
59
|
+
alt: alts,
|
|
60
|
+
}
|
|
61
|
+
end
|
|
26
62
|
|
|
27
|
-
|
|
63
|
+
def definition_xml_definition(definition_xml, reference_anchor)
|
|
64
|
+
text_nodes = definition_xml
|
|
65
|
+
.xpath(".//def")
|
|
66
|
+
.first
|
|
67
|
+
.children
|
|
68
|
+
.reject { |n| n.name == "p" }
|
|
69
|
+
wrapper = "<def>#{text_nodes.map(&:to_s).join}</def>"
|
|
70
|
+
Stepmod::Utils::Converters::Def
|
|
71
|
+
.new
|
|
72
|
+
.convert(
|
|
73
|
+
Nokogiri::XML(wrapper).root,
|
|
74
|
+
{
|
|
75
|
+
# We don't want examples and notes
|
|
76
|
+
no_notes_examples: true,
|
|
77
|
+
reference_anchor: reference_anchor,
|
|
78
|
+
},
|
|
79
|
+
)
|
|
80
|
+
end
|
|
28
81
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
#{
|
|
82
|
+
def definition_xml_converted_definition(designation, definition)
|
|
83
|
+
if designation[:alt].length.positive?
|
|
84
|
+
alt_notation = "alt:[#{designation[:alt].map(&:strip).join(',')}]"
|
|
85
|
+
end
|
|
86
|
+
result = <<~TEXT
|
|
87
|
+
=== #{designation[:accepted]}
|
|
88
|
+
TEXT
|
|
89
|
+
if alt_notation
|
|
90
|
+
result += <<~TEXT
|
|
32
91
|
|
|
33
|
-
|
|
34
|
-
|
|
92
|
+
#{alt_notation}
|
|
93
|
+
TEXT
|
|
94
|
+
end
|
|
95
|
+
<<~TEXT
|
|
96
|
+
#{result}
|
|
97
|
+
#{definition}
|
|
35
98
|
TEXT
|
|
36
99
|
end
|
|
37
|
-
new(
|
|
38
|
-
converted_definition: converted_definition,
|
|
39
|
-
reference_anchor: reference_anchor,
|
|
40
|
-
reference_clause: reference_clause,
|
|
41
|
-
file_path: file_path
|
|
42
|
-
)
|
|
43
100
|
end
|
|
44
101
|
|
|
45
102
|
def to_mn_adoc
|
|
46
103
|
<<~TEXT
|
|
47
|
-
// STEPmod path
|
|
104
|
+
// STEPmod path:#{!file_path.empty? ? " #{file_path}" : ''}
|
|
48
105
|
#{converted_definition}
|
|
49
106
|
|
|
50
107
|
[.source]
|
|
51
|
-
<<#{reference_anchor}#{reference_clause ? ",clause
|
|
108
|
+
<<#{reference_anchor}#{reference_clause ? ",clause=#{reference_clause}" : ''}>>
|
|
52
109
|
|
|
53
110
|
TEXT
|
|
54
111
|
end
|
|
55
|
-
|
|
56
112
|
end
|
|
57
113
|
end
|
|
58
114
|
end
|
|
@@ -8,17 +8,17 @@ module Stepmod
|
|
|
8
8
|
class A < ReverseAdoc::Converters::Base
|
|
9
9
|
def convert(node, state = {})
|
|
10
10
|
name = treat_children(node, state)
|
|
11
|
-
href = node[
|
|
11
|
+
href = node["href"]
|
|
12
12
|
title = extract_title(node)
|
|
13
|
-
id = node[
|
|
13
|
+
id = node["id"] || node["name"]
|
|
14
14
|
|
|
15
15
|
id = id&.gsub(/\s/, "")&.gsub(/__+/, "_")
|
|
16
16
|
|
|
17
|
-
if /^_Toc\d+$|^_GoBack$/.match id
|
|
17
|
+
if /^_Toc\d+$|^_GoBack$/.match? id
|
|
18
18
|
""
|
|
19
19
|
elsif !id.nil? && !id.empty?
|
|
20
20
|
"[[#{id}]]"
|
|
21
|
-
elsif href.to_s.start_with?(
|
|
21
|
+
elsif href.to_s.start_with?("#")
|
|
22
22
|
href = href.sub(/^#/, "").gsub(/\s/, "").gsub(/__+/, "_")
|
|
23
23
|
if name.empty?
|
|
24
24
|
"<<#{href}>>"
|
|
@@ -29,16 +29,13 @@ module Stepmod
|
|
|
29
29
|
name
|
|
30
30
|
else
|
|
31
31
|
name = title if name.empty?
|
|
32
|
-
href = "link:#{href}" unless href.to_s
|
|
32
|
+
href = "link:#{href}" unless href.to_s&.match?(URI::DEFAULT_PARSER.make_regexp)
|
|
33
33
|
link = "#{href}[#{name}]"
|
|
34
34
|
# link.prepend(' ')
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
" #{link}"
|
|
36
|
+
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
39
|
end
|
|
43
40
|
|
|
44
41
|
ReverseAdoc::Converters.register :a, A.new
|
|
@@ -5,14 +5,14 @@ module Stepmod
|
|
|
5
5
|
module Converters
|
|
6
6
|
class Blockquote < ReverseAdoc::Converters::Base
|
|
7
7
|
def convert(node, state = {})
|
|
8
|
-
id = node[
|
|
8
|
+
id = node["id"]
|
|
9
9
|
anchor = id ? "[[#{id}]]\n" : ""
|
|
10
|
-
cite = node[
|
|
10
|
+
cite = node["cite"]
|
|
11
11
|
attrs = cite ? "[quote, #{cite}]\n" : ""
|
|
12
12
|
content = treat_children(node, state).strip
|
|
13
13
|
content = ReverseAdoc.cleaner.remove_newlines(content)
|
|
14
|
-
#"\n\n> " << content.lines.to_a.join('> ') << "\n\n"
|
|
15
|
-
"\n\n#{attrs}____\n" << content.lines.to_a.join(
|
|
14
|
+
# "\n\n> " << content.lines.to_a.join('> ') << "\n\n"
|
|
15
|
+
"\n\n#{attrs}____\n" << content.lines.to_a.join("") << "\n____\n\n"
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -16,66 +16,66 @@ module Stepmod
|
|
|
16
16
|
ReverseAdoc::Converters.register :thead, Bypass.new
|
|
17
17
|
ReverseAdoc::Converters.register :tbody, Bypass.new
|
|
18
18
|
ReverseAdoc::Converters.register :tfoot, Bypass.new
|
|
19
|
-
ReverseAdoc::Converters.register :abbr,
|
|
19
|
+
ReverseAdoc::Converters.register :abbr, Bypass.new
|
|
20
20
|
ReverseAdoc::Converters.register :acronym, Bypass.new
|
|
21
21
|
ReverseAdoc::Converters.register :address, Bypass.new
|
|
22
|
-
ReverseAdoc::Converters.register :applet,
|
|
23
|
-
ReverseAdoc::Converters.register :map,
|
|
24
|
-
ReverseAdoc::Converters.register :area,
|
|
22
|
+
ReverseAdoc::Converters.register :applet, Bypass.new
|
|
23
|
+
ReverseAdoc::Converters.register :map, Bypass.new
|
|
24
|
+
ReverseAdoc::Converters.register :area, Bypass.new
|
|
25
25
|
ReverseAdoc::Converters.register :bdi, Bypass.new
|
|
26
26
|
ReverseAdoc::Converters.register :bdo, Bypass.new
|
|
27
27
|
ReverseAdoc::Converters.register :big, Bypass.new
|
|
28
28
|
ReverseAdoc::Converters.register :button, Bypass.new
|
|
29
29
|
ReverseAdoc::Converters.register :canvas, Bypass.new
|
|
30
|
-
ReverseAdoc::Converters.register :data,
|
|
31
|
-
ReverseAdoc::Converters.register :datalist,
|
|
30
|
+
ReverseAdoc::Converters.register :data, Bypass.new
|
|
31
|
+
ReverseAdoc::Converters.register :datalist, Bypass.new
|
|
32
32
|
ReverseAdoc::Converters.register :del, Bypass.new
|
|
33
33
|
ReverseAdoc::Converters.register :ins, Bypass.new
|
|
34
34
|
ReverseAdoc::Converters.register :dfn, Bypass.new
|
|
35
|
-
ReverseAdoc::Converters.register :dialog,
|
|
36
|
-
ReverseAdoc::Converters.register :embed,
|
|
37
|
-
ReverseAdoc::Converters.register :fieldset,
|
|
38
|
-
ReverseAdoc::Converters.register :font,
|
|
39
|
-
ReverseAdoc::Converters.register :footer,
|
|
40
|
-
ReverseAdoc::Converters.register :form,
|
|
41
|
-
ReverseAdoc::Converters.register :frame,
|
|
42
|
-
ReverseAdoc::Converters.register :frameset,
|
|
35
|
+
ReverseAdoc::Converters.register :dialog, Bypass.new
|
|
36
|
+
ReverseAdoc::Converters.register :embed, Bypass.new
|
|
37
|
+
ReverseAdoc::Converters.register :fieldset, Bypass.new
|
|
38
|
+
ReverseAdoc::Converters.register :font, Bypass.new
|
|
39
|
+
ReverseAdoc::Converters.register :footer, Bypass.new
|
|
40
|
+
ReverseAdoc::Converters.register :form, Bypass.new
|
|
41
|
+
ReverseAdoc::Converters.register :frame, Bypass.new
|
|
42
|
+
ReverseAdoc::Converters.register :frameset, Bypass.new
|
|
43
43
|
ReverseAdoc::Converters.register :header, Bypass.new
|
|
44
44
|
ReverseAdoc::Converters.register :iframe, Bypass.new
|
|
45
45
|
ReverseAdoc::Converters.register :input, Bypass.new
|
|
46
46
|
ReverseAdoc::Converters.register :label, Bypass.new
|
|
47
|
-
ReverseAdoc::Converters.register :legend,
|
|
47
|
+
ReverseAdoc::Converters.register :legend, Bypass.new
|
|
48
48
|
ReverseAdoc::Converters.register :main, Bypass.new
|
|
49
49
|
ReverseAdoc::Converters.register :menu, Bypass.new
|
|
50
|
-
ReverseAdoc::Converters.register :menulist,
|
|
51
|
-
ReverseAdoc::Converters.register :meter,
|
|
52
|
-
ReverseAdoc::Converters.register :nav,
|
|
50
|
+
ReverseAdoc::Converters.register :menulist, Bypass.new
|
|
51
|
+
ReverseAdoc::Converters.register :meter, Bypass.new
|
|
52
|
+
ReverseAdoc::Converters.register :nav, Bypass.new
|
|
53
53
|
ReverseAdoc::Converters.register :noframes, Bypass.new
|
|
54
54
|
ReverseAdoc::Converters.register :noscript, Bypass.new
|
|
55
|
-
ReverseAdoc::Converters.register :object,
|
|
56
|
-
ReverseAdoc::Converters.register :optgroup,
|
|
55
|
+
ReverseAdoc::Converters.register :object, Bypass.new
|
|
56
|
+
ReverseAdoc::Converters.register :optgroup, Bypass.new
|
|
57
57
|
ReverseAdoc::Converters.register :option, Bypass.new
|
|
58
58
|
ReverseAdoc::Converters.register :output, Bypass.new
|
|
59
|
-
ReverseAdoc::Converters.register :param,
|
|
60
|
-
ReverseAdoc::Converters.register :picture,
|
|
61
|
-
ReverseAdoc::Converters.register :progress,
|
|
62
|
-
ReverseAdoc::Converters.register :ruby,
|
|
59
|
+
ReverseAdoc::Converters.register :param, Bypass.new
|
|
60
|
+
ReverseAdoc::Converters.register :picture, Bypass.new
|
|
61
|
+
ReverseAdoc::Converters.register :progress, Bypass.new
|
|
62
|
+
ReverseAdoc::Converters.register :ruby, Bypass.new
|
|
63
63
|
ReverseAdoc::Converters.register :rt, Bypass.new
|
|
64
64
|
ReverseAdoc::Converters.register :rp, Bypass.new
|
|
65
|
-
ReverseAdoc::Converters.register :s,
|
|
66
|
-
ReverseAdoc::Converters.register :select,
|
|
67
|
-
ReverseAdoc::Converters.register :small,
|
|
68
|
-
ReverseAdoc::Converters.register :span,
|
|
69
|
-
ReverseAdoc::Converters.register :strike,
|
|
65
|
+
ReverseAdoc::Converters.register :s, Bypass.new
|
|
66
|
+
ReverseAdoc::Converters.register :select, Bypass.new
|
|
67
|
+
ReverseAdoc::Converters.register :small, Bypass.new
|
|
68
|
+
ReverseAdoc::Converters.register :span, Bypass.new
|
|
69
|
+
ReverseAdoc::Converters.register :strike, Bypass.new
|
|
70
70
|
ReverseAdoc::Converters.register :details, Bypass.new
|
|
71
71
|
ReverseAdoc::Converters.register :section, Bypass.new
|
|
72
72
|
ReverseAdoc::Converters.register :summary, Bypass.new
|
|
73
|
-
ReverseAdoc::Converters.register :svg,
|
|
73
|
+
ReverseAdoc::Converters.register :svg, Bypass.new
|
|
74
74
|
ReverseAdoc::Converters.register :template, Bypass.new
|
|
75
75
|
ReverseAdoc::Converters.register :textarea, Bypass.new
|
|
76
|
-
ReverseAdoc::Converters.register :track,
|
|
77
|
-
ReverseAdoc::Converters.register :u,
|
|
78
|
-
ReverseAdoc::Converters.register :wbr,
|
|
76
|
+
ReverseAdoc::Converters.register :track, Bypass.new
|
|
77
|
+
ReverseAdoc::Converters.register :u, Bypass.new
|
|
78
|
+
ReverseAdoc::Converters.register :wbr, Bypass.new
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -5,7 +5,7 @@ module Stepmod
|
|
|
5
5
|
module Converters
|
|
6
6
|
class ClauseRef < ReverseAdoc::Converters::Base
|
|
7
7
|
def convert(node, _state = {})
|
|
8
|
-
"
|
|
8
|
+
" {{#{normalized_ref(node['linkend'])}}} "
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
private
|
|
@@ -13,10 +13,10 @@ module Stepmod
|
|
|
13
13
|
def normalized_ref(ref)
|
|
14
14
|
return unless ref || ref.empty?
|
|
15
15
|
|
|
16
|
-
ref.to_s.split(
|
|
16
|
+
ref.to_s.split(":").last.squeeze(" ").strip
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
ReverseAdoc::Converters.register :clause_ref, ClauseRef.new
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
|
-
end
|
|
22
|
+
end
|
|
@@ -4,8 +4,10 @@ module Stepmod
|
|
|
4
4
|
module Utils
|
|
5
5
|
module Converters
|
|
6
6
|
class Comment < ReverseAdoc::Converters::Base
|
|
7
|
-
def convert(node,
|
|
8
|
-
comment = node.text.strip.split("\n").map
|
|
7
|
+
def convert(node, _state = {})
|
|
8
|
+
comment = node.text.strip.split("\n").map do |line|
|
|
9
|
+
"\n// #{line}"
|
|
10
|
+
end.join("\n")
|
|
9
11
|
"#{comment}\n"
|
|
10
12
|
end
|
|
11
13
|
end
|
|
@@ -13,4 +15,4 @@ module Stepmod
|
|
|
13
15
|
ReverseAdoc::Converters.register :comment, Comment.new
|
|
14
16
|
end
|
|
15
17
|
end
|
|
16
|
-
end
|
|
18
|
+
end
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
module Stepmod
|
|
3
2
|
module Utils
|
|
4
3
|
module Converters
|
|
@@ -12,24 +11,30 @@ module Stepmod
|
|
|
12
11
|
|
|
13
12
|
def treat_children(node, state)
|
|
14
13
|
converted = node.children.each_with_object({}) do |child, res|
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
content = treat(child, state)
|
|
15
|
+
next if content.strip.empty?
|
|
17
16
|
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
res[child] = content
|
|
18
|
+
end
|
|
20
19
|
previous = nil
|
|
21
|
-
result =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
result = ""
|
|
21
|
+
|
|
22
|
+
converted.each.with_index do |(child, content), _i|
|
|
23
|
+
result += if block_tag?(child, previous)
|
|
24
|
+
"\n\n"
|
|
25
|
+
elsif comment_tag?(child, previous)
|
|
26
|
+
"\n"
|
|
27
|
+
else
|
|
28
|
+
" "
|
|
29
|
+
end
|
|
30
30
|
result += content
|
|
31
31
|
previous = child
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
# Remove double newlines for every line
|
|
35
|
+
result = result.gsub(/\n\n+/, "\n\n")
|
|
36
|
+
result = result.squeeze(" ")
|
|
37
|
+
|
|
33
38
|
result.strip
|
|
34
39
|
end
|
|
35
40
|
|
|
@@ -39,31 +44,34 @@ module Stepmod
|
|
|
39
44
|
end
|
|
40
45
|
|
|
41
46
|
def comment_tag?(child, previous)
|
|
42
|
-
child.name ==
|
|
47
|
+
child.name == "comment" || (previous && previous.name === "comment")
|
|
43
48
|
end
|
|
44
49
|
|
|
45
50
|
def additional_block(node)
|
|
46
51
|
# Treat first `p` tag as an `alt` block, metanorma/stepmod-utils#9
|
|
47
52
|
first_child_tag = node
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
.children
|
|
54
|
+
.find { |n| n.is_a?(Nokogiri::XML::Element) }
|
|
50
55
|
return unless can_transform_to_alt?(first_child_tag)
|
|
51
56
|
|
|
52
57
|
result = Stepmod::Utils::Converters::Synonym
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
.new
|
|
59
|
+
.convert(first_child_tag)
|
|
60
|
+
|
|
55
61
|
first_child_tag.remove
|
|
56
62
|
"#{result}\n\n"
|
|
57
63
|
end
|
|
58
64
|
|
|
59
65
|
# metanorma/stepmod-utils#18 when para is the only text doe snot transform it
|
|
60
66
|
def can_transform_to_alt?(first_child_tag)
|
|
61
|
-
return false unless first_child_tag&.name ==
|
|
62
|
-
|
|
67
|
+
return false unless first_child_tag&.name == "p" &&
|
|
68
|
+
defined?(Stepmod::Utils::Converters::Synonym)
|
|
63
69
|
|
|
64
70
|
next_sibling = first_child_tag.next
|
|
65
71
|
while next_sibling
|
|
66
|
-
return true if !next_sibling.text.to_s.strip.empty? && %w[p
|
|
72
|
+
return true if !next_sibling.text.to_s.strip.empty? && %w[p
|
|
73
|
+
text].include?(next_sibling.name)
|
|
74
|
+
|
|
67
75
|
next_sibling = next_sibling.next
|
|
68
76
|
end
|
|
69
77
|
false
|
|
@@ -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
|