metanorma-mpfd 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +17 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +25 -0
  7. data/README.adoc +1 -0
  8. data/Rakefile +6 -0
  9. data/bin/console +14 -0
  10. data/bin/rspec +18 -0
  11. data/bin/setup +8 -0
  12. data/lib/asciidoctor/mpfd/biblio.rng +836 -0
  13. data/lib/asciidoctor/mpfd/converter.rb +204 -0
  14. data/lib/asciidoctor/mpfd/isodoc.rng +1041 -0
  15. data/lib/asciidoctor/mpfd/isostandard.rng +1001 -0
  16. data/lib/asciidoctor/mpfd/pdf.js +31 -0
  17. data/lib/asciidoctor/mpfd/rsd.rng +212 -0
  18. data/lib/asciidoctor/mpfd/section.rb +94 -0
  19. data/lib/asciidoctor/mpfd/version.rb +5 -0
  20. data/lib/asciidoctor/mpfd.rb +9 -0
  21. data/lib/isodoc/mpfd/html/header.html +184 -0
  22. data/lib/isodoc/mpfd/html/html_rsd_intro.html +8 -0
  23. data/lib/isodoc/mpfd/html/html_rsd_titlepage.html +58 -0
  24. data/lib/isodoc/mpfd/html/htmlstyle.scss +1094 -0
  25. data/lib/isodoc/mpfd/html/logo.jpg +0 -0
  26. data/lib/isodoc/mpfd/html/logo.svg +1 -0
  27. data/lib/isodoc/mpfd/html/mpfa-logo-no-text@4x.png +0 -0
  28. data/lib/isodoc/mpfd/html/mpfa-logo@4x.png +0 -0
  29. data/lib/isodoc/mpfd/html/rsd.scss +564 -0
  30. data/lib/isodoc/mpfd/html/scripts.html +82 -0
  31. data/lib/isodoc/mpfd/html/word_rsd_intro.html +3 -0
  32. data/lib/isodoc/mpfd/html/word_rsd_titlepage.html +42 -0
  33. data/lib/isodoc/mpfd/html/wordstyle.scss +1096 -0
  34. data/lib/isodoc/mpfd/html_convert.rb +370 -0
  35. data/lib/isodoc/mpfd/i18n-en.yaml +1 -0
  36. data/lib/isodoc/mpfd/metadata.rb +98 -0
  37. data/lib/isodoc/mpfd/pdf_convert.rb +367 -0
  38. data/lib/isodoc/mpfd/word_convert.rb +347 -0
  39. data/lib/metanorma/mpfd/processor.rb +43 -0
  40. data/lib/metanorma/mpfd.rb +7 -0
  41. data/lib/metanorma-mpfd.rb +11 -0
  42. data/metanorma-mpfd.gemspec +46 -0
  43. 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,5 @@
1
+ module Asciidoctor
2
+ module Mpfd
3
+ VERSION = "0.0.2"
4
+ end
5
+ end
@@ -0,0 +1,9 @@
1
+ require "asciidoctor/mpfd/version"
2
+
3
+ module Asciidoctor
4
+ module Mpfd
5
+
6
+ MPFD_NAMESPACE = "https://open.ribose.com/standards/mpfd"
7
+
8
+ end
9
+ 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&nbsp;{{ 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.&nbsp;{{ docyear }}&nbsp;– 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.&nbsp;{{ docyear }}&nbsp;– 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.&nbsp;{{ 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.&nbsp;{{ 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.&nbsp;{{ docyear }}&nbsp;– 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.&nbsp;{{ docyear }}&nbsp;– 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.&nbsp;{{ docyear }}&nbsp;– 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.&nbsp;{{ docyear }}&nbsp;– 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,8 @@
1
+ <nav>
2
+ <h1 id="content">Contents</h1>
3
+ <div id="toc"></div>
4
+
5
+ </nav>
6
+
7
+
8
+ <div class="rule toc"></div>
@@ -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>&#x2022;</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>