metanorma-generic 1.11.1 → 2.0.1
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 +4 -32
- data/.gitignore +10 -0
- data/README.adoc +1 -1
- data/lib/asciidoctor/generic/converter.rb +2 -182
- data/lib/asciidoctor/generic/deprecated.rb +5 -0
- data/lib/asciidoctor/generic/front.rb +2 -107
- data/lib/asciidoctor/generic.rb +2 -6
- data/lib/isodoc/generic/html/htmlstyle.scss +17 -12
- data/lib/isodoc/generic/html/scripts.html +0 -1
- data/lib/isodoc/generic/html/wordstyle.scss +30 -18
- data/lib/{asciidoctor → metanorma}/generic/basicdoc.rng +0 -0
- data/lib/{asciidoctor → metanorma}/generic/biblio.rng +0 -0
- data/lib/metanorma/generic/converter.rb +183 -0
- data/lib/metanorma/generic/front.rb +108 -0
- data/lib/{asciidoctor → metanorma}/generic/generic.rng +0 -0
- data/lib/{asciidoctor → metanorma}/generic/isodoc.rng +49 -2
- data/lib/{asciidoctor → metanorma}/generic/reqt.rng +0 -0
- data/lib/{asciidoctor → metanorma}/generic/rsd.rng +0 -0
- data/lib/metanorma/generic/version.rb +1 -1
- data/lib/metanorma/generic.rb +10 -21
- data/lib/metanorma-generic.rb +1 -1
- data/metanorma-generic.gemspec +1 -1
- data/metanorma.yml.example +1 -1
- metadata +14 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fa88f0baa395e56b19c26fbeb278c4b4424368d23c20282d1d41e1c2b0adfff
|
4
|
+
data.tar.gz: c0ca25b62c407cd76125ecba1a97e48557b4f90adf31eb34841ba1dee94a3657
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ab1796a867d326954a8e42668b77bf7b26febe4bc658d44a2f8ddab232c18834911cca7b4b7225bddffbe429d553aea5484fdb50db35f6f0adbcc9758d3e4ca
|
7
|
+
data.tar.gz: 9658b9faf8d7c0d70b65c8d0458534809acf4744401ec9ff899512dd3db04a94706fa25c983befe7aa633aca525a5f2ab3589426ba0b9fd48c497ba5d3f71c64
|
data/.github/workflows/rake.yml
CHANGED
@@ -9,35 +9,7 @@ on:
|
|
9
9
|
pull_request:
|
10
10
|
|
11
11
|
jobs:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
strategy:
|
17
|
-
fail-fast: false
|
18
|
-
matrix:
|
19
|
-
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
20
|
-
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
21
|
-
experimental: [ false ]
|
22
|
-
steps:
|
23
|
-
- uses: actions/checkout@v2
|
24
|
-
with:
|
25
|
-
submodules: true
|
26
|
-
|
27
|
-
- uses: ruby/setup-ruby@v1
|
28
|
-
with:
|
29
|
-
ruby-version: ${{ matrix.ruby }}
|
30
|
-
bundler-cache: true
|
31
|
-
|
32
|
-
- run: bundle exec rake
|
33
|
-
|
34
|
-
tests-passed:
|
35
|
-
needs: rake
|
36
|
-
runs-on: ubuntu-latest
|
37
|
-
steps:
|
38
|
-
- uses: peter-evans/repository-dispatch@v1
|
39
|
-
with:
|
40
|
-
token: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
|
41
|
-
repository: ${{ github.repository }}
|
42
|
-
event-type: tests-passed
|
43
|
-
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
|
12
|
+
notify:
|
13
|
+
uses: metanorma/metanorma-build-scripts/.github/workflows/mn-processor-rake.yml@main
|
14
|
+
secrets:
|
15
|
+
pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|
data/.gitignore
CHANGED
data/README.adoc
CHANGED
@@ -31,7 +31,7 @@ Metanorma::Generic.configure do |config|
|
|
31
31
|
config.document_namespace = 'https://open.ribose.com/standards/mine'
|
32
32
|
config.xml_root_tag = 'mine-standard'
|
33
33
|
config.logo_path = '/metanorma-mine/lib/isodoc/mine/html/logo.jpg'
|
34
|
-
config.validate_rng_file = '/metanorma-mine/lib/
|
34
|
+
config.validate_rng_file = '/metanorma-mine/lib/metanorma/mine/mine.rng'
|
35
35
|
config.htmlcoverpage = '/metanorma-mine/lib/isodoc/mine/html/html_mine_titlepage.html'
|
36
36
|
config.htmlintropage = '/metanorma-mine/lib/isodoc/mine/html/html_mine_intro.html'
|
37
37
|
config.htmlstylesheet = '/metanorma-mine/lib/isodoc/mine/html/htmlstyle.scss'
|
@@ -1,183 +1,3 @@
|
|
1
|
-
require "asciidoctor"
|
2
|
-
require "
|
3
|
-
require "fileutils"
|
4
|
-
require_relative "front"
|
1
|
+
require "asciidoctor/generic/deprecated"
|
2
|
+
require "metanorma/generic/converter"
|
5
3
|
|
6
|
-
module Asciidoctor
|
7
|
-
module Generic
|
8
|
-
class Converter < Standoc::Converter
|
9
|
-
XML_ROOT_TAG = "generic-standard".freeze
|
10
|
-
XML_NAMESPACE = "https://www.metanorma.org/ns/generic".freeze
|
11
|
-
|
12
|
-
register_for "generic"
|
13
|
-
|
14
|
-
def xml_root_tag
|
15
|
-
configuration.xml_root_tag || XML_ROOT_TAG
|
16
|
-
end
|
17
|
-
|
18
|
-
def xml_namespace
|
19
|
-
configuration.document_namespace || XML_NAMESPACE
|
20
|
-
end
|
21
|
-
|
22
|
-
def baselocation(loc)
|
23
|
-
return nil if loc.nil?
|
24
|
-
|
25
|
-
return loc
|
26
|
-
File.expand_path(File.join(File.dirname(
|
27
|
-
self.class::_file || __FILE__,
|
28
|
-
), "..", "..", "..", loc))
|
29
|
-
end
|
30
|
-
|
31
|
-
def docidentifier_cleanup(xmldoc)
|
32
|
-
template = configuration.docid_template ||
|
33
|
-
"{{ organization_name_short }} {{ docnumeric }}"
|
34
|
-
docid = xmldoc.at("//bibdata/docidentifier")
|
35
|
-
id = boilerplate_isodoc(xmldoc).populate_template(template, nil)
|
36
|
-
id.empty? and docid.remove or docid.children = id
|
37
|
-
end
|
38
|
-
|
39
|
-
def doctype(node)
|
40
|
-
d = super
|
41
|
-
configuration.doctypes or return d == "article" ?
|
42
|
-
(configuration.default_doctype || "standard") : d
|
43
|
-
type = configuration.default_doctype ||
|
44
|
-
configuration.doctypes.keys.dig(0) || "standard"
|
45
|
-
unless configuration.doctypes.keys.include? d
|
46
|
-
@log.add("Document Attributes", nil,
|
47
|
-
"#{d} is not a legal document type: reverting to '#{type}'")
|
48
|
-
d = type
|
49
|
-
end
|
50
|
-
d
|
51
|
-
end
|
52
|
-
|
53
|
-
def read_config_file(path_to_config_file)
|
54
|
-
Metanorma::Generic.configuration
|
55
|
-
.set_default_values_from_yaml_file(path_to_config_file)
|
56
|
-
end
|
57
|
-
|
58
|
-
def sectiontype_streamline(ret)
|
59
|
-
if configuration&.termsdefs_titles&.map(&:downcase)&.include? ret
|
60
|
-
"terms and definitions"
|
61
|
-
elsif configuration&.symbols_titles&.map(&:downcase)&.include? ret
|
62
|
-
"symbols and abbreviated terms"
|
63
|
-
elsif configuration&.normref_titles&.map(&:downcase)&.include? ret
|
64
|
-
"normative references"
|
65
|
-
elsif configuration&.bibliography_titles&.map(&:downcase)&.include? ret
|
66
|
-
"bibliography"
|
67
|
-
else
|
68
|
-
ret
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def document(node)
|
73
|
-
read_config_file(node.attr("customize")) if node.attr("customize")
|
74
|
-
super
|
75
|
-
end
|
76
|
-
|
77
|
-
def outputs(node, ret)
|
78
|
-
File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
|
79
|
-
presentation_xml_converter(node)&.convert("#{@filename}.xml")
|
80
|
-
html_converter(node)&.convert("#{@filename}.presentation.xml",
|
81
|
-
nil, false, "#{@filename}.html")
|
82
|
-
doc_converter(node)&.convert("#{@filename}.presentation.xml",
|
83
|
-
nil, false, "#{@filename}.doc")
|
84
|
-
pdf_converter(node)&.convert("#{@filename}.presentation.xml",
|
85
|
-
nil, false, "#{@filename}.pdf")
|
86
|
-
end
|
87
|
-
|
88
|
-
def validate(doc)
|
89
|
-
content_validate(doc)
|
90
|
-
schema_validate(formattedstr_strip(doc.dup),
|
91
|
-
baselocation(configuration.validate_rng_file) ||
|
92
|
-
File.join(File.dirname(__FILE__), "generic.rng"))
|
93
|
-
end
|
94
|
-
|
95
|
-
def content_validate(doc)
|
96
|
-
super
|
97
|
-
bibdata_validate(doc.root)
|
98
|
-
end
|
99
|
-
|
100
|
-
def bibdata_validate(doc)
|
101
|
-
stage_validate(doc)
|
102
|
-
committee_validate(doc)
|
103
|
-
end
|
104
|
-
|
105
|
-
def stage_validate(xmldoc)
|
106
|
-
stages = configuration&.stage_abbreviations&.keys || return
|
107
|
-
stages.empty? and return
|
108
|
-
stage = xmldoc&.at("//bibdata/status/stage")&.text
|
109
|
-
stages.include? stage or
|
110
|
-
@log.add("Document Attributes", nil,
|
111
|
-
"#{stage} is not a recognised status")
|
112
|
-
end
|
113
|
-
|
114
|
-
def committee_validate(xmldoc)
|
115
|
-
committees = Array(configuration&.committees) || return
|
116
|
-
committees.empty? and return
|
117
|
-
xmldoc.xpath("//bibdata/ext/editorialgroup/committee").each do |c|
|
118
|
-
committees.include? c.text or
|
119
|
-
@log.add("Document Attributes", nil,
|
120
|
-
"#{c.text} is not a recognised committee")
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def sections_cleanup(xml)
|
125
|
-
super
|
126
|
-
xml.xpath("//*[@inline-header]").each do |h|
|
127
|
-
h.delete("inline-header")
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
def blank_method(*args); end
|
132
|
-
|
133
|
-
def html_converter(node)
|
134
|
-
IsoDoc::Generic::HtmlConvert.new(html_extract_attributes(node))
|
135
|
-
end
|
136
|
-
|
137
|
-
def presentation_xml_converter(node)
|
138
|
-
IsoDoc::Generic::PresentationXMLConvert
|
139
|
-
.new(html_extract_attributes(node))
|
140
|
-
end
|
141
|
-
|
142
|
-
alias_method :pdf_converter, :html_converter
|
143
|
-
alias_method :style, :blank_method
|
144
|
-
alias_method :title_validate, :blank_method
|
145
|
-
|
146
|
-
def doc_converter(node)
|
147
|
-
IsoDoc::Generic::WordConvert.new(doc_extract_attributes(node))
|
148
|
-
end
|
149
|
-
|
150
|
-
def configuration
|
151
|
-
Metanorma::Generic.configuration
|
152
|
-
end
|
153
|
-
|
154
|
-
def boilerplate_isodoc(xmldoc)
|
155
|
-
conv = super
|
156
|
-
Metanorma::Generic::Configuration::CONFIG_ATTRS.each do |a|
|
157
|
-
conv.meta.set(a, configuration.send(a))
|
158
|
-
end
|
159
|
-
conv
|
160
|
-
end
|
161
|
-
|
162
|
-
def boilerplate_file(xmldoc)
|
163
|
-
f = configuration.boilerplate
|
164
|
-
f.nil? and return super
|
165
|
-
f.is_a? String and return baselocation(f)
|
166
|
-
f.is_a? Hash and f[@lang] and return baselocation(f[@lang])
|
167
|
-
super
|
168
|
-
end
|
169
|
-
|
170
|
-
def cleanup(xmldoc)
|
171
|
-
super
|
172
|
-
empty_metadata_cleanup(xmldoc)
|
173
|
-
xmldoc
|
174
|
-
end
|
175
|
-
|
176
|
-
def empty_metadata_cleanup(xmldoc)
|
177
|
-
xmldoc.xpath("//bibdata/ext//*").each do |x|
|
178
|
-
x.remove if x.children.empty?
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
warn "Please replace your references to Asciidoctor::Generic with Metanorma::Generic and your instances of require 'asciidoctor/generic' with require 'metanorma/generic'"
|
2
|
+
|
3
|
+
exit 127 if ENV['METANORMA_DEPRECATION_FAIL']
|
4
|
+
|
5
|
+
Asciidoctor::Generic = Metanorma::Generic unless defined? Asciidoctor::Generic
|
@@ -1,108 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class Converter < Standoc::Converter
|
4
|
-
def default_publisher
|
5
|
-
configuration.organization_name_long
|
6
|
-
end
|
1
|
+
require "asciidoctor/generic/deprecated"
|
2
|
+
require "metanorma/generic/front"
|
7
3
|
|
8
|
-
def org_abbrev
|
9
|
-
if !configuration.organization_name_long.empty? &&
|
10
|
-
!configuration.organization_name_short.empty? &&
|
11
|
-
configuration.organization_name_long !=
|
12
|
-
configuration.organization_name_short
|
13
|
-
{ configuration.organization_name_long =>
|
14
|
-
configuration.organization_name_short }
|
15
|
-
else
|
16
|
-
super
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def relaton_relations
|
21
|
-
Array(configuration.relations) || []
|
22
|
-
end
|
23
|
-
|
24
|
-
def metadata_committee(node, xml)
|
25
|
-
return unless node.attr("committee")
|
26
|
-
xml.editorialgroup do |a|
|
27
|
-
a.committee node.attr("committee"),
|
28
|
-
**attr_code(type: node.attr("committee-type"))
|
29
|
-
i = 2
|
30
|
-
while node.attr("committee_#{i}") do
|
31
|
-
a.committee node.attr("committee_#{i}"),
|
32
|
-
**attr_code(type: node.attr("committee-type_#{i}"))
|
33
|
-
i += 1
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def metadata_status(node, xml)
|
39
|
-
xml.status do |s|
|
40
|
-
s.stage ( node.attr("status") || node.attr("docstage") ||
|
41
|
-
configuration.default_stage || "published" )
|
42
|
-
x = node.attr("substage") and s.substage x
|
43
|
-
x = node.attr("iteration") and s.iteration x
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def metadata_id(node, xml)
|
48
|
-
xml.docidentifier **{ type:
|
49
|
-
configuration.organization_name_short } do |i|
|
50
|
-
i << "DUMMY"
|
51
|
-
end
|
52
|
-
xml.docnumber { |i| i << node.attr("docnumber") }
|
53
|
-
end
|
54
|
-
|
55
|
-
def metadata_ext(node, ext)
|
56
|
-
super
|
57
|
-
if configuration.metadata_extensions.is_a? Hash
|
58
|
-
metadata_ext_hash(node, ext, configuration.metadata_extensions)
|
59
|
-
else
|
60
|
-
Array(configuration.metadata_extensions).each do |e|
|
61
|
-
a = node.attr(e) and ext.send e, a
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def metadata_doctype(node, xml)
|
67
|
-
d = doctype(node)
|
68
|
-
xml.doctype d, attr_code(abbreviation: configuration&.doctypes&.dig(d))
|
69
|
-
end
|
70
|
-
|
71
|
-
EXT_STRUCT = %w(_output _attribute _list).freeze
|
72
|
-
|
73
|
-
def metadata_ext_hash(node, ext, hash)
|
74
|
-
hash.each do |k, v|
|
75
|
-
next if EXT_STRUCT.include?(k) || !v&.is_a?(Hash) && !node.attr(k)
|
76
|
-
if v&.is_a?(Hash) && v["_list"]
|
77
|
-
csv_split(node.attr(k), ",").each do |val|
|
78
|
-
metadata_ext_hash1(k, val, ext, v, node)
|
79
|
-
end
|
80
|
-
else
|
81
|
-
metadata_ext_hash1(k, node.attr(k), ext, v, node)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def metadata_ext_hash1(key, value, ext, hash, node)
|
87
|
-
return if hash&.is_a?(Hash) && hash["_attribute"]
|
88
|
-
is_hash = hash&.is_a?(Hash) &&
|
89
|
-
!hash.keys.reject { |n| EXT_STRUCT.include?(n) }.empty?
|
90
|
-
return if !is_hash && (value.nil? || value.empty?)
|
91
|
-
name = hash&.is_a?(Hash) ? (hash["_output"] || key) : key
|
92
|
-
ext.send name, **attr_code(metadata_ext_attrs(hash, node)) do |e|
|
93
|
-
is_hash ? metadata_ext_hash(node, e, hash) : (e << value)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def metadata_ext_attrs(hash, node)
|
98
|
-
return {} unless hash.is_a?(Hash)
|
99
|
-
ret = {}
|
100
|
-
hash.each do |k, v|
|
101
|
-
next unless v.is_a?(Hash) && v["_attribute"]
|
102
|
-
ret[(v["_output"] || k).to_sym] = node.attr(k)
|
103
|
-
end
|
104
|
-
ret
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
data/lib/asciidoctor/generic.rb
CHANGED
@@ -16,7 +16,7 @@ body {
|
|
16
16
|
|
17
17
|
main {margin: 0 3em 0 6em;}
|
18
18
|
|
19
|
-
#toc {
|
19
|
+
#toc, #toc > ul > :is(.h1, .h2, .h3, .h4, .h5, .h6) {
|
20
20
|
@include toc(#485094, #1661AD, #485094);
|
21
21
|
@include sidebarToc();
|
22
22
|
.toc-active a {
|
@@ -33,6 +33,11 @@ main {margin: 0 3em 0 6em;}
|
|
33
33
|
}
|
34
34
|
}
|
35
35
|
|
36
|
+
#toc > ul > :is(.h1, .h2, .h3, .h4, .h5, .h6) {
|
37
|
+
margin-top: 0;
|
38
|
+
margin-bottom: 0;
|
39
|
+
}
|
40
|
+
|
36
41
|
nav {
|
37
42
|
@include sidebarNav(#f7f7f7, 323px, 45px);
|
38
43
|
}
|
@@ -66,7 +71,7 @@ nav {
|
|
66
71
|
margin-top: 1em;
|
67
72
|
}
|
68
73
|
|
69
|
-
ul#toc-list {
|
74
|
+
ul#toc-list, ul#toc-list > :is(.h1, .h2, .h3, .h4, .h5, .h6) {
|
70
75
|
padding:0;
|
71
76
|
margin:0;
|
72
77
|
}
|
@@ -186,7 +191,7 @@ p.document-stage {
|
|
186
191
|
3.1 Titles
|
187
192
|
*/
|
188
193
|
|
189
|
-
h1,h2,h3,h4,h5,h6 {
|
194
|
+
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6 {
|
190
195
|
font-family: $headerfont;
|
191
196
|
color: #1661AD;
|
192
197
|
font-weight: 300;
|
@@ -194,23 +199,23 @@ h1,h2,h3,h4,h5,h6 {
|
|
194
199
|
margin-bottom: 0.3em;
|
195
200
|
}
|
196
201
|
|
197
|
-
h1 {
|
202
|
+
h1,.h1 {
|
198
203
|
font-size: 1.6em;
|
199
204
|
text-transform: uppercase;
|
200
205
|
margin-top: 2em;
|
201
206
|
}
|
202
207
|
|
203
|
-
h1#content {
|
208
|
+
h1#content, .h1#content {
|
204
209
|
margin-top: 2em;
|
205
210
|
}
|
206
211
|
|
207
|
-
h2 {
|
212
|
+
h2,.h2 {
|
208
213
|
margin-top: 1.3em;
|
209
214
|
font-size: 1.3em;
|
210
215
|
font-weight: 400;
|
211
216
|
}
|
212
217
|
|
213
|
-
h3 {
|
218
|
+
h3,.h3 {
|
214
219
|
margin-top: 1.1em;
|
215
220
|
font-size: 1.1em;
|
216
221
|
font-weight: 100;
|
@@ -640,7 +645,7 @@ To top button
|
|
640
645
|
page-break-after: always;
|
641
646
|
}
|
642
647
|
|
643
|
-
h1, h2, h3, h4 {
|
648
|
+
h1, h2, h3, h4, .h1, .h2, .h3, .h4 {
|
644
649
|
page-break-after: avoid;
|
645
650
|
margin-top: 1.2em;
|
646
651
|
}
|
@@ -675,21 +680,21 @@ To top button
|
|
675
680
|
padding-left: 0;
|
676
681
|
}
|
677
682
|
|
678
|
-
h1.content {
|
683
|
+
h1.content, .h1.content {
|
679
684
|
margin-top: 2em;
|
680
685
|
line-height: 2.5em;
|
681
686
|
}
|
682
687
|
|
683
|
-
h1 {
|
688
|
+
h1,.h1 {
|
684
689
|
font-size: 1.5em;
|
685
690
|
line-height: 1.5;
|
686
691
|
}
|
687
692
|
|
688
|
-
h2 {
|
693
|
+
h2,.h2 {
|
689
694
|
font-size: 1.2em
|
690
695
|
}
|
691
696
|
|
692
|
-
h3 {
|
697
|
+
h3,.h3 {
|
693
698
|
font-size: 1em;
|
694
699
|
}
|
695
700
|
|
@@ -338,7 +338,7 @@ div.figure, p.figure
|
|
338
338
|
{text-align: center;}
|
339
339
|
|
340
340
|
|
341
|
-
h1
|
341
|
+
h1,.h1
|
342
342
|
{mso-style-priority:1;
|
343
343
|
mso-style-unhide:no;
|
344
344
|
mso-style-qformat:yes;
|
@@ -352,8 +352,6 @@ h1
|
|
352
352
|
line-height:13.5pt;
|
353
353
|
mso-pagination:widow-orphan;
|
354
354
|
page-break-after:avoid;
|
355
|
-
mso-outline-level:1;
|
356
|
-
mso-list:l1 level1 lfo6;
|
357
355
|
mso-hyphenate:none;
|
358
356
|
tab-stops:20.0pt list 21.6pt left 28.0pt;
|
359
357
|
font-size:13.0pt;
|
@@ -365,6 +363,10 @@ h1
|
|
365
363
|
mso-ansi-language:EN-GB;
|
366
364
|
mso-fareast-language:JA;
|
367
365
|
mso-bidi-font-weight:normal;}
|
366
|
+
h1 {
|
367
|
+
mso-outline-level:1;
|
368
|
+
mso-list:l1 level1 lfo6;
|
369
|
+
}
|
368
370
|
h1.Annex
|
369
371
|
{mso-style-priority:1;
|
370
372
|
mso-style-unhide:no;
|
@@ -421,7 +423,7 @@ h1.Annex
|
|
421
423
|
mso-ansi-language:EN-GB;
|
422
424
|
mso-fareast-language:JA;
|
423
425
|
mso-bidi-font-weight:normal;}
|
424
|
-
h2
|
426
|
+
h2, .h2
|
425
427
|
{mso-style-priority:2;
|
426
428
|
mso-style-unhide:no;
|
427
429
|
mso-style-qformat:yes;
|
@@ -436,8 +438,6 @@ h2
|
|
436
438
|
line-height:12.5pt;
|
437
439
|
mso-pagination:widow-orphan;
|
438
440
|
page-break-after:avoid;
|
439
|
-
mso-outline-level:2;
|
440
|
-
mso-list:l1 level2 lfo6;
|
441
441
|
mso-hyphenate:none;
|
442
442
|
tab-stops:27.0pt 35.0pt;
|
443
443
|
font-size:12.0pt;
|
@@ -448,7 +448,11 @@ h2
|
|
448
448
|
mso-ansi-language:EN-GB;
|
449
449
|
mso-fareast-language:JA;
|
450
450
|
mso-bidi-font-weight:normal;}
|
451
|
-
|
451
|
+
h2 {
|
452
|
+
mso-outline-level:2;
|
453
|
+
mso-list:l1 level2 lfo6;
|
454
|
+
}
|
455
|
+
h3, .h3
|
452
456
|
{mso-style-priority:3;
|
453
457
|
mso-style-unhide:no;
|
454
458
|
mso-style-qformat:yes;
|
@@ -463,8 +467,6 @@ h3
|
|
463
467
|
line-height:12.0pt;
|
464
468
|
mso-pagination:widow-orphan;
|
465
469
|
page-break-after:avoid;
|
466
|
-
mso-outline-level:3;
|
467
|
-
mso-list:l1 level3 lfo6;
|
468
470
|
mso-hyphenate:none;
|
469
471
|
tab-stops:list 36.0pt left 44.0pt;
|
470
472
|
font-size:11.0pt;
|
@@ -474,7 +476,11 @@ h3
|
|
474
476
|
mso-ansi-language:EN-GB;
|
475
477
|
mso-fareast-language:JA;
|
476
478
|
mso-bidi-font-weight:normal;}
|
477
|
-
|
479
|
+
h3 {
|
480
|
+
mso-outline-level:3;
|
481
|
+
mso-list:l1 level3 lfo6;
|
482
|
+
}
|
483
|
+
h4, .h4
|
478
484
|
{mso-style-priority:4;
|
479
485
|
mso-style-unhide:no;
|
480
486
|
mso-style-qformat:yes;
|
@@ -489,8 +495,6 @@ h4
|
|
489
495
|
line-height:12.0pt;
|
490
496
|
mso-pagination:widow-orphan;
|
491
497
|
page-break-after:avoid;
|
492
|
-
mso-outline-level:4;
|
493
|
-
mso-list:l1 level4 lfo6;
|
494
498
|
mso-hyphenate:none;
|
495
499
|
tab-stops:51.05pt 57.0pt 68.0pt;
|
496
500
|
font-size:11.0pt;
|
@@ -500,7 +504,11 @@ h4
|
|
500
504
|
mso-ansi-language:EN-GB;
|
501
505
|
mso-fareast-language:JA;
|
502
506
|
mso-bidi-font-weight:normal;}
|
503
|
-
|
507
|
+
h4 {
|
508
|
+
mso-outline-level:4;
|
509
|
+
mso-list:l1 level4 lfo6;
|
510
|
+
}
|
511
|
+
h5, .h5
|
504
512
|
{mso-style-priority:5;
|
505
513
|
mso-style-unhide:no;
|
506
514
|
mso-style-qformat:yes;
|
@@ -515,8 +523,6 @@ h5
|
|
515
523
|
line-height:12.0pt;
|
516
524
|
mso-pagination:widow-orphan;
|
517
525
|
page-break-after:avoid;
|
518
|
-
mso-outline-level:5;
|
519
|
-
mso-list:l1 level5 lfo6;
|
520
526
|
mso-hyphenate:none;
|
521
527
|
tab-stops:51.05pt list 54.0pt;
|
522
528
|
font-size:11.0pt;
|
@@ -526,7 +532,11 @@ h5
|
|
526
532
|
mso-ansi-language:EN-GB;
|
527
533
|
mso-fareast-language:JA;
|
528
534
|
mso-bidi-font-weight:normal;}
|
529
|
-
|
535
|
+
h5 {
|
536
|
+
mso-outline-level:5;
|
537
|
+
mso-list:l1 level5 lfo6;
|
538
|
+
}
|
539
|
+
h6, .h6
|
530
540
|
{mso-style-priority:6;
|
531
541
|
mso-style-unhide:no;
|
532
542
|
mso-style-qformat:yes;
|
@@ -541,8 +551,6 @@ h6
|
|
541
551
|
line-height:12.0pt;
|
542
552
|
mso-pagination:widow-orphan;
|
543
553
|
page-break-after:avoid;
|
544
|
-
mso-outline-level:6;
|
545
|
-
mso-list:l1 level6 lfo6;
|
546
554
|
mso-hyphenate:none;
|
547
555
|
tab-stops:51.05pt list 72.0pt;
|
548
556
|
font-size:11.0pt;
|
@@ -552,6 +560,10 @@ h6
|
|
552
560
|
mso-ansi-language:EN-GB;
|
553
561
|
mso-fareast-language:JA;
|
554
562
|
mso-bidi-font-weight:normal;}
|
563
|
+
h6 {
|
564
|
+
mso-outline-level:6;
|
565
|
+
mso-list:l1 level6 lfo6;
|
566
|
+
}
|
555
567
|
p.MsoToc1, li.MsoToc1, div.MsoToc1
|
556
568
|
{mso-style-priority:39;
|
557
569
|
mso-style-unhide:no;
|
File without changes
|
File without changes
|
@@ -0,0 +1,183 @@
|
|
1
|
+
require "asciidoctor"
|
2
|
+
require "metanorma/standoc/converter"
|
3
|
+
require "fileutils"
|
4
|
+
require_relative "front"
|
5
|
+
|
6
|
+
module Metanorma
|
7
|
+
module Generic
|
8
|
+
class Converter < Standoc::Converter
|
9
|
+
XML_ROOT_TAG = "generic-standard".freeze
|
10
|
+
XML_NAMESPACE = "https://www.metanorma.org/ns/generic".freeze
|
11
|
+
|
12
|
+
register_for "generic"
|
13
|
+
|
14
|
+
def xml_root_tag
|
15
|
+
configuration.xml_root_tag || XML_ROOT_TAG
|
16
|
+
end
|
17
|
+
|
18
|
+
def xml_namespace
|
19
|
+
configuration.document_namespace || XML_NAMESPACE
|
20
|
+
end
|
21
|
+
|
22
|
+
def baselocation(loc)
|
23
|
+
return nil if loc.nil?
|
24
|
+
|
25
|
+
return loc
|
26
|
+
File.expand_path(File.join(File.dirname(
|
27
|
+
self.class::_file || __FILE__,
|
28
|
+
), "..", "..", "..", loc))
|
29
|
+
end
|
30
|
+
|
31
|
+
def docidentifier_cleanup(xmldoc)
|
32
|
+
template = configuration.docid_template ||
|
33
|
+
"{{ organization_name_short }} {{ docnumeric }}"
|
34
|
+
docid = xmldoc.at("//bibdata/docidentifier")
|
35
|
+
id = boilerplate_isodoc(xmldoc).populate_template(template, nil)
|
36
|
+
id.empty? and docid.remove or docid.children = id
|
37
|
+
end
|
38
|
+
|
39
|
+
def doctype(node)
|
40
|
+
d = super
|
41
|
+
configuration.doctypes or return d == "article" ?
|
42
|
+
(configuration.default_doctype || "standard") : d
|
43
|
+
type = configuration.default_doctype ||
|
44
|
+
configuration.doctypes.keys.dig(0) || "standard"
|
45
|
+
unless configuration.doctypes.keys.include? d
|
46
|
+
@log.add("Document Attributes", nil,
|
47
|
+
"#{d} is not a legal document type: reverting to '#{type}'")
|
48
|
+
d = type
|
49
|
+
end
|
50
|
+
d
|
51
|
+
end
|
52
|
+
|
53
|
+
def read_config_file(path_to_config_file)
|
54
|
+
Metanorma::Generic.configuration
|
55
|
+
.set_default_values_from_yaml_file(path_to_config_file)
|
56
|
+
end
|
57
|
+
|
58
|
+
def sectiontype_streamline(ret)
|
59
|
+
if configuration&.termsdefs_titles&.map(&:downcase)&.include? ret
|
60
|
+
"terms and definitions"
|
61
|
+
elsif configuration&.symbols_titles&.map(&:downcase)&.include? ret
|
62
|
+
"symbols and abbreviated terms"
|
63
|
+
elsif configuration&.normref_titles&.map(&:downcase)&.include? ret
|
64
|
+
"normative references"
|
65
|
+
elsif configuration&.bibliography_titles&.map(&:downcase)&.include? ret
|
66
|
+
"bibliography"
|
67
|
+
else
|
68
|
+
ret
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def document(node)
|
73
|
+
read_config_file(node.attr("customize")) if node.attr("customize")
|
74
|
+
super
|
75
|
+
end
|
76
|
+
|
77
|
+
def outputs(node, ret)
|
78
|
+
File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
|
79
|
+
presentation_xml_converter(node)&.convert("#{@filename}.xml")
|
80
|
+
html_converter(node)&.convert("#{@filename}.presentation.xml",
|
81
|
+
nil, false, "#{@filename}.html")
|
82
|
+
doc_converter(node)&.convert("#{@filename}.presentation.xml",
|
83
|
+
nil, false, "#{@filename}.doc")
|
84
|
+
pdf_converter(node)&.convert("#{@filename}.presentation.xml",
|
85
|
+
nil, false, "#{@filename}.pdf")
|
86
|
+
end
|
87
|
+
|
88
|
+
def validate(doc)
|
89
|
+
content_validate(doc)
|
90
|
+
schema_validate(formattedstr_strip(doc.dup),
|
91
|
+
baselocation(configuration.validate_rng_file) ||
|
92
|
+
File.join(File.dirname(__FILE__), "generic.rng"))
|
93
|
+
end
|
94
|
+
|
95
|
+
def content_validate(doc)
|
96
|
+
super
|
97
|
+
bibdata_validate(doc.root)
|
98
|
+
end
|
99
|
+
|
100
|
+
def bibdata_validate(doc)
|
101
|
+
stage_validate(doc)
|
102
|
+
committee_validate(doc)
|
103
|
+
end
|
104
|
+
|
105
|
+
def stage_validate(xmldoc)
|
106
|
+
stages = configuration&.stage_abbreviations&.keys || return
|
107
|
+
stages.empty? and return
|
108
|
+
stage = xmldoc&.at("//bibdata/status/stage")&.text
|
109
|
+
stages.include? stage or
|
110
|
+
@log.add("Document Attributes", nil,
|
111
|
+
"#{stage} is not a recognised status")
|
112
|
+
end
|
113
|
+
|
114
|
+
def committee_validate(xmldoc)
|
115
|
+
committees = Array(configuration&.committees) || return
|
116
|
+
committees.empty? and return
|
117
|
+
xmldoc.xpath("//bibdata/ext/editorialgroup/committee").each do |c|
|
118
|
+
committees.include? c.text or
|
119
|
+
@log.add("Document Attributes", nil,
|
120
|
+
"#{c.text} is not a recognised committee")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def sections_cleanup(xml)
|
125
|
+
super
|
126
|
+
xml.xpath("//*[@inline-header]").each do |h|
|
127
|
+
h.delete("inline-header")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def blank_method(*args); end
|
132
|
+
|
133
|
+
def html_converter(node)
|
134
|
+
IsoDoc::Generic::HtmlConvert.new(html_extract_attributes(node))
|
135
|
+
end
|
136
|
+
|
137
|
+
def presentation_xml_converter(node)
|
138
|
+
IsoDoc::Generic::PresentationXMLConvert
|
139
|
+
.new(html_extract_attributes(node))
|
140
|
+
end
|
141
|
+
|
142
|
+
alias_method :pdf_converter, :html_converter
|
143
|
+
alias_method :style, :blank_method
|
144
|
+
alias_method :title_validate, :blank_method
|
145
|
+
|
146
|
+
def doc_converter(node)
|
147
|
+
IsoDoc::Generic::WordConvert.new(doc_extract_attributes(node))
|
148
|
+
end
|
149
|
+
|
150
|
+
def configuration
|
151
|
+
Metanorma::Generic.configuration
|
152
|
+
end
|
153
|
+
|
154
|
+
def boilerplate_isodoc(xmldoc)
|
155
|
+
conv = super
|
156
|
+
Metanorma::Generic::Configuration::CONFIG_ATTRS.each do |a|
|
157
|
+
conv.meta.set(a, configuration.send(a))
|
158
|
+
end
|
159
|
+
conv
|
160
|
+
end
|
161
|
+
|
162
|
+
def boilerplate_file(xmldoc)
|
163
|
+
f = configuration.boilerplate
|
164
|
+
f.nil? and return super
|
165
|
+
f.is_a? String and return baselocation(f)
|
166
|
+
f.is_a? Hash and f[@lang] and return baselocation(f[@lang])
|
167
|
+
super
|
168
|
+
end
|
169
|
+
|
170
|
+
def cleanup(xmldoc)
|
171
|
+
super
|
172
|
+
empty_metadata_cleanup(xmldoc)
|
173
|
+
xmldoc
|
174
|
+
end
|
175
|
+
|
176
|
+
def empty_metadata_cleanup(xmldoc)
|
177
|
+
xmldoc.xpath("//bibdata/ext//*").each do |x|
|
178
|
+
x.remove if x.children.empty?
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
module Metanorma
|
2
|
+
module Generic
|
3
|
+
class Converter < Standoc::Converter
|
4
|
+
def default_publisher
|
5
|
+
configuration.organization_name_long
|
6
|
+
end
|
7
|
+
|
8
|
+
def org_abbrev
|
9
|
+
if !configuration.organization_name_long.empty? &&
|
10
|
+
!configuration.organization_name_short.empty? &&
|
11
|
+
configuration.organization_name_long !=
|
12
|
+
configuration.organization_name_short
|
13
|
+
{ configuration.organization_name_long =>
|
14
|
+
configuration.organization_name_short }
|
15
|
+
else
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def relaton_relations
|
21
|
+
Array(configuration.relations) || []
|
22
|
+
end
|
23
|
+
|
24
|
+
def metadata_committee(node, xml)
|
25
|
+
return unless node.attr("committee")
|
26
|
+
xml.editorialgroup do |a|
|
27
|
+
a.committee node.attr("committee"),
|
28
|
+
**attr_code(type: node.attr("committee-type"))
|
29
|
+
i = 2
|
30
|
+
while node.attr("committee_#{i}") do
|
31
|
+
a.committee node.attr("committee_#{i}"),
|
32
|
+
**attr_code(type: node.attr("committee-type_#{i}"))
|
33
|
+
i += 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def metadata_status(node, xml)
|
39
|
+
xml.status do |s|
|
40
|
+
s.stage ( node.attr("status") || node.attr("docstage") ||
|
41
|
+
configuration.default_stage || "published" )
|
42
|
+
x = node.attr("substage") and s.substage x
|
43
|
+
x = node.attr("iteration") and s.iteration x
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def metadata_id(node, xml)
|
48
|
+
xml.docidentifier **{ type:
|
49
|
+
configuration.organization_name_short } do |i|
|
50
|
+
i << "DUMMY"
|
51
|
+
end
|
52
|
+
xml.docnumber { |i| i << node.attr("docnumber") }
|
53
|
+
end
|
54
|
+
|
55
|
+
def metadata_ext(node, ext)
|
56
|
+
super
|
57
|
+
if configuration.metadata_extensions.is_a? Hash
|
58
|
+
metadata_ext_hash(node, ext, configuration.metadata_extensions)
|
59
|
+
else
|
60
|
+
Array(configuration.metadata_extensions).each do |e|
|
61
|
+
a = node.attr(e) and ext.send e, a
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def metadata_doctype(node, xml)
|
67
|
+
d = doctype(node)
|
68
|
+
xml.doctype d, attr_code(abbreviation: configuration&.doctypes&.dig(d))
|
69
|
+
end
|
70
|
+
|
71
|
+
EXT_STRUCT = %w(_output _attribute _list).freeze
|
72
|
+
|
73
|
+
def metadata_ext_hash(node, ext, hash)
|
74
|
+
hash.each do |k, v|
|
75
|
+
next if EXT_STRUCT.include?(k) || !v&.is_a?(Hash) && !node.attr(k)
|
76
|
+
if v&.is_a?(Hash) && v["_list"]
|
77
|
+
csv_split(node.attr(k), ",").each do |val|
|
78
|
+
metadata_ext_hash1(k, val, ext, v, node)
|
79
|
+
end
|
80
|
+
else
|
81
|
+
metadata_ext_hash1(k, node.attr(k), ext, v, node)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def metadata_ext_hash1(key, value, ext, hash, node)
|
87
|
+
return if hash&.is_a?(Hash) && hash["_attribute"]
|
88
|
+
is_hash = hash&.is_a?(Hash) &&
|
89
|
+
!hash.keys.reject { |n| EXT_STRUCT.include?(n) }.empty?
|
90
|
+
return if !is_hash && (value.nil? || value.empty?)
|
91
|
+
name = hash&.is_a?(Hash) ? (hash["_output"] || key) : key
|
92
|
+
ext.send name, **attr_code(metadata_ext_attrs(hash, node)) do |e|
|
93
|
+
is_hash ? metadata_ext_hash(node, e, hash) : (e << value)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def metadata_ext_attrs(hash, node)
|
98
|
+
return {} unless hash.is_a?(Hash)
|
99
|
+
ret = {}
|
100
|
+
hash.each do |k, v|
|
101
|
+
next unless v.is_a?(Hash) && v["_attribute"]
|
102
|
+
ret[(v["_output"] || k).to_sym] = node.attr(k)
|
103
|
+
end
|
104
|
+
ret
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
File without changes
|
@@ -32,6 +32,19 @@
|
|
32
32
|
<ref name="DocumentType"/>
|
33
33
|
</element>
|
34
34
|
</define>
|
35
|
+
<define name="bibitem">
|
36
|
+
<element name="bibitem">
|
37
|
+
<attribute name="id">
|
38
|
+
<data type="ID"/>
|
39
|
+
</attribute>
|
40
|
+
<optional>
|
41
|
+
<attribute name="hidden">
|
42
|
+
<data type="boolean"/>
|
43
|
+
</attribute>
|
44
|
+
</optional>
|
45
|
+
<ref name="BibliographicItem"/>
|
46
|
+
</element>
|
47
|
+
</define>
|
35
48
|
<define name="section-title">
|
36
49
|
<element name="title">
|
37
50
|
<zeroOrMore>
|
@@ -690,6 +703,7 @@
|
|
690
703
|
<ref name="terms"/>
|
691
704
|
<ref name="term-clause"/>
|
692
705
|
<ref name="definitions"/>
|
706
|
+
<ref name="floating-title"/>
|
693
707
|
</choice>
|
694
708
|
</oneOrMore>
|
695
709
|
</element>
|
@@ -1680,6 +1694,7 @@
|
|
1680
1694
|
<ref name="clause-subsection"/>
|
1681
1695
|
<ref name="terms"/>
|
1682
1696
|
<ref name="definitions"/>
|
1697
|
+
<ref name="floating-title"/>
|
1683
1698
|
</choice>
|
1684
1699
|
</oneOrMore>
|
1685
1700
|
</choice>
|
@@ -1722,6 +1737,7 @@
|
|
1722
1737
|
<ref name="terms"/>
|
1723
1738
|
<ref name="definitions"/>
|
1724
1739
|
<ref name="references"/>
|
1740
|
+
<ref name="floating-title"/>
|
1725
1741
|
</choice>
|
1726
1742
|
</zeroOrMore>
|
1727
1743
|
</group>
|
@@ -1796,6 +1812,20 @@
|
|
1796
1812
|
<data type="ID"/>
|
1797
1813
|
</attribute>
|
1798
1814
|
</optional>
|
1815
|
+
<optional>
|
1816
|
+
<attribute name="language"/>
|
1817
|
+
</optional>
|
1818
|
+
<optional>
|
1819
|
+
<attribute name="script"/>
|
1820
|
+
</optional>
|
1821
|
+
<optional>
|
1822
|
+
<attribute name="tag"/>
|
1823
|
+
</optional>
|
1824
|
+
<optional>
|
1825
|
+
<attribute name="multilingual-rendering">
|
1826
|
+
<ref name="MultilingualRenderingType"/>
|
1827
|
+
</attribute>
|
1828
|
+
</optional>
|
1799
1829
|
<oneOrMore>
|
1800
1830
|
<ref name="preferred"/>
|
1801
1831
|
</oneOrMore>
|
@@ -1959,7 +1989,11 @@
|
|
1959
1989
|
</optional>
|
1960
1990
|
<element name="name">
|
1961
1991
|
<zeroOrMore>
|
1962
|
-
<
|
1992
|
+
<choice>
|
1993
|
+
<ref name="PureTextElement"/>
|
1994
|
+
<ref name="stem"/>
|
1995
|
+
<ref name="index"/>
|
1996
|
+
</choice>
|
1963
1997
|
</zeroOrMore>
|
1964
1998
|
</element>
|
1965
1999
|
<optional>
|
@@ -1973,7 +2007,7 @@
|
|
1973
2007
|
</element>
|
1974
2008
|
</optional>
|
1975
2009
|
<optional>
|
1976
|
-
<element name="grammar
|
2010
|
+
<element name="grammar">
|
1977
2011
|
<ref name="Grammar"/>
|
1978
2012
|
</element>
|
1979
2013
|
</optional>
|
@@ -2516,4 +2550,17 @@
|
|
2516
2550
|
</oneOrMore>
|
2517
2551
|
</element>
|
2518
2552
|
</define>
|
2553
|
+
<define name="floating-title">
|
2554
|
+
<element name="floating-title">
|
2555
|
+
<attribute name="id">
|
2556
|
+
<data type="ID"/>
|
2557
|
+
</attribute>
|
2558
|
+
<attribute name="depth">
|
2559
|
+
<data type="int"/>
|
2560
|
+
</attribute>
|
2561
|
+
<zeroOrMore>
|
2562
|
+
<ref name="TextElement"/>
|
2563
|
+
</zeroOrMore>
|
2564
|
+
</element>
|
2565
|
+
</define>
|
2519
2566
|
</grammar>
|
File without changes
|
File without changes
|
data/lib/metanorma/generic.rb
CHANGED
@@ -3,8 +3,9 @@ require "metanorma/generic/version"
|
|
3
3
|
require "forwardable"
|
4
4
|
require "yaml"
|
5
5
|
|
6
|
+
|
6
7
|
module Metanorma
|
7
|
-
module Generic
|
8
|
+
module Generic # rubocop:disable Style/MutableConstant
|
8
9
|
ORGANIZATION_NAME_SHORT = "Acme"
|
9
10
|
ORGANIZATION_NAME_LONG = "Acme Corp."
|
10
11
|
DOCUMENT_NAMESPACE = "https://www.metanorma.org/ns/generic"
|
@@ -63,23 +64,10 @@ module Metanorma
|
|
63
64
|
].freeze
|
64
65
|
|
65
66
|
def filepath_attrs
|
66
|
-
%i[
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
logo_paths
|
71
|
-
header
|
72
|
-
htmlcoverpage
|
73
|
-
htmlintropage
|
74
|
-
htmlstylesheet
|
75
|
-
scripts
|
76
|
-
scripts_pdf
|
77
|
-
standardstylesheet
|
78
|
-
validate_rng_file
|
79
|
-
wordcoverpage
|
80
|
-
wordintropage
|
81
|
-
wordstylesheet
|
82
|
-
]
|
67
|
+
%i[i18nyaml boilerplate logo_path logo_paths header
|
68
|
+
htmlcoverpage htmlintropage htmlstylesheet scripts scripts_pdf
|
69
|
+
standardstylesheet validate_rng_file wordcoverpage wordintropage
|
70
|
+
wordstylesheet]
|
83
71
|
end
|
84
72
|
|
85
73
|
attr_accessor(*CONFIG_ATTRS)
|
@@ -88,7 +76,7 @@ module Metanorma
|
|
88
76
|
attr_accessor :_file
|
89
77
|
end
|
90
78
|
|
91
|
-
def self.inherited(klass)
|
79
|
+
def self.inherited(klass) # rubocop:disable Lint/MissingSuper
|
92
80
|
klass._file = caller_locations(1..1).first.absolute_path
|
93
81
|
end
|
94
82
|
|
@@ -115,7 +103,8 @@ module Metanorma
|
|
115
103
|
|
116
104
|
def set_default_values_from_yaml_file(config_file)
|
117
105
|
root_path = File.dirname(self.class::_file || __FILE__)
|
118
|
-
default_config_options =
|
106
|
+
default_config_options =
|
107
|
+
YAML.safe_load(File.read(config_file, encoding: "UTF-8"))
|
119
108
|
if default_config_options["doctypes"].is_a? Array
|
120
109
|
default_config_options["doctypes"] =
|
121
110
|
default_config_options["doctypes"].each_with_object({}) do |k, m|
|
@@ -133,7 +122,7 @@ module Metanorma
|
|
133
122
|
end
|
134
123
|
|
135
124
|
def blank?(val)
|
136
|
-
val.nil? || val.respond_to?(:empty?) && val.empty?
|
125
|
+
val.nil? || (val.respond_to?(:empty?) && val.empty?)
|
137
126
|
end
|
138
127
|
|
139
128
|
def absolute_path(value, root_path)
|
data/lib/metanorma-generic.rb
CHANGED
data/metanorma-generic.gemspec
CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
28
28
|
|
29
29
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
30
|
-
spec.add_dependency "metanorma-standoc", "~>
|
30
|
+
spec.add_dependency "metanorma-standoc", "~> 2.0.0"
|
31
31
|
spec.add_dependency "ruby-jing"
|
32
32
|
|
33
33
|
spec.add_development_dependency "debug"
|
data/metanorma.yml.example
CHANGED
@@ -7,7 +7,7 @@ logo_path: /metanorma-mine/lib/isodoc/mine/html/logo.jpg
|
|
7
7
|
logo_paths:
|
8
8
|
- /metanorma-mine/lib/isodoc/mine/html/logo1.jpg
|
9
9
|
- /metanorma-mine/lib/isodoc/mine/html/logo2.jpg
|
10
|
-
validate_rng_file: /metanorma-mine/lib/
|
10
|
+
validate_rng_file: /metanorma-mine/lib/metanorma/mine/mine.rng
|
11
11
|
htmlcoverpage: /metanorma-mine/lib/isodoc/mine/html/html_mine_titlepage.html
|
12
12
|
htmlintropage: /metanorma-mine/lib/isodoc/mine/html/html_mine_intro.html
|
13
13
|
htmlstylesheet: /metanorma-mine/lib/isodoc/mine/html/htmlstyle.scss
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-generic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: ruby-jing
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,14 +213,9 @@ files:
|
|
213
213
|
- bin/rspec
|
214
214
|
- bin/setup
|
215
215
|
- lib/asciidoctor/generic.rb
|
216
|
-
- lib/asciidoctor/generic/basicdoc.rng
|
217
|
-
- lib/asciidoctor/generic/biblio.rng
|
218
216
|
- lib/asciidoctor/generic/converter.rb
|
217
|
+
- lib/asciidoctor/generic/deprecated.rb
|
219
218
|
- lib/asciidoctor/generic/front.rb
|
220
|
-
- lib/asciidoctor/generic/generic.rng
|
221
|
-
- lib/asciidoctor/generic/isodoc.rng
|
222
|
-
- lib/asciidoctor/generic/reqt.rng
|
223
|
-
- lib/asciidoctor/generic/rsd.rng
|
224
219
|
- lib/isodoc/generic.rb
|
225
220
|
- lib/isodoc/generic/base_convert.rb
|
226
221
|
- lib/isodoc/generic/html/generic.scss
|
@@ -243,8 +238,16 @@ files:
|
|
243
238
|
- lib/isodoc/generic/xref.rb
|
244
239
|
- lib/metanorma-generic.rb
|
245
240
|
- lib/metanorma/generic.rb
|
241
|
+
- lib/metanorma/generic/basicdoc.rng
|
242
|
+
- lib/metanorma/generic/biblio.rng
|
243
|
+
- lib/metanorma/generic/converter.rb
|
246
244
|
- lib/metanorma/generic/fonts_manifest.yaml
|
245
|
+
- lib/metanorma/generic/front.rb
|
246
|
+
- lib/metanorma/generic/generic.rng
|
247
|
+
- lib/metanorma/generic/isodoc.rng
|
247
248
|
- lib/metanorma/generic/processor.rb
|
249
|
+
- lib/metanorma/generic/reqt.rng
|
250
|
+
- lib/metanorma/generic/rsd.rng
|
248
251
|
- lib/metanorma/generic/version.rb
|
249
252
|
- metanorma-generic.gemspec
|
250
253
|
- metanorma.yml.example
|
@@ -267,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
270
|
- !ruby/object:Gem::Version
|
268
271
|
version: '0'
|
269
272
|
requirements: []
|
270
|
-
rubygems_version: 3.2.
|
273
|
+
rubygems_version: 3.2.32
|
271
274
|
signing_key:
|
272
275
|
specification_version: 4
|
273
276
|
summary: Metanorma template gem for customisation.
|