metanorma-rsd 1.3.11 → 1.4.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 +4 -4
- data/lib/asciidoctor/rsd.rb +0 -3
- data/lib/asciidoctor/rsd/converter.rb +4 -133
- data/lib/asciidoctor/rsd/rsd.rng +1 -1
- data/lib/isodoc/rsd/html/header.html +64 -6
- data/lib/isodoc/rsd/html/rsd.scss +8 -8
- data/lib/isodoc/rsd/html/wordstyle.scss +22 -0
- data/lib/isodoc/rsd/html_convert.rb +10 -37
- data/lib/isodoc/rsd/metadata.rb +6 -42
- data/lib/isodoc/rsd/pdf_convert.rb +10 -40
- data/lib/isodoc/rsd/word_convert.rb +10 -34
- data/lib/metanorma/rsd.rb +26 -1
- data/lib/metanorma/rsd/version.rb +1 -1
- data/metanorma-rsd.gemspec +1 -0
- data/metanorma.yml +23 -0
- metadata +17 -3
- data/lib/isodoc/rsd/base_convert.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a09eca0d2e987fc30077408e32647ec19a660285c6e00eeb0d8c5e218cd56a5
|
4
|
+
data.tar.gz: 84102bb82fa88c5e721e15fe5cb78f6184161483bfcb6313325e20839d4c1c45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c63154090df0b256658929536b65153241d26fa01b2649d9eb0483ebdbe23f4d10d2269fabdb1e0a8fd17faf71a836f300d6104a14bb0d0c754c4a345f31a361
|
7
|
+
data.tar.gz: ab6f1c38cf3d4168ef8461de0bc3739419eba3e213ae3fe846584411d91c24b29b5dfb8b2194d58c1dc23462236acf375c88e1722e1a2314c09cab6198b9ed12
|
data/lib/asciidoctor/rsd.rb
CHANGED
@@ -1,83 +1,14 @@
|
|
1
|
-
require "asciidoctor"
|
2
|
-
require "asciidoctor/rsd"
|
3
1
|
require "asciidoctor/standoc/converter"
|
4
|
-
require
|
5
|
-
require "isodoc/rsd/word_convert"
|
6
|
-
require "fileutils"
|
7
|
-
require_relative "validate"
|
2
|
+
require 'asciidoctor/acme/converter'
|
8
3
|
|
9
4
|
module Asciidoctor
|
10
5
|
module Rsd
|
11
|
-
|
12
6
|
# A {Converter} implementation that generates RSD output, and a document
|
13
7
|
# schema encapsulation of the document for validation
|
14
8
|
#
|
15
|
-
class Converter <
|
16
|
-
|
9
|
+
class Converter < Asciidoctor::Acme::Converter
|
17
10
|
register_for "rsd"
|
18
11
|
|
19
|
-
def initialize(backend, opts)
|
20
|
-
super
|
21
|
-
@libdir = File.dirname(__FILE__)
|
22
|
-
end
|
23
|
-
|
24
|
-
def metadata_author(node, xml)
|
25
|
-
xml.contributor do |c|
|
26
|
-
c.role **{ type: "author" }
|
27
|
-
c.organization do |a|
|
28
|
-
a.name "Ribose"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def metadata_publisher(node, xml)
|
34
|
-
xml.contributor do |c|
|
35
|
-
c.role **{ type: "publisher" }
|
36
|
-
c.organization do |a|
|
37
|
-
a.name "Ribose"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def metadata_committee(node, xml)
|
43
|
-
return unless node.attr("committee")
|
44
|
-
xml.editorialgroup do |a|
|
45
|
-
a.committee node.attr("committee"),
|
46
|
-
**attr_code(type: node.attr("committee-type"))
|
47
|
-
i = 2
|
48
|
-
while node.attr("committee_#{i}") do
|
49
|
-
a.committee node.attr("committee_#{i}"),
|
50
|
-
**attr_code(type: node.attr("committee-type_#{i}"))
|
51
|
-
i += 1
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def metadata_id(node, xml)
|
57
|
-
docstatus = node.attr("status")
|
58
|
-
dn = node.attr("docnumber")
|
59
|
-
if docstatus
|
60
|
-
abbr = IsoDoc::Rsd::Metadata.new("en", "Latn", {}).
|
61
|
-
status_abbr(docstatus)
|
62
|
-
dn = "#{dn}(#{abbr})" unless abbr.empty?
|
63
|
-
end
|
64
|
-
node.attr("copyright-year") and dn += ":#{node.attr("copyright-year")}"
|
65
|
-
xml.docidentifier dn, **{type: "rsd"}
|
66
|
-
xml.docnumber { |i| i << node.attr("docnumber") }
|
67
|
-
end
|
68
|
-
|
69
|
-
def metadata_copyright(node, xml)
|
70
|
-
from = node.attr("copyright-year") || Date.today.year
|
71
|
-
xml.copyright do |c|
|
72
|
-
c.from from
|
73
|
-
c.owner do |owner|
|
74
|
-
owner.organization do |o|
|
75
|
-
o.name "Ribose"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
12
|
def metadata_security(node, xml)
|
82
13
|
security = node.attr("security") || return
|
83
14
|
xml.security security
|
@@ -88,68 +19,8 @@ module Asciidoctor
|
|
88
19
|
metadata_security(node, xml)
|
89
20
|
end
|
90
21
|
|
91
|
-
def
|
92
|
-
|
93
|
-
end
|
94
|
-
|
95
|
-
def makexml(node)
|
96
|
-
result = ["<?xml version='1.0' encoding='UTF-8'?>\n<rsd-standard>"]
|
97
|
-
@draft = node.attributes.has_key?("draft")
|
98
|
-
result << noko { |ixml| front node, ixml }
|
99
|
-
result << noko { |ixml| middle node, ixml }
|
100
|
-
result << "</rsd-standard>"
|
101
|
-
result = textcleanup(result)
|
102
|
-
ret1 = cleanup(Nokogiri::XML(result))
|
103
|
-
validate(ret1) unless @novalid
|
104
|
-
ret1.root.add_namespace(nil, RSD_NAMESPACE)
|
105
|
-
ret1
|
106
|
-
end
|
107
|
-
|
108
|
-
def doctype(node)
|
109
|
-
d = node.attr("doctype")
|
110
|
-
unless %w{policy-and-procedures best-practices supporting-document
|
111
|
-
report legal directives proposal standard}.include? d
|
112
|
-
warn "#{d} is not a legal document type: reverting to 'standard'"
|
113
|
-
d = "standard"
|
114
|
-
end
|
115
|
-
d
|
116
|
-
end
|
117
|
-
|
118
|
-
def document(node)
|
119
|
-
init(node)
|
120
|
-
ret1 = makexml(node)
|
121
|
-
ret = ret1.to_xml(indent: 2)
|
122
|
-
unless node.attr("nodoc") || !node.attr("docfile")
|
123
|
-
filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
|
124
|
-
gsub(%r{^.*/}, "")
|
125
|
-
File.open(filename, "w") { |f| f.write(ret) }
|
126
|
-
html_converter(node).convert filename unless node.attr("nodoc")
|
127
|
-
pdf_converter(node).convert filename unless node.attr("nodoc")
|
128
|
-
word_converter(node).convert filename unless node.attr("nodoc")
|
129
|
-
end
|
130
|
-
@files_to_delete.each { |f| FileUtils.rm f }
|
131
|
-
ret
|
132
|
-
end
|
133
|
-
|
134
|
-
def validate(doc)
|
135
|
-
content_validate(doc)
|
136
|
-
schema_validate(formattedstr_strip(doc.dup),
|
137
|
-
File.join(File.dirname(__FILE__), "rsd.rng"))
|
138
|
-
end
|
139
|
-
|
140
|
-
def rsd_html_path(file)
|
141
|
-
File.join(File.dirname(__FILE__), File.join("html", file))
|
142
|
-
end
|
143
|
-
|
144
|
-
def sections_cleanup(x)
|
145
|
-
super
|
146
|
-
x.xpath("//*[@inline-header]").each do |h|
|
147
|
-
h.delete("inline-header")
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
def style(n, t)
|
152
|
-
return
|
22
|
+
def configuration
|
23
|
+
Metanorma::Rsd.configuration
|
153
24
|
end
|
154
25
|
|
155
26
|
def html_converter(node)
|
data/lib/asciidoctor/rsd/rsd.rng
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
|
2
|
+
<grammar ns="https://www.metanorma.org/ns/rsd" xmlns="http://relaxng.org/ns/structure/1.0">
|
3
3
|
<!--
|
4
4
|
Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
|
5
5
|
we cannot have a new default namespace: we will end up with a grammar with two different
|
@@ -98,21 +98,26 @@ Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></sp
|
|
98
98
|
</div>
|
99
99
|
|
100
100
|
<div style='mso-element:header' id=eh2>
|
101
|
-
|
102
101
|
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
103
102
|
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose {{ doctype }} {{ docnumber }}:{{ docyear }}</span></p>
|
103
|
+
</div>
|
104
104
|
|
105
|
+
<div style='mso-element:header' id=eh2l>
|
106
|
+
<p class=MsoHeaderLandscape align=left style='text-align:left;line-height:12.0pt;
|
107
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose {{ doctype }} {{ docnumber }}:{{ docyear }}</span></p>
|
105
108
|
</div>
|
106
109
|
|
107
110
|
<div style='mso-element:header' id=h2>
|
108
|
-
|
109
111
|
<p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
|
110
112
|
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose {{ doctype }} {{ docnumber }}:{{ docyear }}</span></p>
|
113
|
+
</div>
|
111
114
|
|
115
|
+
<div style='mso-element:header' id=h2l>
|
116
|
+
<p class=MsoHeaderLandscape align=right style='text-align:right;line-height:12.0pt;
|
117
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose {{ doctype }} {{ docnumber }}:{{ docyear }}</span></p>
|
112
118
|
</div>
|
113
119
|
|
114
120
|
<div style='mso-element:footer' id=ef2>
|
115
|
-
|
116
121
|
<p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
|
117
122
|
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
118
123
|
style='mso-element:field-begin'></span><span
|
@@ -125,11 +130,24 @@ style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
|
125
130
|
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
|
126
131
|
1'> </span>©
|
127
132
|
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
133
|
+
</div>
|
128
134
|
|
135
|
+
<div style='mso-element:footer' id=ef2l>
|
136
|
+
<p class=MsoFooterLandscape style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
|
137
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
138
|
+
style='mso-element:field-begin'></span><span
|
139
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
140
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
141
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
142
|
+
style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
|
143
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
144
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
145
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
|
146
|
+
1'> </span>©
|
147
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
129
148
|
</div>
|
130
149
|
|
131
150
|
<div style='mso-element:footer' id=f2>
|
132
|
-
|
133
151
|
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
134
152
|
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
135
153
|
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><span
|
@@ -141,11 +159,23 @@ style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
|
|
141
159
|
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
142
160
|
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
143
161
|
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
162
|
+
</div>
|
144
163
|
|
164
|
+
<div style='mso-element:footer' id=f2l>
|
165
|
+
<p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
|
166
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
167
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><span
|
168
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
169
|
+
style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>
|
170
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
171
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
172
|
+
style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
|
173
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
174
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
175
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
145
176
|
</div>
|
146
177
|
|
147
178
|
<div style='mso-element:footer' id=ef3>
|
148
|
-
|
149
179
|
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
150
180
|
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
151
181
|
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
@@ -159,11 +189,25 @@ mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b
|
|
159
189
|
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
160
190
|
style='mso-tab-count:1'> </span>©
|
161
191
|
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
192
|
+
</div>
|
162
193
|
|
194
|
+
<div style='mso-element:footer' id=ef3l>
|
195
|
+
<p class=MsoFooterLandscape style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
196
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
197
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
198
|
+
style='mso-element:field-begin'></span><span
|
199
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
200
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
201
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
202
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
203
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
204
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
205
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
206
|
+
style='mso-tab-count:1'> </span>©
|
207
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
163
208
|
</div>
|
164
209
|
|
165
210
|
<div style='mso-element:footer' id=f3>
|
166
|
-
|
167
211
|
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
168
212
|
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
169
213
|
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><b
|
@@ -176,7 +220,21 @@ mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!-
|
|
176
220
|
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
177
221
|
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
178
222
|
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
223
|
+
</div>
|
179
224
|
|
225
|
+
<div style='mso-element:footer' id=f3l>
|
226
|
+
<p class=MsoFooterLandscape style='line-height:12.0pt'><span lang=EN-GB
|
227
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
228
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><b
|
229
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
230
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
231
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
232
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b
|
233
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
234
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
|
235
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
236
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
237
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
180
238
|
</div>
|
181
239
|
|
182
240
|
</body>
|
@@ -583,10 +583,10 @@ div.WordSection1
|
|
583
583
|
margin:39.7pt 53.85pt 1.0cm 53.85pt;
|
584
584
|
mso-header-margin:50pt;
|
585
585
|
mso-footer-margin:50pt;
|
586
|
-
mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html")
|
587
|
-
mso-header:url("file:///C:/Doc/FILENAME_files/header.html")
|
588
|
-
mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html")
|
589
|
-
mso-footer:url("file:///C:/Doc/FILENAME_files/header.html")
|
586
|
+
mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html") eh2l;
|
587
|
+
mso-header:url("file:///C:/Doc/FILENAME_files/header.html") h2l;
|
588
|
+
mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html") ef2l;
|
589
|
+
mso-footer:url("file:///C:/Doc/FILENAME_files/header.html") f2l;
|
590
590
|
mso-paper-source:0;}
|
591
591
|
@page WordSection2P
|
592
592
|
{size:595.3pt 841.9pt;
|
@@ -616,10 +616,10 @@ div.WordSection2
|
|
616
616
|
margin:39.7pt 53.85pt 1.0cm 53.85pt;
|
617
617
|
mso-header-margin:50pt;
|
618
618
|
mso-footer-margin:50pt;
|
619
|
-
mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html")
|
620
|
-
mso-header:url("file:///C:/Doc/FILENAME_files/header.html")
|
621
|
-
mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html")
|
622
|
-
mso-footer:url("file:///C:/Doc/FILENAME_files/header.html")
|
619
|
+
mso-even-header:url("file:///C:/Doc/FILENAME_files/header.html") eh2l;
|
620
|
+
mso-header:url("file:///C:/Doc/FILENAME_files/header.html") h2l;
|
621
|
+
mso-even-footer:url("file:///C:/Doc/FILENAME_files/header.html") ef3l;
|
622
|
+
mso-footer:url("file:///C:/Doc/FILENAME_files/header.html") f3l;
|
623
623
|
mso-paper-source:0;}
|
624
624
|
@page WordSection3P
|
625
625
|
{size:595.3pt 841.9pt;
|
@@ -158,6 +158,17 @@ p.MsoHeader, li.MsoHeader, div.MsoHeader
|
|
158
158
|
mso-fareast-font-family:"Times New Roman";
|
159
159
|
mso-ansi-language:EN-US;
|
160
160
|
mso-fareast-language:EN-US;}
|
161
|
+
p.MsoHeaderLandscape, li.MsoHeaderLandscape, div.MsoHeaderLandscape
|
162
|
+
{mso-style-unhide:no;
|
163
|
+
margin:0cm;
|
164
|
+
margin-bottom:.0001pt;
|
165
|
+
mso-pagination:widow-orphan;
|
166
|
+
tab-stops:center 367.0pt right 734.0pt;
|
167
|
+
font-size:10.5pt;
|
168
|
+
font-family:$bodyfont;
|
169
|
+
mso-fareast-font-family:"Times New Roman";
|
170
|
+
mso-ansi-language:EN-US;
|
171
|
+
mso-fareast-language:EN-US;}
|
161
172
|
p.MsoFooter, li.MsoFooter, div.MsoFooter
|
162
173
|
{mso-style-unhide:no;
|
163
174
|
margin:0cm;
|
@@ -169,6 +180,17 @@ p.MsoFooter, li.MsoFooter, div.MsoFooter
|
|
169
180
|
mso-fareast-font-family:"Times New Roman";
|
170
181
|
mso-ansi-language:EN-US;
|
171
182
|
mso-fareast-language:EN-US;}
|
183
|
+
p.MsoFooterLandscape, li.MsoFooterLandscape, div.MsoFooterLandscape
|
184
|
+
{mso-style-unhide:no;
|
185
|
+
margin:0cm;
|
186
|
+
margin-bottom:.0001pt;
|
187
|
+
mso-pagination:widow-orphan;
|
188
|
+
tab-stops:right 734.0pt;
|
189
|
+
font-size:10.5pt;
|
190
|
+
font-family:$bodyfont;
|
191
|
+
mso-fareast-font-family:"Times New Roman";
|
192
|
+
mso-ansi-language:EN-US;
|
193
|
+
mso-fareast-language:EN-US;}
|
172
194
|
span.MsoCommentReference
|
173
195
|
{mso-style-noshow:yes;
|
174
196
|
mso-style-unhide:no;
|
@@ -1,52 +1,25 @@
|
|
1
|
-
require_relative "base_convert"
|
2
1
|
require "isodoc"
|
2
|
+
require "isodoc/acme/html_convert"
|
3
|
+
require "isodoc/rsd/metadata"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
module Rsd
|
6
|
-
|
7
7
|
# A {Converter} implementation that generates HTML output, and a document
|
8
8
|
# schema encapsulation of the document for validation
|
9
9
|
#
|
10
|
-
class HtmlConvert < IsoDoc::HtmlConvert
|
11
|
-
def
|
12
|
-
|
13
|
-
super
|
14
|
-
end
|
15
|
-
|
16
|
-
def default_fonts(options)
|
17
|
-
{
|
18
|
-
bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : '"Overpass",sans-serif'),
|
19
|
-
headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' : '"Overpass",sans-serif'),
|
20
|
-
monospacefont: '"Space Mono",monospace'
|
21
|
-
}
|
10
|
+
class HtmlConvert < IsoDoc::Acme::HtmlConvert
|
11
|
+
def configuration
|
12
|
+
Metanorma::Rsd.configuration
|
22
13
|
end
|
23
14
|
|
24
|
-
def
|
25
|
-
|
26
|
-
htmlstylesheet: html_doc_path("htmlstyle.scss"),
|
27
|
-
htmlcoverpage: html_doc_path("html_rsd_titlepage.html"),
|
28
|
-
htmlintropage: html_doc_path("html_rsd_intro.html"),
|
29
|
-
scripts: html_doc_path("scripts.html"),
|
30
|
-
}
|
15
|
+
def metadata_init(lang, script, labels)
|
16
|
+
@meta = Metadata.new(lang, script, labels)
|
31
17
|
end
|
32
18
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
36
|
-
<link href="https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900" rel="stylesheet">
|
37
|
-
HEAD
|
38
|
-
end
|
39
|
-
|
40
|
-
def make_body(xml, docxml)
|
41
|
-
body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72", "xml:lang": "EN-US", class: "container" }
|
42
|
-
xml.body **body_attr do |body|
|
43
|
-
make_body1(body, docxml)
|
44
|
-
make_body2(body, docxml)
|
45
|
-
make_body3(body, docxml)
|
46
|
-
end
|
19
|
+
def info(isoxml, out)
|
20
|
+
@meta.security isoxml, out
|
21
|
+
super
|
47
22
|
end
|
48
|
-
|
49
|
-
include BaseConvert
|
50
23
|
end
|
51
24
|
end
|
52
25
|
end
|
data/lib/isodoc/rsd/metadata.rb
CHANGED
@@ -3,45 +3,14 @@ require "isodoc"
|
|
3
3
|
module IsoDoc
|
4
4
|
module Rsd
|
5
5
|
|
6
|
-
class Metadata < IsoDoc::Metadata
|
7
|
-
def
|
8
|
-
|
9
|
-
here = File.dirname(__FILE__)
|
10
|
-
set(:logo_svg,
|
11
|
-
File.expand_path(File.join(here, "html", "logo.svg")))
|
12
|
-
end
|
13
|
-
|
14
|
-
def title(isoxml, _out)
|
15
|
-
main = isoxml&.at(ns("//bibdata/title[@language='en']"))&.text
|
16
|
-
set(:doctitle, main)
|
17
|
-
end
|
18
|
-
|
19
|
-
def subtitle(_isoxml, _out)
|
20
|
-
nil
|
6
|
+
class Metadata < IsoDoc::Acme::Metadata
|
7
|
+
def configuration
|
8
|
+
Metanorma::Rsd.configuration
|
21
9
|
end
|
22
10
|
|
23
|
-
def
|
24
|
-
|
25
|
-
set(:
|
26
|
-
end
|
27
|
-
|
28
|
-
def docid(isoxml, _out)
|
29
|
-
docnumber = isoxml.at(ns("//bibdata/docidentifier"))
|
30
|
-
set(:docnumber, docnumber&.text)
|
31
|
-
end
|
32
|
-
|
33
|
-
def status_abbr(status)
|
34
|
-
case status
|
35
|
-
when "working-draft" then "wd"
|
36
|
-
when "committee-draft" then "cd"
|
37
|
-
when "draft-standard" then "d"
|
38
|
-
else
|
39
|
-
""
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def unpublished(status)
|
44
|
-
!%w(published withdrawn).include? status.downcase
|
11
|
+
def security(isoxml, _out)
|
12
|
+
security = isoxml.at(ns("//bibdata/ext/security")) || return
|
13
|
+
set(:security, security.text)
|
45
14
|
end
|
46
15
|
|
47
16
|
def version(isoxml, _out)
|
@@ -70,11 +39,6 @@ module IsoDoc
|
|
70
39
|
return isodate unless m && m[:yr] && m[:mo]
|
71
40
|
return "#{MONTHS[m[:mo].to_sym]} #{m[:yr]}"
|
72
41
|
end
|
73
|
-
|
74
|
-
def security(isoxml, _out)
|
75
|
-
security = isoxml.at(ns("//bibdata/ext/security")) || return
|
76
|
-
set(:security, security.text)
|
77
|
-
end
|
78
42
|
end
|
79
43
|
end
|
80
44
|
end
|
@@ -1,54 +1,24 @@
|
|
1
|
-
require_relative "base_convert"
|
2
1
|
require "isodoc"
|
2
|
+
require "isodoc/acme/pdf_convert"
|
3
|
+
require "isodoc/rsd/metadata"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
module Rsd
|
6
7
|
# A {Converter} implementation that generates PDF HTML output, and a
|
7
8
|
# document schema encapsulation of the document for validation
|
8
|
-
class PdfConvert < IsoDoc::PdfConvert
|
9
|
-
def
|
10
|
-
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
def default_fonts(options)
|
15
|
-
{
|
16
|
-
bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : '"Overpass",sans-serif'),
|
17
|
-
headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' : '"Overpass",sans-serif'),
|
18
|
-
monospacefont: '"Space Mono",monospace'
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
def default_file_locations(options)
|
23
|
-
{
|
24
|
-
htmlstylesheet: html_doc_path("htmlstyle.scss"),
|
25
|
-
htmlcoverpage: html_doc_path("html_rsd_titlepage.html"),
|
26
|
-
htmlintropage: html_doc_path("html_rsd_intro.html"),
|
27
|
-
scripts_pdf: html_doc_path("scripts.pdf.html"),
|
28
|
-
}
|
9
|
+
class PdfConvert < IsoDoc::Acme::PdfConvert
|
10
|
+
def configuration
|
11
|
+
Metanorma::Rsd.configuration
|
29
12
|
end
|
30
13
|
|
31
|
-
def
|
32
|
-
|
33
|
-
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i|Space+Mono:400,700" rel="stylesheet">
|
34
|
-
<link href="https://fonts.googleapis.com/css?family=Overpass:300,300i,600,900" rel="stylesheet">
|
35
|
-
HEAD
|
14
|
+
def metadata_init(lang, script, labels)
|
15
|
+
@meta = Metadata.new(lang, script, labels)
|
36
16
|
end
|
37
17
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
41
|
-
make_body1(body, docxml)
|
42
|
-
make_body2(body, docxml)
|
43
|
-
make_body3(body, docxml)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def html_toc(docxml)
|
48
|
-
docxml
|
18
|
+
def info(isoxml, out)
|
19
|
+
@meta.security isoxml, out
|
20
|
+
super
|
49
21
|
end
|
50
|
-
|
51
|
-
include BaseConvert
|
52
22
|
end
|
53
23
|
end
|
54
24
|
end
|
@@ -1,48 +1,24 @@
|
|
1
|
-
require_relative "base_convert"
|
2
1
|
require "isodoc"
|
2
|
+
require "isodoc/acme/word_convert"
|
3
|
+
require "isodoc/rsd/metadata"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
module Rsd
|
6
7
|
# A {Converter} implementation that generates Word output, and a document
|
7
8
|
# schema encapsulation of the document for validation
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
@libdir = File.dirname(__FILE__)
|
12
|
-
super
|
13
|
-
end
|
14
|
-
|
15
|
-
def default_fonts(options)
|
16
|
-
{
|
17
|
-
bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : '"Arial",sans-serif'),
|
18
|
-
headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' : '"Arial",sans-serif'),
|
19
|
-
monospacefont: '"Courier New",monospace'
|
20
|
-
}
|
9
|
+
class WordConvert < IsoDoc::Acme::WordConvert
|
10
|
+
def configuration
|
11
|
+
Metanorma::Rsd.configuration
|
21
12
|
end
|
22
13
|
|
23
|
-
def
|
24
|
-
|
25
|
-
wordstylesheet: html_doc_path("wordstyle.scss"),
|
26
|
-
standardstylesheet: html_doc_path("rsd.scss"),
|
27
|
-
header: html_doc_path("header.html"),
|
28
|
-
wordcoverpage: html_doc_path("word_rsd_titlepage.html"),
|
29
|
-
wordintropage: html_doc_path("word_rsd_intro.html"),
|
30
|
-
ulstyle: "l3",
|
31
|
-
olstyle: "l2",
|
32
|
-
}
|
14
|
+
def metadata_init(lang, script, labels)
|
15
|
+
@meta = Metadata.new(lang, script, labels)
|
33
16
|
end
|
34
17
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
xml.body **body_attr do |body|
|
39
|
-
make_body1(body, docxml)
|
40
|
-
make_body2(body, docxml)
|
41
|
-
make_body3(body, docxml)
|
42
|
-
end
|
18
|
+
def info(isoxml, out)
|
19
|
+
@meta.security isoxml, out
|
20
|
+
super
|
43
21
|
end
|
44
|
-
|
45
|
-
include BaseConvert
|
46
22
|
end
|
47
23
|
end
|
48
24
|
end
|
data/lib/metanorma/rsd.rb
CHANGED
@@ -1,7 +1,32 @@
|
|
1
|
-
|
1
|
+
require "metanorma"
|
2
|
+
require "metanorma-acme"
|
3
|
+
require "metanorma/rsd/processor"
|
2
4
|
|
3
5
|
module Metanorma
|
4
6
|
module Rsd
|
5
7
|
|
8
|
+
class Configuration < Metanorma::Acme::Configuration
|
9
|
+
def initialize(*args)
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class << self
|
15
|
+
extend Forwardable
|
16
|
+
|
17
|
+
attr_accessor :configuration
|
18
|
+
|
19
|
+
Configuration::CONFIG_ATTRS.each do |attr_name|
|
20
|
+
def_delegator :@configuration, attr_name
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure
|
24
|
+
self.configuration ||= Configuration.new
|
25
|
+
yield(configuration)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
configure {}
|
6
30
|
end
|
7
31
|
end
|
32
|
+
Metanorma::Registry.instance.register(Metanorma::Rsd::Processor)
|
data/metanorma-rsd.gemspec
CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
#spec.add_dependency "nokogiri"
|
33
33
|
spec.add_dependency "metanorma-standoc", "~> 1.3.0"
|
34
34
|
spec.add_dependency "isodoc", "~> 1.0.0"
|
35
|
+
spec.add_dependency 'metanorma-acme', '~> 1.4.0'
|
35
36
|
|
36
37
|
spec.add_development_dependency "byebug", "~> 9.1"
|
37
38
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
data/metanorma.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
organization_name_short: Ribose
|
2
|
+
organization_name_long: Ribose
|
3
|
+
document_namespace: https://www.metanorma.org/ns/rsd
|
4
|
+
xml_root_tag: 'rsd-standard'
|
5
|
+
logo_path: lib/isodoc/rsd/html/logo.svg
|
6
|
+
validate_rng_file: lib/asciidoctor/rsd/rsd.rng
|
7
|
+
htmlcoverpage: lib/isodoc/rsd/html/html_rsd_titlepage.html
|
8
|
+
htmlintropage: lib/isodoc/rsd/html/html_rsd_intro.html
|
9
|
+
htmlstylesheet: lib/isodoc/rsd/html/htmlstyle.scss
|
10
|
+
scripts: lib/isodoc/rsd/html/scripts.html
|
11
|
+
scripts_pdf: lib/isodoc/rsd/html/scripts.pdf.html
|
12
|
+
standardstylesheet: lib/isodoc/rsd/html/rsd.scss
|
13
|
+
header: lib/isodoc/rsd/html/header.html
|
14
|
+
wordcoverpage: lib/isodoc/rsd/html/word_rsd_titlepage.html
|
15
|
+
wordintropage: lib/isodoc/rsd/html/word_rsd_intro.html
|
16
|
+
wordstylesheet: lib/isodoc/rsd/html/wordstyle.scss
|
17
|
+
docid_template: "{{ docnumeric }}{% if stageabbr %}({{ stageabbr }}){%endif%}"
|
18
|
+
published_stages:
|
19
|
+
- published
|
20
|
+
stage_abbreviations:
|
21
|
+
working-draft: wd
|
22
|
+
committee-draft: cd
|
23
|
+
draft-standard: d
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-rsd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.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: 2020-
|
11
|
+
date: 2020-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: htmlentities
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.0.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: metanorma-acme
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.4.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.4.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: byebug
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -227,7 +241,6 @@ files:
|
|
227
241
|
- lib/asciidoctor/rsd/reqt.rng
|
228
242
|
- lib/asciidoctor/rsd/rsd.rng
|
229
243
|
- lib/asciidoctor/rsd/validate.rb
|
230
|
-
- lib/isodoc/rsd/base_convert.rb
|
231
244
|
- lib/isodoc/rsd/html/header.html
|
232
245
|
- lib/isodoc/rsd/html/html_rsd_intro.html
|
233
246
|
- lib/isodoc/rsd/html/html_rsd_titlepage.html
|
@@ -248,6 +261,7 @@ files:
|
|
248
261
|
- lib/metanorma/rsd/processor.rb
|
249
262
|
- lib/metanorma/rsd/version.rb
|
250
263
|
- metanorma-rsd.gemspec
|
264
|
+
- metanorma.yml
|
251
265
|
homepage: https://github.com/metanorma/metanorma-rsd
|
252
266
|
licenses:
|
253
267
|
- BSD-2-Clause
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require_relative "metadata"
|
2
|
-
require "fileutils"
|
3
|
-
|
4
|
-
module IsoDoc
|
5
|
-
module Rsd
|
6
|
-
module BaseConvert
|
7
|
-
#def convert1(docxml, filename, dir)
|
8
|
-
#FileUtils.cp html_doc_path('logo.svg'), File.join(@localdir, "logo.svg")
|
9
|
-
#@files_to_delete << File.join(@localdir, "logo.svg")
|
10
|
-
#super
|
11
|
-
#end
|
12
|
-
|
13
|
-
def metadata_init(lang, script, labels)
|
14
|
-
@meta = Metadata.new(lang, script, labels)
|
15
|
-
end
|
16
|
-
|
17
|
-
def annex_name(annex, name, div)
|
18
|
-
div.h1 **{ class: "Annex" } do |t|
|
19
|
-
t << "#{anchor(annex['id'], :label)} "
|
20
|
-
t.br
|
21
|
-
t.b do |b|
|
22
|
-
name&.children&.each { |c2| parse(c2, b) }
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def i18n_init(lang, script)
|
28
|
-
super
|
29
|
-
@annex_lbl = "Appendix"
|
30
|
-
end
|
31
|
-
|
32
|
-
def fileloc(loc)
|
33
|
-
File.join(File.dirname(__FILE__), loc)
|
34
|
-
end
|
35
|
-
|
36
|
-
def cleanup(docxml)
|
37
|
-
super
|
38
|
-
term_cleanup(docxml)
|
39
|
-
end
|
40
|
-
|
41
|
-
def term_cleanup(docxml)
|
42
|
-
docxml.xpath("//p[@class = 'Terms']").each do |d|
|
43
|
-
h2 = d.at("./preceding-sibling::*[@class = 'TermNum'][1]")
|
44
|
-
h2.add_child(" ")
|
45
|
-
h2.add_child(d.remove)
|
46
|
-
end
|
47
|
-
docxml
|
48
|
-
end
|
49
|
-
|
50
|
-
def info(isoxml, out)
|
51
|
-
@meta.security isoxml, out
|
52
|
-
super
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|