stepmod-utils 0.1.5 → 0.2.3
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 +51 -0
- data/.github/workflows/release.yml +20 -22
- data/Gemfile +2 -0
- data/Makefile +2 -0
- data/README.adoc +136 -2
- data/exe/stepmod-annotate +44 -0
- data/exe/stepmod-annotate-all +39 -0
- data/exe/stepmod-build-resource-docs-cache +19 -0
- data/exe/stepmod-convert-express-description +33 -0
- data/exe/stepmod-convert-express-resource +33 -0
- data/exe/stepmod-extract-terms +62 -13
- data/exe/stepmod-find-express-files +23 -0
- data/lib/stepmod/utils/cleaner.rb +11 -0
- data/lib/stepmod/utils/concept.rb +16 -3
- data/lib/stepmod/utils/converters/a.rb +47 -0
- data/lib/stepmod/utils/converters/blockquote.rb +22 -0
- data/lib/stepmod/utils/converters/br.rb +15 -0
- data/lib/stepmod/utils/converters/bypass.rb +81 -0
- data/lib/stepmod/utils/converters/clause_ref.rb +2 -2
- data/lib/stepmod/utils/converters/code.rb +19 -0
- data/lib/stepmod/utils/converters/comment.rb +16 -0
- data/lib/stepmod/utils/converters/dd.rb +15 -0
- data/lib/stepmod/utils/converters/def.rb +13 -6
- data/lib/stepmod/utils/converters/definition.rb +2 -2
- data/lib/stepmod/utils/converters/dl.rb +31 -0
- data/lib/stepmod/utils/converters/drop.rb +22 -0
- data/lib/stepmod/utils/converters/dt.rb +17 -0
- data/lib/stepmod/utils/converters/em.rb +3 -3
- data/lib/stepmod/utils/converters/em_express_description.rb +22 -0
- data/lib/stepmod/utils/converters/eqn.rb +96 -0
- data/lib/stepmod/utils/converters/example.rb +3 -8
- data/lib/stepmod/utils/converters/express_g.rb +46 -0
- data/lib/stepmod/utils/converters/express_ref.rb +2 -2
- data/lib/stepmod/utils/converters/express_ref_express_description.rb +13 -0
- data/lib/stepmod/utils/converters/ext_description.rb +16 -0
- data/lib/stepmod/utils/converters/ext_descriptions.rb +14 -0
- data/lib/stepmod/utils/converters/fund_cons.rb +15 -0
- data/lib/stepmod/utils/converters/head.rb +22 -0
- data/lib/stepmod/utils/converters/hr.rb +15 -0
- data/lib/stepmod/utils/converters/ignore.rb +16 -0
- data/lib/stepmod/utils/converters/introduction.rb +15 -0
- data/lib/stepmod/utils/converters/module_ref.rb +2 -2
- data/lib/stepmod/utils/converters/note.rb +3 -8
- data/lib/stepmod/utils/converters/ol.rb +7 -6
- data/lib/stepmod/utils/converters/p.rb +21 -0
- data/lib/stepmod/utils/converters/pass_through.rb +13 -0
- data/lib/stepmod/utils/converters/q.rb +16 -0
- data/lib/stepmod/utils/converters/resource.rb +14 -0
- data/lib/stepmod/utils/converters/schema.rb +18 -0
- data/lib/stepmod/utils/converters/schema_diag.rb +14 -0
- data/lib/stepmod/utils/converters/stem.rb +2 -2
- data/lib/stepmod/utils/converters/strong.rb +21 -0
- data/lib/stepmod/utils/converters/sub.rb +16 -0
- data/lib/stepmod/utils/converters/sup.rb +16 -0
- data/lib/stepmod/utils/converters/synonym.rb +2 -2
- data/lib/stepmod/utils/converters/term.rb +2 -2
- data/lib/stepmod/utils/converters/text.rb +68 -0
- data/lib/stepmod/utils/html_to_asciimath.rb +157 -0
- data/lib/stepmod/utils/smrl_description_converter.rb +49 -0
- data/lib/stepmod/utils/smrl_resource_converter.rb +67 -0
- data/lib/stepmod/utils/stepmod_definition_converter.rb +21 -21
- data/lib/stepmod/utils/stepmod_file_annotator.rb +54 -0
- data/lib/stepmod/utils/version.rb +1 -1
- data/migrating_from_cvs.adoc +190 -0
- data/stepmod-utils.gemspec +2 -1
- metadata +70 -8
- data/.github/workflows/macos.yml +0 -39
- data/.github/workflows/ubuntu.yml +0 -53
- data/.github/workflows/windows.yml +0 -41
data/exe/stepmod-extract-terms
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
#!/usr/bin/env ruby
|
4
2
|
# encoding: UTF-8
|
5
3
|
|
4
|
+
require 'pry'
|
6
5
|
# resolve bin path, ignoring symlinks
|
7
6
|
require "pathname"
|
8
7
|
bin_file = Pathname.new(__FILE__).realpath
|
@@ -21,8 +20,9 @@ require 'bundler/setup'
|
|
21
20
|
require 'stepmod/utils/stepmod_definition_converter'
|
22
21
|
require 'stepmod/utils/bibdata'
|
23
22
|
require 'stepmod/utils/concept'
|
23
|
+
require 'ptools'
|
24
24
|
|
25
|
-
|
25
|
+
ReverseAdoc.config.unknown_tags = :bypass
|
26
26
|
|
27
27
|
parsed_terms = []
|
28
28
|
parsed_bibliography = []
|
@@ -34,7 +34,22 @@ def log message
|
|
34
34
|
puts "[stepmod-utils] #{message}"
|
35
35
|
end
|
36
36
|
|
37
|
-
|
37
|
+
stepmod_path = Pathname.new(stepmod_dir).realpath
|
38
|
+
|
39
|
+
# If we are using the stepmod CVS repository, provide the revision number per file
|
40
|
+
has_cvs = File.which("cvs")
|
41
|
+
cvs_mode = has_cvs && Dir.exists?(stepmod_path.join('CVS'))
|
42
|
+
|
43
|
+
log "INFO: STEPmod directory set to #{stepmod_dir}."
|
44
|
+
|
45
|
+
if cvs_mode
|
46
|
+
log "INFO: STEPmod directory is a CVS repository and will detect revisions."
|
47
|
+
log "INFO: [CVS] Detecting file revisions can be slow, please be patient!"
|
48
|
+
else
|
49
|
+
log "INFO: STEPmod directory is not a CVS repository, skipping revision detection."
|
50
|
+
end
|
51
|
+
|
52
|
+
log "INFO: Detecting paths..."
|
38
53
|
|
39
54
|
files = %w(
|
40
55
|
resource.xml
|
@@ -46,19 +61,48 @@ files = %w(
|
|
46
61
|
end.flatten.sort.uniq
|
47
62
|
|
48
63
|
files.each do |file_path|
|
49
|
-
|
64
|
+
file_path = Pathname.new(file_path).realpath
|
65
|
+
fpath = file_path.relative_path_from(stepmod_path)
|
66
|
+
|
67
|
+
log "INFO: Processing XML file #{fpath}"
|
50
68
|
current_document = Nokogiri::XML(File.read(file_path)).root
|
51
69
|
|
52
70
|
bibdata = nil
|
53
71
|
begin
|
54
72
|
bibdata = Stepmod::Utils::Bibdata.new(document: current_document)
|
55
73
|
rescue
|
56
|
-
log "WARNING: Unknown file #{
|
74
|
+
log "WARNING: Unknown file #{fpath}, skipped"
|
75
|
+
next
|
76
|
+
end
|
77
|
+
|
78
|
+
# TODO: we may want a command line option to override this in the future
|
79
|
+
unless %w(IS DIS TS).include? bibdata.doctype
|
80
|
+
log "INFO: skipped #{bibdata.docid} as it is not IS, DIS or TS"
|
57
81
|
next
|
58
82
|
end
|
59
83
|
|
60
84
|
if bibdata.part.to_s.empty?
|
61
|
-
log "FATAL: missing `part` attribute: #{
|
85
|
+
log "FATAL: missing `part` attribute: #{fpath}"
|
86
|
+
log "INFO: skipped #{bibdata.docid} as it is missing `part` attribute."
|
87
|
+
next
|
88
|
+
end
|
89
|
+
|
90
|
+
revision_string = "\n// CVS: revision not detected"
|
91
|
+
if cvs_mode
|
92
|
+
# Run `cvs status` to find out version
|
93
|
+
|
94
|
+
log "INFO: Detecting CVS revision..."
|
95
|
+
Dir.chdir(stepmod_path) do
|
96
|
+
status = `cvs status #{fpath}`
|
97
|
+
|
98
|
+
unless status.empty?
|
99
|
+
working_rev = status.split(/\n/).grep(/Working revision:/).first.match(/revision:\s+(.+)$/)[1]
|
100
|
+
repo_rev = status.split(/\n/).grep(/Repository revision:/).first.match(/revision:\t(.+)\t/)[1]
|
101
|
+
log "INFO: CVS working rev (#{working_rev}), repo rev (#{repo_rev})"
|
102
|
+
revision_string = "\n// CVS working rev: (#{working_rev}), repo rev (#{repo_rev})\n" +
|
103
|
+
"// CVS: revision #{working_rev == repo_rev ? 'up to date' : 'differs'}"
|
104
|
+
end
|
105
|
+
end
|
62
106
|
end
|
63
107
|
|
64
108
|
# read definitions
|
@@ -67,23 +111,28 @@ files.each do |file_path|
|
|
67
111
|
term_id = definition['id']
|
68
112
|
unless term_id.nil?
|
69
113
|
if encountered_terms[term_id]
|
70
|
-
log "FATAL: Duplicated term with id: #{term_id}, #{
|
114
|
+
log "FATAL: Duplicated term with id: #{term_id}, #{fpath}"
|
71
115
|
end
|
72
116
|
encountered_terms[term_id] = true
|
73
117
|
end
|
74
118
|
|
119
|
+
# Assume that definition is located in clause 3 of the ISO document
|
120
|
+
# in order. We really don't have a good reference here.
|
121
|
+
ref_clause = "3.#{index}"
|
122
|
+
|
75
123
|
concept = Stepmod::Utils::Concept.parse(
|
76
124
|
definition,
|
77
125
|
reference_anchor: bibdata.anchor,
|
78
|
-
|
79
|
-
|
80
|
-
reference_clause: "3.#{index}"
|
126
|
+
reference_clause: ref_clause,
|
127
|
+
file_path: fpath + revision_string
|
81
128
|
)
|
82
129
|
|
83
130
|
parsed_terms << concept
|
84
131
|
parsed_bibliography << bibdata
|
85
132
|
end
|
86
133
|
|
134
|
+
log "INFO: Completed processing XML file #{fpath}"
|
135
|
+
|
87
136
|
end
|
88
137
|
|
89
138
|
parsed_bibliography.uniq!
|
@@ -92,10 +141,10 @@ File.open('031-generated-terms.adoc', 'w') { |file|
|
|
92
141
|
file.puts(parsed_terms.map(&:to_mn_adoc).join("\n"))
|
93
142
|
}
|
94
143
|
|
95
|
-
log "written to: 031-generated-terms.adoc"
|
144
|
+
log "INFO: written to: 031-generated-terms.adoc"
|
96
145
|
|
97
146
|
File.open('991-generated-bibliography.adoc', 'w') { |file|
|
98
147
|
file.puts(parsed_bibliography.map(&:to_mn_adoc).join("\n"))
|
99
148
|
}
|
100
149
|
|
101
|
-
log "written to: 991-generated-bibliography.adoc"
|
150
|
+
log "INFO: written to: 991-generated-bibliography.adoc"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
stepmod_dir = ARGV.first || Dir.pwd
|
6
|
+
|
7
|
+
index = Nokogiri::XML(File.read(File.join(stepmod_dir, 'repository_index.xml'))).root
|
8
|
+
|
9
|
+
files = []
|
10
|
+
index.xpath('modules/module').each do |item|
|
11
|
+
files << "#{stepmod_dir}/data/modules/#{item['name']}/arm.exp"
|
12
|
+
files << "#{stepmod_dir}/data/modules/#{item['name']}/mim.exp"
|
13
|
+
end
|
14
|
+
index.xpath('resources/resource').each do |item|
|
15
|
+
files << "#{stepmod_dir}/data/resources/#{item['name']}/#{item['name']}.exp"
|
16
|
+
end
|
17
|
+
index.xpath('business_object_models/business_object_model').each do |item|
|
18
|
+
files << "#{stepmod_dir}/data/business_object_models/#{item['name']}/bom.exp"
|
19
|
+
files << "#{stepmod_dir}/data/business_object_models/#{item['name']}/DomainModel.exp"
|
20
|
+
end
|
21
|
+
|
22
|
+
existing_files = files.filter{|file| File.exists?(file)}
|
23
|
+
puts existing_files
|
@@ -2,7 +2,17 @@ module Stepmod
|
|
2
2
|
module Utils
|
3
3
|
|
4
4
|
class Concept
|
5
|
-
attr_accessor *%w(
|
5
|
+
attr_accessor *%w(
|
6
|
+
designation
|
7
|
+
definition
|
8
|
+
reference_anchor
|
9
|
+
reference_clause
|
10
|
+
examples
|
11
|
+
notes
|
12
|
+
synonym
|
13
|
+
converted_definition
|
14
|
+
file_path
|
15
|
+
)
|
6
16
|
|
7
17
|
def initialize(options)
|
8
18
|
options.each_pair do |k, v|
|
@@ -10,20 +20,23 @@ module Stepmod
|
|
10
20
|
end
|
11
21
|
end
|
12
22
|
|
13
|
-
def self.parse(definition_xml, reference_anchor:, reference_clause:)
|
23
|
+
def self.parse(definition_xml, reference_anchor:, reference_clause:, file_path:)
|
14
24
|
new(
|
15
25
|
converted_definition: Stepmod::Utils::StepmodDefinitionConverter.convert(definition_xml),
|
16
26
|
reference_anchor: reference_anchor,
|
17
|
-
reference_clause: reference_clause
|
27
|
+
reference_clause: reference_clause,
|
28
|
+
file_path: file_path
|
18
29
|
)
|
19
30
|
end
|
20
31
|
|
21
32
|
def to_mn_adoc
|
22
33
|
<<~TEXT
|
34
|
+
// STEPmod path: #{file_path}
|
23
35
|
#{converted_definition}
|
24
36
|
|
25
37
|
[.source]
|
26
38
|
<<#{reference_anchor},clause=#{reference_clause}>>
|
39
|
+
|
27
40
|
TEXT
|
28
41
|
end
|
29
42
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "uri"
|
4
|
+
|
5
|
+
module Stepmod
|
6
|
+
module Utils
|
7
|
+
module Converters
|
8
|
+
class A < ReverseAdoc::Converters::Base
|
9
|
+
def convert(node, state = {})
|
10
|
+
name = treat_children(node, state)
|
11
|
+
href = node['href']
|
12
|
+
title = extract_title(node)
|
13
|
+
id = node['id'] || node['name']
|
14
|
+
|
15
|
+
id = id&.gsub(/\s/, "")&.gsub(/__+/, "_")
|
16
|
+
|
17
|
+
if /^_Toc\d+$|^_GoBack$/.match id
|
18
|
+
""
|
19
|
+
elsif !id.nil? && !id.empty?
|
20
|
+
"[[#{id}]]"
|
21
|
+
elsif href.to_s.start_with?('#')
|
22
|
+
href = href.sub(/^#/, "").gsub(/\s/, "").gsub(/__+/, "_")
|
23
|
+
if name.empty?
|
24
|
+
"<<#{href}>>"
|
25
|
+
else
|
26
|
+
"<<#{href},#{name}>>"
|
27
|
+
end
|
28
|
+
elsif href.to_s.empty?
|
29
|
+
name
|
30
|
+
else
|
31
|
+
name = title if name.empty?
|
32
|
+
href = "link:#{href}" unless href.to_s =~ URI::DEFAULT_PARSER.make_regexp
|
33
|
+
link = "#{href}[#{name}]"
|
34
|
+
# link.prepend(' ')
|
35
|
+
link = " #{link}"
|
36
|
+
link
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
ReverseAdoc::Converters.register :a, A.new
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stepmod
|
4
|
+
module Utils
|
5
|
+
module Converters
|
6
|
+
class Blockquote < ReverseAdoc::Converters::Base
|
7
|
+
def convert(node, state = {})
|
8
|
+
id = node['id']
|
9
|
+
anchor = id ? "[[#{id}]]\n" : ""
|
10
|
+
cite = node['cite']
|
11
|
+
attrs = cite ? "[quote, #{cite}]\n" : ""
|
12
|
+
content = treat_children(node, state).strip
|
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('') << "\n____\n\n"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
ReverseAdoc::Converters.register :blockquote, Blockquote.new
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stepmod
|
4
|
+
module Utils
|
5
|
+
module Converters
|
6
|
+
class Br < ReverseAdoc::Converters::Base
|
7
|
+
def convert(node, state = {})
|
8
|
+
" +\n"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
ReverseAdoc::Converters.register :br, Br.new
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stepmod
|
4
|
+
module Utils
|
5
|
+
module Converters
|
6
|
+
class Bypass < ReverseAdoc::Converters::Base
|
7
|
+
def convert(node, state = {})
|
8
|
+
treat_children(node, state)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
ReverseAdoc::Converters.register :document, Bypass.new
|
13
|
+
ReverseAdoc::Converters.register :html, Bypass.new
|
14
|
+
ReverseAdoc::Converters.register :body, Bypass.new
|
15
|
+
ReverseAdoc::Converters.register :span, Bypass.new
|
16
|
+
ReverseAdoc::Converters.register :thead, Bypass.new
|
17
|
+
ReverseAdoc::Converters.register :tbody, Bypass.new
|
18
|
+
ReverseAdoc::Converters.register :tfoot, Bypass.new
|
19
|
+
ReverseAdoc::Converters.register :abbr, Bypass.new
|
20
|
+
ReverseAdoc::Converters.register :acronym, Bypass.new
|
21
|
+
ReverseAdoc::Converters.register :address, Bypass.new
|
22
|
+
ReverseAdoc::Converters.register :applet, Bypass.new
|
23
|
+
ReverseAdoc::Converters.register :map, Bypass.new
|
24
|
+
ReverseAdoc::Converters.register :area, Bypass.new
|
25
|
+
ReverseAdoc::Converters.register :bdi, Bypass.new
|
26
|
+
ReverseAdoc::Converters.register :bdo, Bypass.new
|
27
|
+
ReverseAdoc::Converters.register :big, Bypass.new
|
28
|
+
ReverseAdoc::Converters.register :button, Bypass.new
|
29
|
+
ReverseAdoc::Converters.register :canvas, Bypass.new
|
30
|
+
ReverseAdoc::Converters.register :data, Bypass.new
|
31
|
+
ReverseAdoc::Converters.register :datalist, Bypass.new
|
32
|
+
ReverseAdoc::Converters.register :del, Bypass.new
|
33
|
+
ReverseAdoc::Converters.register :ins, Bypass.new
|
34
|
+
ReverseAdoc::Converters.register :dfn, Bypass.new
|
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
|
+
ReverseAdoc::Converters.register :header, Bypass.new
|
44
|
+
ReverseAdoc::Converters.register :iframe, Bypass.new
|
45
|
+
ReverseAdoc::Converters.register :input, Bypass.new
|
46
|
+
ReverseAdoc::Converters.register :label, Bypass.new
|
47
|
+
ReverseAdoc::Converters.register :legend, Bypass.new
|
48
|
+
ReverseAdoc::Converters.register :main, Bypass.new
|
49
|
+
ReverseAdoc::Converters.register :menu, Bypass.new
|
50
|
+
ReverseAdoc::Converters.register :menulist, Bypass.new
|
51
|
+
ReverseAdoc::Converters.register :meter, Bypass.new
|
52
|
+
ReverseAdoc::Converters.register :nav, Bypass.new
|
53
|
+
ReverseAdoc::Converters.register :noframes, Bypass.new
|
54
|
+
ReverseAdoc::Converters.register :noscript, Bypass.new
|
55
|
+
ReverseAdoc::Converters.register :object, Bypass.new
|
56
|
+
ReverseAdoc::Converters.register :optgroup, Bypass.new
|
57
|
+
ReverseAdoc::Converters.register :option, Bypass.new
|
58
|
+
ReverseAdoc::Converters.register :output, Bypass.new
|
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
|
+
ReverseAdoc::Converters.register :rt, Bypass.new
|
64
|
+
ReverseAdoc::Converters.register :rp, Bypass.new
|
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
|
+
ReverseAdoc::Converters.register :details, Bypass.new
|
71
|
+
ReverseAdoc::Converters.register :section, Bypass.new
|
72
|
+
ReverseAdoc::Converters.register :summary, Bypass.new
|
73
|
+
ReverseAdoc::Converters.register :svg, Bypass.new
|
74
|
+
ReverseAdoc::Converters.register :template, Bypass.new
|
75
|
+
ReverseAdoc::Converters.register :textarea, Bypass.new
|
76
|
+
ReverseAdoc::Converters.register :track, Bypass.new
|
77
|
+
ReverseAdoc::Converters.register :u, Bypass.new
|
78
|
+
ReverseAdoc::Converters.register :wbr, Bypass.new
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Stepmod
|
4
4
|
module Utils
|
5
5
|
module Converters
|
6
|
-
class ClauseRef <
|
6
|
+
class ClauseRef < ReverseAdoc::Converters::Base
|
7
7
|
def convert(node, _state = {})
|
8
8
|
" term:[#{normalized_ref(node['linkend'])}] "
|
9
9
|
end
|
@@ -16,7 +16,7 @@ module Stepmod
|
|
16
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
22
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stepmod
|
4
|
+
module Utils
|
5
|
+
module Converters
|
6
|
+
class Code < ReverseAdoc::Converters::Base
|
7
|
+
def convert(node, state = {})
|
8
|
+
"`#{node.text}`"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
ReverseAdoc::Converters.register :code, Code.new
|
13
|
+
ReverseAdoc::Converters.register :tt, Code.new
|
14
|
+
ReverseAdoc::Converters.register :kbd, Code.new
|
15
|
+
ReverseAdoc::Converters.register :samp, Code.new
|
16
|
+
ReverseAdoc::Converters.register :var, Code.new
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Stepmod
|
4
|
+
module Utils
|
5
|
+
module Converters
|
6
|
+
class Comment < ReverseAdoc::Converters::Base
|
7
|
+
def convert(node, state = {})
|
8
|
+
comment = node.text.strip.split("\n").map{|line| "// #{line}"}.join("\n")
|
9
|
+
"#{comment}\n"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
ReverseAdoc::Converters.register :comment, Comment.new
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|