metanorma-mpfd 0.0.2
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 +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +17 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.adoc +1 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/rspec +18 -0
- data/bin/setup +8 -0
- data/lib/asciidoctor/mpfd/biblio.rng +836 -0
- data/lib/asciidoctor/mpfd/converter.rb +204 -0
- data/lib/asciidoctor/mpfd/isodoc.rng +1041 -0
- data/lib/asciidoctor/mpfd/isostandard.rng +1001 -0
- data/lib/asciidoctor/mpfd/pdf.js +31 -0
- data/lib/asciidoctor/mpfd/rsd.rng +212 -0
- data/lib/asciidoctor/mpfd/section.rb +94 -0
- data/lib/asciidoctor/mpfd/version.rb +5 -0
- data/lib/asciidoctor/mpfd.rb +9 -0
- data/lib/isodoc/mpfd/html/header.html +184 -0
- data/lib/isodoc/mpfd/html/html_rsd_intro.html +8 -0
- data/lib/isodoc/mpfd/html/html_rsd_titlepage.html +58 -0
- data/lib/isodoc/mpfd/html/htmlstyle.scss +1094 -0
- data/lib/isodoc/mpfd/html/logo.jpg +0 -0
- data/lib/isodoc/mpfd/html/logo.svg +1 -0
- data/lib/isodoc/mpfd/html/mpfa-logo-no-text@4x.png +0 -0
- data/lib/isodoc/mpfd/html/mpfa-logo@4x.png +0 -0
- data/lib/isodoc/mpfd/html/rsd.scss +564 -0
- data/lib/isodoc/mpfd/html/scripts.html +82 -0
- data/lib/isodoc/mpfd/html/word_rsd_intro.html +3 -0
- data/lib/isodoc/mpfd/html/word_rsd_titlepage.html +42 -0
- data/lib/isodoc/mpfd/html/wordstyle.scss +1096 -0
- data/lib/isodoc/mpfd/html_convert.rb +370 -0
- data/lib/isodoc/mpfd/i18n-en.yaml +1 -0
- data/lib/isodoc/mpfd/metadata.rb +98 -0
- data/lib/isodoc/mpfd/pdf_convert.rb +367 -0
- data/lib/isodoc/mpfd/word_convert.rb +347 -0
- data/lib/metanorma/mpfd/processor.rb +43 -0
- data/lib/metanorma/mpfd.rb +7 -0
- data/lib/metanorma-mpfd.rb +11 -0
- data/metanorma-mpfd.gemspec +46 -0
- metadata +326 -0
@@ -0,0 +1,31 @@
|
|
1
|
+
'use strict';
|
2
|
+
|
3
|
+
try {
|
4
|
+
require.resolve("puppeteer");
|
5
|
+
} catch(e) {
|
6
|
+
console.error("puppeteer Node library is not installed; will not generate PDF");
|
7
|
+
process.exit(e.code);
|
8
|
+
}
|
9
|
+
|
10
|
+
const puppeteer = require('puppeteer');
|
11
|
+
|
12
|
+
const createPdf = async() => {
|
13
|
+
let browser;
|
14
|
+
try {
|
15
|
+
browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
|
16
|
+
const page = await browser.newPage();
|
17
|
+
await page.goto(process.argv[2], {waitUntil: 'networkidle2'});
|
18
|
+
await page.pdf({
|
19
|
+
path: process.argv[3],
|
20
|
+
format: 'A4'
|
21
|
+
});
|
22
|
+
} catch (err) {
|
23
|
+
console.log(err.message);
|
24
|
+
} finally {
|
25
|
+
if (browser) {
|
26
|
+
browser.close();
|
27
|
+
}
|
28
|
+
process.exit();
|
29
|
+
}
|
30
|
+
};
|
31
|
+
createPdf();
|
@@ -0,0 +1,212 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
3
|
+
<!--
|
4
|
+
Currently we inherit from a namespaced grammar, isostandard. Until we inherit from isodoc,
|
5
|
+
we cannot have a new default namespace: we will end up with a grammar with two different
|
6
|
+
namespaces, one for isostandard and one for csand additions. And we do not want that.
|
7
|
+
-->
|
8
|
+
<include href="isostandard.rng">
|
9
|
+
<start>
|
10
|
+
<ref name="rsd-standard"/>
|
11
|
+
</start>
|
12
|
+
<define name="language">
|
13
|
+
<element name="language">
|
14
|
+
<value>en</value>
|
15
|
+
</element>
|
16
|
+
</define>
|
17
|
+
<define name="docidentifier">
|
18
|
+
<element name="docidentifier">
|
19
|
+
<text/>
|
20
|
+
</element>
|
21
|
+
</define>
|
22
|
+
<define name="btitle">
|
23
|
+
<element name="title">
|
24
|
+
<ref name="FormattedString"/>
|
25
|
+
</element>
|
26
|
+
</define>
|
27
|
+
<define name="figure">
|
28
|
+
<element name="figure">
|
29
|
+
<attribute name="id">
|
30
|
+
<data type="ID"/>
|
31
|
+
</attribute>
|
32
|
+
<optional>
|
33
|
+
<ref name="source"/>
|
34
|
+
</optional>
|
35
|
+
<optional>
|
36
|
+
<ref name="tname"/>
|
37
|
+
</optional>
|
38
|
+
<choice>
|
39
|
+
<oneOrMore>
|
40
|
+
<ref name="figure"/>
|
41
|
+
</oneOrMore>
|
42
|
+
<group>
|
43
|
+
<choice>
|
44
|
+
<zeroOrMore>
|
45
|
+
<ref name="TextElement"/>
|
46
|
+
</zeroOrMore>
|
47
|
+
<ref name="pre"/>
|
48
|
+
</choice>
|
49
|
+
<zeroOrMore>
|
50
|
+
<ref name="note"/>
|
51
|
+
</zeroOrMore>
|
52
|
+
<optional>
|
53
|
+
<ref name="dl"/>
|
54
|
+
</optional>
|
55
|
+
</group>
|
56
|
+
</choice>
|
57
|
+
</element>
|
58
|
+
</define>
|
59
|
+
<define name="status">
|
60
|
+
<element name="status">
|
61
|
+
<choice>
|
62
|
+
<value>proposal</value>
|
63
|
+
<value>working-draft</value>
|
64
|
+
<value>committee-draft</value>
|
65
|
+
<value>draft-standard</value>
|
66
|
+
<value>final-draft</value>
|
67
|
+
<value>published</value>
|
68
|
+
<value>withdrawn</value>
|
69
|
+
<ref name="LocalizedString"/>
|
70
|
+
</choice>
|
71
|
+
</element>
|
72
|
+
</define>
|
73
|
+
<!-- TextElement |= keyword -->
|
74
|
+
<define name="TextElement">
|
75
|
+
<choice>
|
76
|
+
<text/>
|
77
|
+
<ref name="em"/>
|
78
|
+
<ref name="eref"/>
|
79
|
+
<ref name="strong"/>
|
80
|
+
<ref name="stem"/>
|
81
|
+
<ref name="sub"/>
|
82
|
+
<ref name="sup"/>
|
83
|
+
<ref name="tt"/>
|
84
|
+
<ref name="strike"/>
|
85
|
+
<ref name="smallcap"/>
|
86
|
+
<ref name="xref"/>
|
87
|
+
<ref name="br"/>
|
88
|
+
<ref name="hyperlink"/>
|
89
|
+
<ref name="hr"/>
|
90
|
+
<ref name="pagebreak"/>
|
91
|
+
<ref name="bookmark"/>
|
92
|
+
<ref name="keyword"/>
|
93
|
+
</choice>
|
94
|
+
</define>
|
95
|
+
<define name="BibItemType" combine="choice">
|
96
|
+
<choice>
|
97
|
+
<value>policy-and-procedures</value>
|
98
|
+
<value>best-practices</value>
|
99
|
+
<value>supporting-document</value>
|
100
|
+
<value>report</value>
|
101
|
+
<value>legal</value>
|
102
|
+
<value>directives</value>
|
103
|
+
<value>proposal</value>
|
104
|
+
<value>standard</value>
|
105
|
+
</choice>
|
106
|
+
</define>
|
107
|
+
<define name="editorialgroup">
|
108
|
+
<element name="editorialgroup">
|
109
|
+
<ref name="committee"/>
|
110
|
+
</element>
|
111
|
+
</define>
|
112
|
+
<define name="BibData">
|
113
|
+
<optional>
|
114
|
+
<attribute name="type">
|
115
|
+
<ref name="BibItemType"/>
|
116
|
+
</attribute>
|
117
|
+
</optional>
|
118
|
+
<oneOrMore>
|
119
|
+
<ref name="btitle"/>
|
120
|
+
</oneOrMore>
|
121
|
+
<optional>
|
122
|
+
<ref name="formattedref"/>
|
123
|
+
</optional>
|
124
|
+
<zeroOrMore>
|
125
|
+
<ref name="bsource"/>
|
126
|
+
</zeroOrMore>
|
127
|
+
<zeroOrMore>
|
128
|
+
<ref name="docidentifier"/>
|
129
|
+
</zeroOrMore>
|
130
|
+
<zeroOrMore>
|
131
|
+
<ref name="bdate"/>
|
132
|
+
</zeroOrMore>
|
133
|
+
<zeroOrMore>
|
134
|
+
<ref name="contributor"/>
|
135
|
+
</zeroOrMore>
|
136
|
+
<optional>
|
137
|
+
<ref name="edition"/>
|
138
|
+
</optional>
|
139
|
+
<zeroOrMore>
|
140
|
+
<ref name="biblionote"/>
|
141
|
+
</zeroOrMore>
|
142
|
+
<zeroOrMore>
|
143
|
+
<ref name="language"/>
|
144
|
+
</zeroOrMore>
|
145
|
+
<zeroOrMore>
|
146
|
+
<ref name="script"/>
|
147
|
+
</zeroOrMore>
|
148
|
+
<zeroOrMore>
|
149
|
+
<ref name="abstract"/>
|
150
|
+
</zeroOrMore>
|
151
|
+
<optional>
|
152
|
+
<ref name="status"/>
|
153
|
+
</optional>
|
154
|
+
<ref name="copyright"/>
|
155
|
+
<zeroOrMore>
|
156
|
+
<ref name="docrelation"/>
|
157
|
+
</zeroOrMore>
|
158
|
+
<ref name="editorialgroup"/>
|
159
|
+
<zeroOrMore>
|
160
|
+
<ref name="ics"/>
|
161
|
+
</zeroOrMore>
|
162
|
+
<optional>
|
163
|
+
<ref name="security"/>
|
164
|
+
</optional>
|
165
|
+
</define>
|
166
|
+
</include>
|
167
|
+
<define name="committee">
|
168
|
+
<element name="committee">
|
169
|
+
<attribute name="type">
|
170
|
+
<choice>
|
171
|
+
<value>technical</value>
|
172
|
+
<value>provisional</value>
|
173
|
+
</choice>
|
174
|
+
</attribute>
|
175
|
+
<text/>
|
176
|
+
</element>
|
177
|
+
</define>
|
178
|
+
<define name="pre">
|
179
|
+
<element name="pre">
|
180
|
+
<text/>
|
181
|
+
</element>
|
182
|
+
</define>
|
183
|
+
<define name="keyword">
|
184
|
+
<element name="keyword">
|
185
|
+
<text/>
|
186
|
+
</element>
|
187
|
+
</define>
|
188
|
+
<define name="security">
|
189
|
+
<element name="security">
|
190
|
+
<text/>
|
191
|
+
</element>
|
192
|
+
</define>
|
193
|
+
<define name="rsd-standard">
|
194
|
+
<element name="rsd-standard">
|
195
|
+
<ref name="bibdata"/>
|
196
|
+
<optional>
|
197
|
+
<ref name="version"/>
|
198
|
+
</optional>
|
199
|
+
<zeroOrMore>
|
200
|
+
<ref name="termdocsource"/>
|
201
|
+
</zeroOrMore>
|
202
|
+
<ref name="preface"/>
|
203
|
+
<oneOrMore>
|
204
|
+
<ref name="sections"/>
|
205
|
+
</oneOrMore>
|
206
|
+
<zeroOrMore>
|
207
|
+
<ref name="annex"/>
|
208
|
+
</zeroOrMore>
|
209
|
+
<ref name="bibliography"/>
|
210
|
+
</element>
|
211
|
+
</define>
|
212
|
+
</grammar>
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require "asciidoctor"
|
2
|
+
require "asciidoctor/mpfd"
|
3
|
+
require "asciidoctor/iso/converter"
|
4
|
+
require "isodoc/mpfd/html_convert"
|
5
|
+
require "isodoc/mpfd/word_convert"
|
6
|
+
|
7
|
+
module Asciidoctor
|
8
|
+
module Mpfd
|
9
|
+
|
10
|
+
# A {Converter} implementation that generates MPFD output, and a document
|
11
|
+
# schema encapsulation of the document for validation
|
12
|
+
#
|
13
|
+
class Converter < ISO::Converter
|
14
|
+
|
15
|
+
def sections_cleanup(x)
|
16
|
+
super
|
17
|
+
x.xpath("//*[@inline-header]").each do |h|
|
18
|
+
h.delete("inline-header")
|
19
|
+
end
|
20
|
+
x.xpath("//[@guidance]").each do |h|
|
21
|
+
require "byebug"; byebug
|
22
|
+
c = h.previous_element || next
|
23
|
+
c.add_child h.remove
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def section(node)
|
28
|
+
a = { id: Asciidoctor::ISO::Utils::anchor_or_uuid(node) }
|
29
|
+
noko do |xml|
|
30
|
+
case sectiontype(node)
|
31
|
+
when "introduction" then
|
32
|
+
if node.level == 1 then introduction_parse(a, xml, node)
|
33
|
+
else
|
34
|
+
clause_parse(a, xml, node)
|
35
|
+
end
|
36
|
+
when "terms and definitions",
|
37
|
+
"terms, definitions, symbols and abbreviated terms",
|
38
|
+
"terms, definitions, symbols and abbreviations",
|
39
|
+
"terms, definitions and symbols",
|
40
|
+
"terms, definitions and abbreviations",
|
41
|
+
"terms, definitions and abbreviated terms",
|
42
|
+
"glossary"
|
43
|
+
@term_def = true
|
44
|
+
term_def_parse(a, xml, node, true)
|
45
|
+
@term_def = false
|
46
|
+
when "symbols and abbreviated terms"
|
47
|
+
symbols_parse(a, xml, node)
|
48
|
+
when "bibliography" then bibliography_parse(a, xml, node)
|
49
|
+
else
|
50
|
+
if @term_def then term_def_subclause_parse(a, xml, node)
|
51
|
+
elsif @biblio then bibliography_parse(a, xml, node)
|
52
|
+
elsif node.attr("style") == "bibliography" && node.level == 1
|
53
|
+
bibliography_parse(a, xml, node)
|
54
|
+
elsif node.attr("style") == "appendix" && node.level == 1
|
55
|
+
annex_parse(a, xml, node)
|
56
|
+
elsif node.option? "appendix"
|
57
|
+
appendix_parse(a, xml, node)
|
58
|
+
else
|
59
|
+
clause_parse(a, xml, node)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end.join("\n")
|
63
|
+
end
|
64
|
+
|
65
|
+
def term_def_title(_toplevel, node)
|
66
|
+
return node.title
|
67
|
+
end
|
68
|
+
|
69
|
+
def make_preface(x, s)
|
70
|
+
if x.at("//foreword | //introduction | //terms")
|
71
|
+
preface = s.add_previous_sibling("<preface/>").first
|
72
|
+
foreword = x.at("//foreword")
|
73
|
+
preface.add_child foreword.remove if foreword
|
74
|
+
introduction = x.at("//introduction")
|
75
|
+
preface.add_child introduction.remove if introduction
|
76
|
+
terms = x.at("//terms")
|
77
|
+
preface.add_child terms.remove if terms
|
78
|
+
end
|
79
|
+
x.xpath("//clause[@preface]").each do |c|
|
80
|
+
c.delete("preface")
|
81
|
+
preface.add_child c.remove
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def clause_parse(attrs, xml, node)
|
86
|
+
attrs[:preface] = true if node.attr("style") == "preface"
|
87
|
+
attrs[:guidance] = true if node.role == "guidance"
|
88
|
+
attrs[:container] = true if node.role == "container"
|
89
|
+
super
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,184 @@
|
|
1
|
+
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
2
|
+
xmlns:o="urn:schemas-microsoft-com:office:office"
|
3
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
4
|
+
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
5
|
+
xmlns:mv="http://macVmlSchemaUri" xmlns="http://www.w3.org/TR/REC-html40">
|
6
|
+
|
7
|
+
<head>
|
8
|
+
<meta name=Title content="">
|
9
|
+
<meta name=Keywords content="">
|
10
|
+
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
11
|
+
<meta name=ProgId content=Word.Document>
|
12
|
+
<meta name=Generator content="Microsoft Word 15">
|
13
|
+
<meta name=Originator content="Microsoft Word 15">
|
14
|
+
<link id=Main-File rel=Main-File href="../{{ filename }}.html">
|
15
|
+
<!--[if gte mso 9]><xml>
|
16
|
+
<o:shapedefaults v:ext="edit" spidmax="2049"/>
|
17
|
+
</xml><![endif]-->
|
18
|
+
</head>
|
19
|
+
|
20
|
+
<body lang=EN link=blue vlink="#954F72">
|
21
|
+
|
22
|
+
<div style='mso-element:footnote-separator' id=fs>
|
23
|
+
|
24
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
25
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
26
|
+
|
27
|
+
<hr align=left size=1 width="33%">
|
28
|
+
|
29
|
+
<![endif]></span></span></p>
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div style='mso-element:footnote-continuation-separator' id=fcs>
|
34
|
+
|
35
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
36
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
37
|
+
|
38
|
+
<hr align=left size=1>
|
39
|
+
|
40
|
+
<![endif]></span></span></p>
|
41
|
+
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div style='mso-element:endnote-separator' id=es>
|
45
|
+
|
46
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
47
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
48
|
+
|
49
|
+
<hr align=left size=1 width="33%">
|
50
|
+
|
51
|
+
<![endif]></span></span></p>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div style='mso-element:endnote-continuation-separator' id=ecs>
|
56
|
+
|
57
|
+
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;line-height:
|
58
|
+
normal'><span lang=EN-GB><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
59
|
+
|
60
|
+
<hr align=left size=1>
|
61
|
+
|
62
|
+
<![endif]></span></span></p>
|
63
|
+
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<div style='mso-element:header' id=eh1>
|
67
|
+
|
68
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
69
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>CS {{ docnumber }}:{{ docyear }}</span></p>
|
70
|
+
|
71
|
+
</div>
|
72
|
+
|
73
|
+
<div style='mso-element:header' id=h1>
|
74
|
+
|
75
|
+
<p class=MsoHeader style='margin-bottom:18.0pt'><span lang=EN-GB
|
76
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt;font-weight:normal'>©
|
77
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved</span><span lang=EN-GB
|
78
|
+
style='font-weight:normal'><o:p></o:p></span></p>
|
79
|
+
|
80
|
+
</div>
|
81
|
+
|
82
|
+
<div style='mso-element:footer' id=ef1>
|
83
|
+
|
84
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
85
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
86
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
87
|
+
style='mso-element:field-begin'></span><span
|
88
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
89
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
90
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
91
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
92
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
93
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
94
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
95
|
+
style='mso-tab-count:1'> </span>©
|
96
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
97
|
+
|
98
|
+
</div>
|
99
|
+
|
100
|
+
<div style='mso-element:header' id=eh2>
|
101
|
+
|
102
|
+
<p class=MsoHeader align=left style='text-align:left;line-height:12.0pt;
|
103
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose Group Inc. {{ docnumber }}:{{ docyear }}</span></p>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<div style='mso-element:header' id=h2>
|
108
|
+
|
109
|
+
<p class=MsoHeader align=right style='text-align:right;line-height:12.0pt;
|
110
|
+
mso-line-height-rule:exactly'><span lang=EN-GB>Ribose Group Inc. {{ docnumber }}:{{ docyear }}</span></p>
|
111
|
+
|
112
|
+
</div>
|
113
|
+
|
114
|
+
<div style='mso-element:footer' id=ef2>
|
115
|
+
|
116
|
+
<p class=MsoFooter style='line-height:12.0pt;mso-line-height-rule:exactly'><!--[if supportFields]><span
|
117
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
118
|
+
style='mso-element:field-begin'></span><span
|
119
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
120
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
121
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
122
|
+
style='mso-no-proof:yes'>ii</span></span><!--[if supportFields]><span
|
123
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
124
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
125
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span style='mso-tab-count:
|
126
|
+
1'> </span>©
|
127
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div style='mso-element:footer' id=f2>
|
132
|
+
|
133
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
134
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
135
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><span
|
136
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
137
|
+
style='mso-element:field-begin'></span> PAGE<span style='mso-spacerun:yes'>
|
138
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span><![endif]--><span
|
139
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
140
|
+
style='mso-no-proof:yes'>iii</span></span><!--[if supportFields]><span
|
141
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
142
|
+
style='mso-element:field-end'></span></span><![endif]--><span lang=EN-GB
|
143
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
144
|
+
|
145
|
+
</div>
|
146
|
+
|
147
|
+
<div style='mso-element:footer' id=ef3>
|
148
|
+
|
149
|
+
<p class=MsoFooter style='margin-top:12.0pt;line-height:12.0pt;mso-line-height-rule:
|
150
|
+
exactly'><!--[if supportFields]><b style='mso-bidi-font-weight:normal'><span
|
151
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
152
|
+
style='mso-element:field-begin'></span><span
|
153
|
+
style='mso-spacerun:yes'> </span>PAGE<span style='mso-spacerun:yes'>
|
154
|
+
</span>\* MERGEFORMAT <span style='mso-element:field-separator'></span></span></b><![endif]--><b
|
155
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
156
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>2</span></span></b><!--[if supportFields]><b
|
157
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
158
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
159
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><span
|
160
|
+
style='mso-tab-count:1'> </span>©
|
161
|
+
Ribose Group Inc. {{ docyear }} – All rights reserved<o:p></o:p></span></p>
|
162
|
+
|
163
|
+
</div>
|
164
|
+
|
165
|
+
<div style='mso-element:footer' id=f3>
|
166
|
+
|
167
|
+
<p class=MsoFooter style='line-height:12.0pt'><span lang=EN-GB
|
168
|
+
style='font-size:10.0pt;mso-bidi-font-size:11.0pt'>© Ribose Group Inc. {{ docyear }} – All
|
169
|
+
rights reserved<span style='mso-tab-count:1'> </span></span><!--[if supportFields]><b
|
170
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
171
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-begin'></span>
|
172
|
+
PAGE<span style='mso-spacerun:yes'> </span>\* MERGEFORMAT <span
|
173
|
+
style='mso-element:field-separator'></span></span></b><![endif]--><b
|
174
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
175
|
+
mso-bidi-font-size:11.0pt'><span style='mso-no-proof:yes'>3</span></span></b><!--[if supportFields]><b
|
176
|
+
style='mso-bidi-font-weight:normal'><span lang=EN-GB style='font-size:10.0pt;
|
177
|
+
mso-bidi-font-size:11.0pt'><span style='mso-element:field-end'></span></span></b><![endif]--><span
|
178
|
+
lang=EN-GB style='font-size:10.0pt;mso-bidi-font-size:11.0pt'><o:p></o:p></span></p>
|
179
|
+
|
180
|
+
</div>
|
181
|
+
|
182
|
+
</body>
|
183
|
+
|
184
|
+
</html>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<!--
|
2
|
+
<div class="document-stage-band" id='{{ status | downcase | replace: " ", "-" }}-band'>
|
3
|
+
<p class="document-stage">{{ status }}</p>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<div class="document-type-band" id='{{ doctype | downcase | replace: " ", "-" }}-band'>
|
7
|
+
<p class="document-type">Ribose {{ doctype }}</p>
|
8
|
+
</div>
|
9
|
+
-->
|
10
|
+
|
11
|
+
|
12
|
+
<div id='toggle'> <span>•</span> </div>
|
13
|
+
|
14
|
+
<header>
|
15
|
+
|
16
|
+
<div class="coverpage">
|
17
|
+
<div class="wrapper-top">
|
18
|
+
|
19
|
+
<div class="coverpage-doc-identity">
|
20
|
+
<img src="mpfa-logo-no-text@4x.png" width="50px">
|
21
|
+
</div>
|
22
|
+
|
23
|
+
{% if docnumber %}
|
24
|
+
<div class="doc-number">
|
25
|
+
<span class="docnumber">{{ docnumber }}</span>
|
26
|
+
<span class="docyear">{{ docyear }} {{ draftinfo }}</span>
|
27
|
+
</div>
|
28
|
+
{% endif %}
|
29
|
+
|
30
|
+
<div class="coverpage-title">
|
31
|
+
<span class="title-1">{{ doctype }}</span>
|
32
|
+
<span class="title-3">{{ doctitle }}</span>
|
33
|
+
<!--<span class="title-second">{{ docsubtitle }}</span>-->
|
34
|
+
</div>
|
35
|
+
|
36
|
+
<div class="coverpage-footer">
|
37
|
+
<div class="coverpage-logo">
|
38
|
+
<span class="doc-edition">{{ edition }} Edition</span>
|
39
|
+
<span>{{ revdate_monthyear }} {{ draftinfo }}</span>
|
40
|
+
|
41
|
+
</div>
|
42
|
+
|
43
|
+
<div class="coverpage-location">
|
44
|
+
<span>Hong Kong</span>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
<div class="info-section">
|
51
|
+
<div class="copyright">
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
|
58
|
+
</header>
|