metanorma 0.1.4 → 0.2.0
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 +5 -5
- data/Gemfile.lock +45 -26
- data/exe/metanorma +69 -118
- data/exe/{pdf.js → metanorma-pdf.js} +0 -0
- data/lib/metanorma.rb +5 -1
- data/lib/metanorma/document.rb +12 -0
- data/lib/metanorma/input.rb +8 -0
- data/lib/metanorma/input/asciidoc.rb +39 -0
- data/lib/metanorma/input/base.rb +13 -0
- data/lib/metanorma/output.rb +9 -0
- data/lib/metanorma/output/base.rb +13 -0
- data/lib/metanorma/output/pdf.rb +17 -0
- data/lib/metanorma/processor.rb +27 -0
- data/lib/metanorma/registry.rb +43 -0
- data/lib/metanorma/version.rb +1 -1
- data/metanorma.gemspec +7 -6
- metadata +52 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f5b7750ea43f5330e790b140637dfca6c4e9968d27b60187e81adf2c6df5bac2
|
|
4
|
+
data.tar.gz: 2ba4116d33804af285354da67a0bf815724bea73227302342852f2beba985c24
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34cbbf129a33e0851d1a0c592112b021c9b73f3caadbb299ceacb9bb6fe8f3b83ecc213507406325f95a7697bfe2a760c0ed08289856183c4c0b42f4acac0c38
|
|
7
|
+
data.tar.gz: bedb7d46a9c70fe097a53c6eda68cb9e8674bf581032888054bc481167005fab8b3876a01a7d44ef9fb8a0b24124cb4ec0a5e35b58a2f07b2dd32db448716137
|
data/Gemfile.lock
CHANGED
|
@@ -1,56 +1,74 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
metanorma (0.
|
|
5
|
-
asciidoctor-csand (>= 0.
|
|
6
|
-
asciidoctor-csd (>= 0.
|
|
7
|
-
asciidoctor-gb (>= 0.
|
|
8
|
-
asciidoctor-iso (>= 0.
|
|
9
|
-
asciidoctor-rfc (>= 0.
|
|
4
|
+
metanorma (0.2.0)
|
|
5
|
+
asciidoctor-csand (>= 0.3.0)
|
|
6
|
+
asciidoctor-csd (>= 0.4.0)
|
|
7
|
+
asciidoctor-gb (>= 0.3.0)
|
|
8
|
+
asciidoctor-iso (>= 0.9.0)
|
|
9
|
+
asciidoctor-rfc (>= 0.9.0)
|
|
10
|
+
asciidoctor-rsd (>= 0.3.0)
|
|
11
|
+
isodoc (>= 0.8.0)
|
|
10
12
|
|
|
11
13
|
GEM
|
|
12
14
|
remote: https://rubygems.org/
|
|
13
15
|
specs:
|
|
14
|
-
algoliasearch (1.
|
|
16
|
+
algoliasearch (1.23.2)
|
|
15
17
|
httpclient (~> 2.8, >= 2.8.3)
|
|
16
18
|
json (>= 1.5.1)
|
|
17
19
|
asciidoctor (1.5.7.1)
|
|
18
|
-
asciidoctor-csand (0.
|
|
20
|
+
asciidoctor-csand (0.3.0)
|
|
19
21
|
asciidoctor (~> 1.5.7)
|
|
20
|
-
asciidoctor-iso (>= 0.
|
|
22
|
+
asciidoctor-iso (>= 0.9.0)
|
|
21
23
|
asciimath
|
|
22
24
|
htmlentities (~> 4.3.4)
|
|
23
25
|
image_size
|
|
24
|
-
isodoc
|
|
26
|
+
isodoc (>= 0.8.0)
|
|
25
27
|
mime-types
|
|
26
28
|
nokogiri
|
|
27
29
|
ruby-jing
|
|
28
30
|
ruby-xslt
|
|
29
31
|
thread_safe
|
|
30
32
|
uuidtools
|
|
31
|
-
asciidoctor-csd (0.
|
|
32
|
-
asciidoctor-iso (>= 0.
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
asciidoctor-csd (0.4.0)
|
|
34
|
+
asciidoctor-iso (>= 0.9.0)
|
|
35
|
+
isodoc (>= 0.8.0)
|
|
36
|
+
asciidoctor-gb (0.3.0)
|
|
37
|
+
asciidoctor-iso (>= 0.9.0)
|
|
38
|
+
isodoc (>= 0.8.0)
|
|
35
39
|
twitter_cldr
|
|
36
|
-
asciidoctor-iso (0.
|
|
40
|
+
asciidoctor-iso (0.9.0)
|
|
37
41
|
asciidoctor (~> 1.5.7)
|
|
38
|
-
|
|
39
|
-
isobib (~> 0.1.
|
|
40
|
-
isodoc (
|
|
42
|
+
iso-bib-item (~> 0.1.6)
|
|
43
|
+
isobib (~> 0.1.6)
|
|
44
|
+
isodoc (>= 0.8)
|
|
41
45
|
ruby-jing
|
|
42
|
-
asciidoctor-rfc (0.
|
|
46
|
+
asciidoctor-rfc (0.9.0)
|
|
43
47
|
asciidoctor (~> 1.5.7)
|
|
44
48
|
htmlentities (~> 4.3.4)
|
|
45
49
|
nokogiri
|
|
46
50
|
ruby-jing
|
|
47
51
|
thread_safe
|
|
52
|
+
asciidoctor-rsd (0.3.0)
|
|
53
|
+
asciidoctor (~> 1.5.7)
|
|
54
|
+
asciidoctor-iso (>= 0.8.0)
|
|
55
|
+
asciimath
|
|
56
|
+
htmlentities (~> 4.3.4)
|
|
57
|
+
image_size
|
|
58
|
+
isodoc (>= 0.7.0)
|
|
59
|
+
mime-types
|
|
60
|
+
nokogiri
|
|
61
|
+
ruby-jing
|
|
62
|
+
ruby-xslt
|
|
63
|
+
thread_safe
|
|
64
|
+
uuidtools
|
|
48
65
|
asciimath (1.0.4)
|
|
49
66
|
camertron-eprun (1.1.1)
|
|
50
67
|
cldr-plurals-runtime-rb (1.0.1)
|
|
51
68
|
diff-lcs (1.3)
|
|
52
|
-
|
|
53
|
-
|
|
69
|
+
duplicate (1.1.1)
|
|
70
|
+
ffi (1.9.25)
|
|
71
|
+
html2doc (0.8.0)
|
|
54
72
|
asciimath
|
|
55
73
|
htmlentities (~> 4.3.4)
|
|
56
74
|
image_size
|
|
@@ -62,15 +80,16 @@ GEM
|
|
|
62
80
|
htmlentities (4.3.4)
|
|
63
81
|
httpclient (2.8.3)
|
|
64
82
|
image_size (2.0.0)
|
|
65
|
-
iso-bib-item (0.1.
|
|
83
|
+
iso-bib-item (0.1.6)
|
|
84
|
+
duplicate
|
|
66
85
|
isoics (~> 0.1.6)
|
|
67
86
|
nokogiri
|
|
68
|
-
isobib (0.1.
|
|
87
|
+
isobib (0.1.6)
|
|
69
88
|
algoliasearch
|
|
70
89
|
iso-bib-item (~> 0.1.2)
|
|
71
|
-
isodoc (0.
|
|
90
|
+
isodoc (0.8)
|
|
72
91
|
asciimath
|
|
73
|
-
html2doc
|
|
92
|
+
html2doc (>= 0.7.1)
|
|
74
93
|
htmlentities (~> 4.3.4)
|
|
75
94
|
image_size
|
|
76
95
|
liquid
|
|
@@ -88,7 +107,7 @@ GEM
|
|
|
88
107
|
mime-types-data (~> 3.2015)
|
|
89
108
|
mime-types-data (3.2016.0521)
|
|
90
109
|
mini_portile2 (2.3.0)
|
|
91
|
-
nokogiri (1.8.
|
|
110
|
+
nokogiri (1.8.3)
|
|
92
111
|
mini_portile2 (~> 2.3.0)
|
|
93
112
|
optout (0.0.2)
|
|
94
113
|
rake (10.5.0)
|
data/exe/metanorma
CHANGED
|
@@ -1,115 +1,54 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
require "optparse"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
headerfont: defined?(headerfont) ? headerfont : nil,
|
|
17
|
-
monospacefont: defined?(monospacefont) ? monospacefont : nil,
|
|
18
|
-
titlefont: defined?(titlefont) ? titlefont : nil,
|
|
19
|
-
i18nyaml: defined?(i18nyaml) ? i18nyaml : nil,
|
|
20
|
-
}.reject { |_, val| val.nil? }.map
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def pdf_convert(filename)
|
|
24
|
-
url = "#{Dir.pwd}/#{filename}.html"
|
|
25
|
-
pdfjs = File.join(File.dirname(__FILE__), 'pdf.js')
|
|
26
|
-
system "export NODE_PATH=$(npm root --quiet -g);
|
|
27
|
-
node #{pdfjs} file://#{url} #{filename}.pdf"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
supported_backends = [
|
|
32
|
-
{
|
|
33
|
-
short: :rfc2,
|
|
34
|
-
load_path: "asciidoctor/rfc/v2/converter",
|
|
35
|
-
asciidoctor_backend: "rfc2"
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
short: :rfc3,
|
|
40
|
-
load_path: "asciidoctor/rfc/v3/converter",
|
|
41
|
-
asciidoctor_backend: "rfc3"
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
{
|
|
45
|
-
short: :iso,
|
|
46
|
-
load_path: "asciidoctor/iso/converter",
|
|
47
|
-
asciidoctor_backend: "iso"
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
{
|
|
51
|
-
short: :gb,
|
|
52
|
-
load_path: "asciidoctor/gb/converter",
|
|
53
|
-
asciidoctor_backend: "gb"
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
short: :csd,
|
|
58
|
-
load_path: "asciidoctor/csd/converter",
|
|
59
|
-
asciidoctor_backend: "csd"
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
{
|
|
63
|
-
short: :csand,
|
|
64
|
-
load_path: "asciidoctor/csand/converter",
|
|
65
|
-
asciidoctor_backend: "csand"
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
{
|
|
69
|
-
short: :m3d,
|
|
70
|
-
load_path: "asciidoctor/m3d/converter",
|
|
71
|
-
asciidoctor_backend: "m3d"
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
# {
|
|
75
|
-
# short: :rsd,
|
|
76
|
-
# load_path: "asciidoctor/rsd/converter",
|
|
77
|
-
# asciidoctor_backend: "rsd"
|
|
78
|
-
# },
|
|
4
|
+
require "metanorma"
|
|
5
|
+
|
|
6
|
+
registry = Metanorma::Registry.instance
|
|
7
|
+
|
|
8
|
+
supported_gem_paths = [
|
|
9
|
+
"asciidoctor-rfc",
|
|
10
|
+
"asciidoctor-iso",
|
|
11
|
+
"asciidoctor-gb",
|
|
12
|
+
"asciidoctor-csd",
|
|
13
|
+
"asciidoctor-csand",
|
|
14
|
+
"asciidoctor-m3d",
|
|
15
|
+
"asciidoctor-rsd"
|
|
79
16
|
]
|
|
80
17
|
|
|
81
|
-
|
|
82
|
-
|
|
18
|
+
puts "[metanorma] detecting backends:"
|
|
19
|
+
supported_gem_paths.each do |backend|
|
|
83
20
|
begin
|
|
84
|
-
|
|
85
|
-
require backend
|
|
86
|
-
true
|
|
21
|
+
# puts backend
|
|
22
|
+
require backend
|
|
87
23
|
rescue LoadError
|
|
88
|
-
# puts "[metanorma] backend #{backend
|
|
89
|
-
false
|
|
24
|
+
# puts "[metanorma] backend #{backend} not present"
|
|
90
25
|
end
|
|
91
26
|
end
|
|
92
27
|
puts
|
|
93
28
|
|
|
94
29
|
options = {
|
|
95
|
-
format:
|
|
30
|
+
format: :asciidoc
|
|
96
31
|
}
|
|
97
|
-
|
|
98
|
-
backend_keys = backends_enabled.map {|b| b[:short].to_s }
|
|
99
|
-
|
|
100
32
|
opt_parser = OptionParser.new do |opts|
|
|
101
33
|
opts.banner += " <file>"
|
|
102
34
|
opts.on(
|
|
103
35
|
'-t',
|
|
104
36
|
'--type TYPE',
|
|
105
|
-
"Type of standard to generate: #{
|
|
106
|
-
) { |v| options[:type] = v }
|
|
37
|
+
"Type of standard to generate: #{registry.supported_backends.join(", ")}"
|
|
38
|
+
) { |v| options[:type] = v.to_sym }
|
|
39
|
+
|
|
40
|
+
opts.on(
|
|
41
|
+
'-x',
|
|
42
|
+
'--extensions EXT1,EXT2,...',
|
|
43
|
+
Array,
|
|
44
|
+
"Type of extension to generate per type: #{registry.output_formats}"
|
|
45
|
+
) { |v| options[:extension_keys] = v.map(&:to_sym) }
|
|
107
46
|
|
|
108
47
|
opts.on(
|
|
109
48
|
'-f',
|
|
110
49
|
'--format FORMAT',
|
|
111
50
|
'Format of source file: asciidoc (current default, only format supported)'
|
|
112
|
-
) { |v| options[:format] = v }
|
|
51
|
+
) { |v| options[:format] = v.to_sym }
|
|
113
52
|
|
|
114
53
|
opts.on(
|
|
115
54
|
'-r',
|
|
@@ -120,6 +59,12 @@ opt_parser = OptionParser.new do |opts|
|
|
|
120
59
|
options[:require] << v
|
|
121
60
|
}
|
|
122
61
|
|
|
62
|
+
opts.on(
|
|
63
|
+
'-v',
|
|
64
|
+
'--version',
|
|
65
|
+
"Print version of code",
|
|
66
|
+
) { options[:version] = true }
|
|
67
|
+
|
|
123
68
|
opts.on_tail("-h", "--help", "Show this message") do
|
|
124
69
|
puts opts
|
|
125
70
|
exit
|
|
@@ -128,6 +73,26 @@ opt_parser = OptionParser.new do |opts|
|
|
|
128
73
|
end
|
|
129
74
|
|
|
130
75
|
opt_parser.parse!(ARGV)
|
|
76
|
+
|
|
77
|
+
# TODO: move this to individual Processors
|
|
78
|
+
if options[:version]
|
|
79
|
+
case options[:type]
|
|
80
|
+
when :iso
|
|
81
|
+
puts "Asciidoctor::ISO #{Asciidoctor::ISO::VERSION}/IsoDoc #{IsoDoc::VERSION}"
|
|
82
|
+
when :gb
|
|
83
|
+
puts "Asciidoctor::Gb #{Asciidoctor::Gb::VERSION}"
|
|
84
|
+
when :csd
|
|
85
|
+
puts "Asciidoctor::Csd #{Asciidoctor::Csd::VERSION}"
|
|
86
|
+
when :csand
|
|
87
|
+
puts "Asciidoctor::Csand #{Asciidoctor::Csand::VERSION}"
|
|
88
|
+
when :m3d
|
|
89
|
+
puts "Asciidoctor::M3d #{Asciidoctor::M3d::VERSION}"
|
|
90
|
+
when :rsd
|
|
91
|
+
puts "Asciidoctor::Rsd #{Asciidoctor::Rsd::VERSION}"
|
|
92
|
+
end
|
|
93
|
+
exit
|
|
94
|
+
end
|
|
95
|
+
|
|
131
96
|
options[:filename] = ARGV.pop
|
|
132
97
|
|
|
133
98
|
unless options[:type]
|
|
@@ -136,12 +101,12 @@ unless options[:type]
|
|
|
136
101
|
exit 0
|
|
137
102
|
end
|
|
138
103
|
|
|
139
|
-
unless
|
|
104
|
+
unless registry.supported_backends.include? options[:type]
|
|
140
105
|
puts "[metanorma] Error: #{options[:type]} is not a supported standard type."
|
|
141
106
|
exit 0
|
|
142
107
|
end
|
|
143
108
|
|
|
144
|
-
unless options[:format] ==
|
|
109
|
+
unless options[:format] == :asciidoc
|
|
145
110
|
puts "[metanorma] Error: Only source file format currently supported is 'asciidoc'."
|
|
146
111
|
exit 0
|
|
147
112
|
end
|
|
@@ -158,33 +123,19 @@ if options[:require]
|
|
|
158
123
|
end
|
|
159
124
|
|
|
160
125
|
case options[:format]
|
|
161
|
-
when
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
IsoDoc::Iso::Convert.new(options.merge(alt: true)).convert(filename + "_alt", xml)
|
|
175
|
-
IsoDoc::Iso::WordConvert.new(options).convert(filename, xml)
|
|
176
|
-
when "gb"
|
|
177
|
-
IsoDoc::Gb::Convert.new(options).convert(filename, xml)
|
|
178
|
-
IsoDoc::Gb::WordConvert.new(options).convert(filename, xml)
|
|
179
|
-
when "csd"
|
|
180
|
-
IsoDoc::Csd::Convert.new(options).convert(filename, xml)
|
|
181
|
-
pdf_convert(filename)
|
|
182
|
-
when "csand"
|
|
183
|
-
IsoDoc::Csand::Convert.new(options).convert(filename, xml)
|
|
184
|
-
when "m3d"
|
|
185
|
-
IsoDoc::M3d::Convert.new(options).convert(filename, xml)
|
|
186
|
-
IsoDoc::M3d::WordConvert.new(options).convert(filename, xml)
|
|
187
|
-
end
|
|
126
|
+
when :asciidoc
|
|
127
|
+
processor = registry.find_processor(options[:type].to_sym)
|
|
128
|
+
|
|
129
|
+
file = File.read(options[:filename], encoding: "utf-8")
|
|
130
|
+
isodoc = processor.input_to_isodoc(file)
|
|
131
|
+
|
|
132
|
+
options[:extension_keys].each do |ext|
|
|
133
|
+
|
|
134
|
+
file_extension = processor.output_formats[ext]
|
|
135
|
+
outfilename = options[:filename].sub(/\.[^.]+$/, ".#{file_extension}")
|
|
136
|
+
# puts "made outfilename #{outfilename}"
|
|
137
|
+
processor.output(isodoc, outfilename, ext)
|
|
138
|
+
|
|
188
139
|
end
|
|
189
140
|
end
|
|
190
141
|
|
|
File without changes
|
data/lib/metanorma.rb
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
|
|
2
|
+
module Metanorma
|
|
3
|
+
module Input
|
|
4
|
+
|
|
5
|
+
class Asciidoc < Base
|
|
6
|
+
|
|
7
|
+
def process(file, type)
|
|
8
|
+
Asciidoctor.convert(
|
|
9
|
+
file,
|
|
10
|
+
to_file: false,
|
|
11
|
+
safe: :safe,
|
|
12
|
+
backend: type,
|
|
13
|
+
header_footer: true,
|
|
14
|
+
attributes: %w(nodoc stem xrefstyle=short)
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def extract_options(file)
|
|
19
|
+
header = file.sub(/\n\n.*$/m, "")
|
|
20
|
+
|
|
21
|
+
/\nscript: (?<script>[^\n]+)\n/ =~ header
|
|
22
|
+
/\nbody-font: (?<bodyfont>[^\n]+)\n/ =~ header
|
|
23
|
+
/\nheader-font: (?<headerfont>[^\n]+)\n/ =~ header
|
|
24
|
+
/\nmonospace-font: (?<monospacefont>[^\n]+)\n/ =~ header
|
|
25
|
+
/\ntitle-font: (?<titlefont>[^\n]+)\n/ =~ header
|
|
26
|
+
/\ni18nyaml: (?<ni18nyaml>[^\n]+)\n/ =~ header
|
|
27
|
+
{
|
|
28
|
+
script: defined?(script) ? script : nil,
|
|
29
|
+
bodyfont: defined?(bodyfont) ? bodyfont : nil,
|
|
30
|
+
headerfont: defined?(headerfont) ? headerfont : nil,
|
|
31
|
+
monospacefont: defined?(monospacefont) ? monospacefont : nil,
|
|
32
|
+
titlefont: defined?(titlefont) ? titlefont : nil,
|
|
33
|
+
i18nyaml: defined?(i18nyaml) ? i18nyaml : nil,
|
|
34
|
+
}.reject { |_, val| val.nil? }.map
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Metanorma
|
|
2
|
+
module Output
|
|
3
|
+
class Pdf < Base
|
|
4
|
+
|
|
5
|
+
def convert(url_path, output_path)
|
|
6
|
+
file_url = "file://#{url_path}"
|
|
7
|
+
pdfjs = File.join(File.dirname(__FILE__), '../../../exe/metanorma-pdf.js')
|
|
8
|
+
puts "export NODE_PATH=$(npm root --quiet -g);
|
|
9
|
+
node #{pdfjs} #{file_url} #{output_path}"
|
|
10
|
+
system "export NODE_PATH=$(npm root --quiet -g);
|
|
11
|
+
node #{pdfjs} #{file_url} #{output_path}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Registry of all Metanorma types and entry points
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
module Metanorma
|
|
5
|
+
class Processor
|
|
6
|
+
|
|
7
|
+
attr_reader :short
|
|
8
|
+
attr_reader :input_format
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
raise "This is an abstract class!"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def output_formats
|
|
15
|
+
raise "This is an abstract class!"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def input_to_isodoc(file)
|
|
19
|
+
raise "This is an abstract class!"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def output(isodoc_node, outname, format, options={})
|
|
23
|
+
raise "This is an abstract class!"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Registry of all Metanorma types and entry points
|
|
2
|
+
#
|
|
3
|
+
|
|
4
|
+
require 'singleton'
|
|
5
|
+
|
|
6
|
+
module Metanorma
|
|
7
|
+
class Registry
|
|
8
|
+
include Singleton
|
|
9
|
+
|
|
10
|
+
attr_reader :processors
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@processors = {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def register processor
|
|
17
|
+
raise Error unless processor < ::Metanorma::Processor
|
|
18
|
+
p = processor.new
|
|
19
|
+
puts "[metanorma] processor \"#{p.short}\" registered"
|
|
20
|
+
@processors[p.short] = p
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def find_processor(short)
|
|
24
|
+
@processors[short.to_sym]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def supported_backends
|
|
28
|
+
@processors.keys
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def processors
|
|
32
|
+
@processors
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def output_formats
|
|
36
|
+
@processors.inject({}) do |acc, (k,v)|
|
|
37
|
+
acc[k] = v.output_formats
|
|
38
|
+
acc
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/metanorma/version.rb
CHANGED
data/metanorma.gemspec
CHANGED
|
@@ -27,10 +27,11 @@ Gem::Specification.new do |spec|
|
|
|
27
27
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
28
28
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
29
29
|
|
|
30
|
-
spec.add_runtime_dependency 'asciidoctor-iso', ">= 0.
|
|
31
|
-
spec.add_runtime_dependency 'asciidoctor-rfc', ">= 0.
|
|
32
|
-
spec.add_runtime_dependency 'asciidoctor-gb', ">= 0.
|
|
33
|
-
spec.add_runtime_dependency 'asciidoctor-csd', ">= 0.
|
|
34
|
-
spec.add_runtime_dependency 'asciidoctor-csand', ">= 0.
|
|
35
|
-
|
|
30
|
+
spec.add_runtime_dependency 'asciidoctor-iso', ">= 0.9.0"
|
|
31
|
+
spec.add_runtime_dependency 'asciidoctor-rfc', ">= 0.9.0"
|
|
32
|
+
spec.add_runtime_dependency 'asciidoctor-gb', ">= 0.3.0"
|
|
33
|
+
spec.add_runtime_dependency 'asciidoctor-csd', ">= 0.4.0"
|
|
34
|
+
spec.add_runtime_dependency 'asciidoctor-csand', ">= 0.3.0"
|
|
35
|
+
spec.add_runtime_dependency 'asciidoctor-rsd', ">= 0.3.0"
|
|
36
|
+
spec.add_runtime_dependency 'isodoc', ">= 0.8.0"
|
|
36
37
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-06-
|
|
11
|
+
date: 2018-06-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -58,77 +58,105 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0.
|
|
61
|
+
version: 0.9.0
|
|
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.
|
|
68
|
+
version: 0.9.0
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: asciidoctor-rfc
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
75
|
+
version: 0.9.0
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - ">="
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 0.9.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: asciidoctor-gb
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.
|
|
89
|
+
version: 0.3.0
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.
|
|
96
|
+
version: 0.3.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: asciidoctor-csd
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - ">="
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 0.
|
|
103
|
+
version: 0.4.0
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - ">="
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 0.
|
|
110
|
+
version: 0.4.0
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: asciidoctor-csand
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: 0.
|
|
117
|
+
version: 0.3.0
|
|
118
118
|
type: :runtime
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
122
|
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: 0.
|
|
124
|
+
version: 0.3.0
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: asciidoctor-rsd
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: 0.3.0
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: 0.3.0
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: isodoc
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: 0.8.0
|
|
146
|
+
type: :runtime
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: 0.8.0
|
|
125
153
|
description: Metanorma is the standard of standards; the metanorma gem allows you
|
|
126
154
|
to create any standard document type supported by Metanorma.
|
|
127
155
|
email:
|
|
128
156
|
- open.source@ribose.com
|
|
129
157
|
executables:
|
|
130
158
|
- metanorma
|
|
131
|
-
- pdf.js
|
|
159
|
+
- metanorma-pdf.js
|
|
132
160
|
extensions: []
|
|
133
161
|
extra_rdoc_files:
|
|
134
162
|
- README.adoc
|
|
@@ -148,8 +176,17 @@ files:
|
|
|
148
176
|
- bin/console
|
|
149
177
|
- bin/setup
|
|
150
178
|
- exe/metanorma
|
|
151
|
-
- exe/pdf.js
|
|
179
|
+
- exe/metanorma-pdf.js
|
|
152
180
|
- lib/metanorma.rb
|
|
181
|
+
- lib/metanorma/document.rb
|
|
182
|
+
- lib/metanorma/input.rb
|
|
183
|
+
- lib/metanorma/input/asciidoc.rb
|
|
184
|
+
- lib/metanorma/input/base.rb
|
|
185
|
+
- lib/metanorma/output.rb
|
|
186
|
+
- lib/metanorma/output/base.rb
|
|
187
|
+
- lib/metanorma/output/pdf.rb
|
|
188
|
+
- lib/metanorma/processor.rb
|
|
189
|
+
- lib/metanorma/registry.rb
|
|
153
190
|
- lib/metanorma/version.rb
|
|
154
191
|
- metanorma.gemspec
|
|
155
192
|
homepage: https://github.com/riboseinc/metanorma
|
|
@@ -171,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
171
208
|
version: '0'
|
|
172
209
|
requirements: []
|
|
173
210
|
rubyforge_project:
|
|
174
|
-
rubygems_version: 2.
|
|
211
|
+
rubygems_version: 2.7.7
|
|
175
212
|
signing_key:
|
|
176
213
|
specification_version: 4
|
|
177
214
|
summary: Metanorma is the standard of standards; the metanorma gem allows you to create
|