metanorma-standoc 1.10.4 → 1.10.4.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/lib/asciidoctor/standoc/base.rb +13 -5
- data/lib/asciidoctor/standoc/blocks.rb +35 -31
- data/lib/asciidoctor/standoc/cleanup_block.rb +6 -3
- data/lib/asciidoctor/standoc/cleanup_reqt.rb +59 -14
- data/lib/asciidoctor/standoc/lists.rb +9 -6
- data/lib/asciidoctor/standoc/reqt.rng +8 -4
- data/lib/isodoc/base.standard.xsl +6003 -0
- data/lib/isodoc/pdf_convert.rb +20 -0
- data/lib/metanorma-standoc.rb +1 -0
- data/lib/metanorma/standoc/processor.rb +5 -1
- data/lib/metanorma/standoc/version.rb +1 -1
- data/spec/asciidoctor/base_spec.rb +6 -0
- data/spec/asciidoctor/cleanup_sections_spec.rb +1 -1
- data/spec/asciidoctor/cleanup_spec.rb +114 -30
- data/spec/asciidoctor/validate_spec.rb +4 -0
- data/spec/examples/datamodel/address_class_profile.adoc +1 -0
- data/spec/examples/datamodel/address_component_profile.adoc +1 -0
- data/spec/examples/datamodel/blank_definition_profile.adoc +1 -0
- data/spec/examples/datamodel/common_models_diagram.adoc +2 -1
- data/spec/examples/datamodel/top_down_diagram.adoc +2 -1
- data/spec/metanorma/processor_spec.rb +50 -50
- metadata +4 -2
@@ -0,0 +1,20 @@
|
|
1
|
+
require "isodoc"
|
2
|
+
|
3
|
+
module IsoDoc
|
4
|
+
module Standoc
|
5
|
+
|
6
|
+
# A {Converter} implementation that generates HTML output, and a document
|
7
|
+
# schema encapsulation of the document for validation
|
8
|
+
#
|
9
|
+
class PdfConvert < IsoDoc::XslfoPdfConvert
|
10
|
+
def initialize(options)
|
11
|
+
@libdir = File.dirname(__FILE__)
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def pdf_stylesheet(docxml)
|
16
|
+
"base.standard.xsl"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/metanorma-standoc.rb
CHANGED
@@ -13,6 +13,7 @@ module Metanorma
|
|
13
13
|
super.merge(
|
14
14
|
html: "html",
|
15
15
|
doc: "doc",
|
16
|
+
pdf: "pdf",
|
16
17
|
)
|
17
18
|
end
|
18
19
|
|
@@ -29,12 +30,15 @@ module Metanorma
|
|
29
30
|
when :html
|
30
31
|
options = options
|
31
32
|
.merge(htmlstylesheet: html_path("htmlstyle.scss"),
|
32
|
-
|
33
|
+
htmlcoverpage: html_path("html_titlepage.html"))
|
33
34
|
IsoDoc::HtmlConvert.new(options)
|
34
35
|
.convert(inname, isodoc_node, nil, outname)
|
35
36
|
when :doc
|
36
37
|
IsoDoc::WordConvert.new(options)
|
37
38
|
.convert(inname, isodoc_node, nil, outname)
|
39
|
+
when :pdf
|
40
|
+
IsoDoc::Standoc::PdfConvert.new(options)
|
41
|
+
.convert(inname, isodoc_node, nil, outname)
|
38
42
|
when :presentation
|
39
43
|
IsoDoc::PresentationXMLConvert.new(options)
|
40
44
|
.convert(inname, isodoc_node, nil, outname)
|
@@ -35,6 +35,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
35
35
|
expect(xmlpp(Asciidoctor.convert(input, *OPTIONS)))
|
36
36
|
.to be_equivalent_to xmlpp(output)
|
37
37
|
expect(File.exist?("test.doc")).to be true
|
38
|
+
expect(File.exist?("test.pdf")).to be true
|
38
39
|
expect(File.exist?("htmlstyle.css")).to be false
|
39
40
|
end
|
40
41
|
|
@@ -45,6 +46,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
45
46
|
Author
|
46
47
|
:docfile: test.adoc
|
47
48
|
:novalid:
|
49
|
+
:no-pdf:
|
48
50
|
:language: ar
|
49
51
|
INPUT
|
50
52
|
output = <<~OUTPUT
|
@@ -887,6 +889,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
887
889
|
Author
|
888
890
|
:docfile: test.adoc
|
889
891
|
:novalid:
|
892
|
+
:no-pdf:
|
890
893
|
:scripts: spec/assets/scripts.html
|
891
894
|
INPUT
|
892
895
|
html = File.read("test.html", encoding: "utf-8")
|
@@ -899,6 +902,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
899
902
|
= Document title
|
900
903
|
Author
|
901
904
|
:docfile: test.adoc
|
905
|
+
:no-pdf:
|
902
906
|
:novalid:
|
903
907
|
:script: Hans
|
904
908
|
:body-font: Zapf Chancery
|
@@ -934,6 +938,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
934
938
|
Author
|
935
939
|
:docfile: test.adoc
|
936
940
|
:novalid:
|
941
|
+
:no-pdf:
|
937
942
|
:script: Hans
|
938
943
|
:body-font: Zapf Chancery
|
939
944
|
:header-font: Comic Sans
|
@@ -974,6 +979,7 @@ QU1FOiB0ZXN0Cgo=
|
|
974
979
|
Asciidoctor.convert(<<~"INPUT", *OPTIONS)
|
975
980
|
= Document title
|
976
981
|
Author
|
982
|
+
:no-pdf:
|
977
983
|
:docfile: test.adoc
|
978
984
|
:doctype: standard
|
979
985
|
:encoding: utf-8
|
@@ -1357,7 +1357,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1357
1357
|
|
1358
1358
|
it "processes section names, internationalisation file" do
|
1359
1359
|
input = <<~INPUT
|
1360
|
-
#{ASCIIDOC_BLANK_HDR.sub(/:nodoc:/,
|
1360
|
+
#{ASCIIDOC_BLANK_HDR.sub(/:nodoc:/, ":no-pdf:\n:i18nyaml: spec/assets/i18n.yaml")}
|
1361
1361
|
.Foreword
|
1362
1362
|
|
1363
1363
|
Text
|
@@ -331,36 +331,36 @@ RSpec.describe Asciidoctor::Standoc do
|
|
331
331
|
....
|
332
332
|
INPUT
|
333
333
|
output = <<~OUTPUT
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
</p>
|
359
|
-
<figure id='_'>
|
360
|
-
|
361
|
-
</figure>
|
362
|
-
|
363
|
-
|
334
|
+
#{BLANK_HDR}
|
335
|
+
<sections>
|
336
|
+
<p id='_'>
|
337
|
+
“ppt”,
|
338
|
+
<index>
|
339
|
+
<primary>ppt</primary>
|
340
|
+
</index>
|
341
|
+
</p>
|
342
|
+
<p id='_'>
|
343
|
+
“ppm”,
|
344
|
+
<index>
|
345
|
+
<primary>ppm</primary>
|
346
|
+
</index>
|
347
|
+
“ppt”
|
348
|
+
<index>
|
349
|
+
<primary>ppt</primary>
|
350
|
+
</index>
|
351
|
+
</p>
|
352
|
+
<p id='_'>
|
353
|
+
“ppm
|
354
|
+
<index>
|
355
|
+
<primary>ppm</primary>
|
356
|
+
</index>
|
357
|
+
“ 
|
358
|
+
</p>
|
359
|
+
<figure id='_'>
|
360
|
+
<pre id='_'>((ppm))",</pre>
|
361
|
+
</figure>
|
362
|
+
</sections>
|
363
|
+
</standard-document>
|
364
364
|
OUTPUT
|
365
365
|
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
366
366
|
.to be_equivalent_to xmlpp(output)
|
@@ -2100,6 +2100,90 @@ RSpec.describe Asciidoctor::Standoc do
|
|
2100
2100
|
.to be_equivalent_to xmlpp(output)
|
2101
2101
|
end
|
2102
2102
|
|
2103
|
+
it "moves metadata deflist to correct location" do
|
2104
|
+
input = <<~INPUT
|
2105
|
+
#{ASCIIDOC_BLANK_HDR}
|
2106
|
+
|
2107
|
+
== Clause
|
2108
|
+
|
2109
|
+
[.requirement,subsequence="A",inherit="/ss/584/2015/level/1 & /ss/584/2015/level/2"]
|
2110
|
+
====
|
2111
|
+
[%metadata]
|
2112
|
+
model:: ogc
|
2113
|
+
type:: class
|
2114
|
+
label:: http://www.opengis.net/spec/waterml/2.0/req/xsd-xml-rules[*req/core*]
|
2115
|
+
subject:: Encoding of logical models
|
2116
|
+
inherit:: urn:iso:dis:iso:19156:clause:7.2.2
|
2117
|
+
inherit:: urn:iso:dis:iso:19156:clause:8
|
2118
|
+
inherit:: http://www.opengis.net/doc/IS/GML/3.2/clause/2.4
|
2119
|
+
inherit:: O&M Abstract model, OGC 10-004r3, clause D.3.4
|
2120
|
+
inherit:: http://www.opengis.net/spec/SWE/2.0/req/core/core-concepts-used
|
2121
|
+
inherit:: <<ref2>>
|
2122
|
+
inherit:: <<ref3>>
|
2123
|
+
classification:: priority:P0
|
2124
|
+
classification:: domain:Hydrology,Groundwater
|
2125
|
+
classification:: control-class:Technical
|
2126
|
+
obligation:: recommendation,requirement
|
2127
|
+
|
2128
|
+
I recommend this
|
2129
|
+
====
|
2130
|
+
INPUT
|
2131
|
+
output = <<~OUTPUT
|
2132
|
+
#{BLANK_HDR}
|
2133
|
+
<sections>
|
2134
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
2135
|
+
<title>Clause</title>
|
2136
|
+
<requirement id='_' subsequence='A'>
|
2137
|
+
<label>
|
2138
|
+
<link target='http://www.opengis.net/spec/waterml/2.0/req/xsd-xml-rules'>
|
2139
|
+
<strong>req/core</strong>
|
2140
|
+
</link>
|
2141
|
+
</label>
|
2142
|
+
<subject>Encoding of logical models</subject>
|
2143
|
+
<inherit>/ss/584/2015/level/1 & /ss/584/2015/level/2</inherit>
|
2144
|
+
<inherit>urn:iso:dis:iso:19156:clause:7.2.2</inherit>
|
2145
|
+
<inherit>urn:iso:dis:iso:19156:clause:8</inherit>
|
2146
|
+
<inherit>
|
2147
|
+
<link target='http://www.opengis.net/doc/IS/GML/3.2/clause/2.4'/>
|
2148
|
+
</inherit>
|
2149
|
+
<inherit>O&M Abstract model, OGC 10-004r3, clause D.3.4</inherit>
|
2150
|
+
<inherit>
|
2151
|
+
<link target='http://www.opengis.net/spec/SWE/2.0/req/core/core-concepts-used'/>
|
2152
|
+
</inherit>
|
2153
|
+
<inherit>
|
2154
|
+
<xref target='ref2'/>
|
2155
|
+
</inherit>
|
2156
|
+
<inherit>
|
2157
|
+
<xref target='ref3'/>
|
2158
|
+
</inherit>
|
2159
|
+
<classification>
|
2160
|
+
<tag>control-class</tag>
|
2161
|
+
<value>Technical</value>
|
2162
|
+
</classification>
|
2163
|
+
<classification>
|
2164
|
+
<tag>domain</tag>
|
2165
|
+
<value>Groundwater</value>
|
2166
|
+
</classification>
|
2167
|
+
<classification>
|
2168
|
+
<tag>domain</tag>
|
2169
|
+
<value>Hydrology</value>
|
2170
|
+
</classification>
|
2171
|
+
<classification>
|
2172
|
+
<tag>priority</tag>
|
2173
|
+
<value>P0</value>
|
2174
|
+
</classification>
|
2175
|
+
<description>
|
2176
|
+
<p id='_'>I recommend this</p>
|
2177
|
+
</description>
|
2178
|
+
</requirement>
|
2179
|
+
</clause>
|
2180
|
+
</sections>
|
2181
|
+
</standard-document>
|
2182
|
+
OUTPUT
|
2183
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
2184
|
+
.to be_equivalent_to xmlpp(output)
|
2185
|
+
end
|
2186
|
+
|
2103
2187
|
it "moves inherit macros to correct location" do
|
2104
2188
|
input = <<~INPUT
|
2105
2189
|
#{ASCIIDOC_BLANK_HDR}
|
@@ -22,6 +22,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
22
22
|
Author
|
23
23
|
:docfile: test.adoc
|
24
24
|
:nodoc:
|
25
|
+
:no-pdf:
|
25
26
|
|
26
27
|
[[abc]]
|
27
28
|
== Clause 1
|
@@ -258,6 +259,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
258
259
|
= Document title
|
259
260
|
Author
|
260
261
|
:docfile: test.adoc
|
262
|
+
:no-pdf:
|
261
263
|
|
262
264
|
[bibliography]
|
263
265
|
== Normative References
|
@@ -285,6 +287,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
285
287
|
= Document title
|
286
288
|
Author
|
287
289
|
:docfile: test.adoc
|
290
|
+
:no-pdf:
|
288
291
|
|
289
292
|
[bibliography]
|
290
293
|
== Normative References
|
@@ -443,6 +446,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
443
446
|
= Document title
|
444
447
|
Author
|
445
448
|
:docfile: test.adoc
|
449
|
+
:no-pdf:
|
446
450
|
|
447
451
|
footnoteblock:[id1]
|
448
452
|
|
@@ -3,7 +3,6 @@ require "metanorma"
|
|
3
3
|
require "fileutils"
|
4
4
|
|
5
5
|
RSpec.describe Metanorma::Standoc::Processor do
|
6
|
-
|
7
6
|
registry = Metanorma::Registry.instance
|
8
7
|
registry.register(Metanorma::Standoc::Processor)
|
9
8
|
processor = registry.find_processor(:standoc)
|
@@ -14,7 +13,7 @@ RSpec.describe Metanorma::Standoc::Processor do
|
|
14
13
|
|
15
14
|
it "registers output formats against metanorma" do
|
16
15
|
expect(processor.output_formats.sort.to_s).to be_equivalent_to <<~"OUTPUT"
|
17
|
-
|
16
|
+
[[:doc, "doc"], [:html, "html"], [:pdf, "pdf"], [:presentation, "presentation.xml"], [:rxl, "rxl"], [:xml, "xml"]]
|
18
17
|
OUTPUT
|
19
18
|
end
|
20
19
|
|
@@ -25,68 +24,69 @@ RSpec.describe Metanorma::Standoc::Processor do
|
|
25
24
|
|
26
25
|
it "generates IsoDoc XML from a blank document" do
|
27
26
|
expect(processor.input_to_isodoc(<<~"INPUT", "test")).to be_equivalent_to <<~"OUTPUT"
|
28
|
-
|
27
|
+
#{ASCIIDOC_BLANK_HDR}
|
29
28
|
INPUT
|
30
|
-
|
31
|
-
<sections/>
|
32
|
-
</iso-standard>
|
29
|
+
#{BLANK_HDR}
|
30
|
+
<sections/>
|
31
|
+
</iso-standard>
|
33
32
|
OUTPUT
|
34
33
|
end
|
35
34
|
|
36
35
|
it "generates HTML from IsoDoc XML" do
|
37
36
|
FileUtils.rm_f "test.html"
|
38
37
|
processor.output(<<~"INPUT", "test.xml", "test.html", :html)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
38
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
39
|
+
<sections>
|
40
|
+
<terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
|
41
|
+
<term id="J">
|
42
|
+
<preferred>Term2</preferred>
|
43
|
+
</term>
|
44
|
+
</terms>
|
45
|
+
</sections>
|
46
|
+
</iso-standard>
|
48
47
|
INPUT
|
49
|
-
expect(File.read("test.html", encoding: "utf-8").gsub(%r{^.*<main}m, "<main").gsub(
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
48
|
+
expect(File.read("test.html", encoding: "utf-8").gsub(%r{^.*<main}m, "<main").gsub(
|
49
|
+
%r{</main>.*}m, "</main>"
|
50
|
+
)).to be_equivalent_to <<~"OUTPUT"
|
51
|
+
<main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
|
52
|
+
<p class="zzSTDTitle1"></p>
|
53
|
+
<div id="H"><h1>Terms, Definitions, Symbols and Abbreviated Terms</h1><h2 class="TermNum" id="J"></h2>
|
54
|
+
<p class="Terms" style="text-align:left;">Term2</p>
|
55
|
+
</div>
|
56
|
+
</main>
|
57
|
+
OUTPUT
|
57
58
|
end
|
58
59
|
|
59
|
-
|
60
|
+
it "generates HTML from IsoDoc XML" do
|
60
61
|
FileUtils.rm_f "test.doc"
|
61
62
|
processor.output(<<~"INPUT", "test.xml", "test.doc", :doc)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
63
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
64
|
+
<sections>
|
65
|
+
<terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
|
66
|
+
<term id="J">
|
67
|
+
<preferred>Term2</preferred>
|
68
|
+
</term>
|
69
|
+
</terms>
|
70
|
+
</sections>
|
71
|
+
</iso-standard>
|
71
72
|
INPUT
|
72
|
-
expect(File.read("test.doc",
|
73
|
-
|
73
|
+
expect(File.read("test.doc",
|
74
|
+
encoding: "utf-8")).to match(/Terms, Definitions, Symbols and Abbreviated Terms/)
|
75
|
+
end
|
74
76
|
|
75
|
-
|
77
|
+
it "generates XML from IsoDoc XML" do
|
76
78
|
FileUtils.rm_f "test.xml"
|
77
79
|
processor.output(<<~"INPUT", "test.xml", "test.xml", :xml)
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
|
80
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
81
|
+
<sections>
|
82
|
+
<terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
|
83
|
+
<term id="J">
|
84
|
+
<preferred>Term2</preferred>
|
85
|
+
</term>
|
86
|
+
</terms>
|
87
|
+
</sections>
|
88
|
+
</iso-standard>
|
89
|
+
INPUT
|
90
|
+
expect(File.exist?("test.xml")).to be true
|
91
|
+
end
|
92
92
|
end
|