metanorma-standoc 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95bc05ab73fa06e975a949474abebaf5959e75c1e84b8b8c246cf08dd7263dfc
4
- data.tar.gz: b2e6975dff646384cc1a902aa8d58b2f85d818fb12d001de484b12180ad340f0
3
+ metadata.gz: db3428a1564b7f52dd275be33d22191aacec1c9de572bd355b2889e1da0f7acd
4
+ data.tar.gz: dadf1c955de197d23c37440b5d028793e9dff69e0e5dea566e214458ba3ff065
5
5
  SHA512:
6
- metadata.gz: c199576acff27f9dddd1f1458f1fe1889667ad0b353a40a845989190cf225f911a2edc612099a8290aac01492536af73aec5ef6a3d9325c7518c9694bea1321b
7
- data.tar.gz: 48f9fd5f5cc59495ddcbf1eec93851fce1a08148116f09037fafa260b6a8a0abb1f10c4e6398e6b4e95027ab5eafd574956979db4ee49efe38efa291b89e5732
6
+ metadata.gz: 5b79bf52f01df9f3c02eb128d867cadaef60829b5c58adc64aad116a2a2654c0ea1b0a85580c370eeba1c87434fb5ff21dfb81e4fc827cec9f668adc18c21a5c
7
+ data.tar.gz: 0542ccaa5125ab49f192edbd29c21e33db9c560eb3eb1f327ec22d196de6acb22eff9be43d893f7e85e44a856c8000a564f88cbc10f09e8f2a6ca991551c43a3
@@ -37,6 +37,11 @@ module Asciidoctor
37
37
  headerfont: node.attr("header-font"),
38
38
  monospacefont: node.attr("monospace-font"),
39
39
  i18nyaml: node.attr("i18nyaml"),
40
+ scope: node.attr("scope"),
41
+ htmlstylesheet: node.attr("htmlstylesheet"),
42
+ htmlcoverpage: node.attr("htmlcoverpage"),
43
+ htmlintropage: node.attr("htmlintropage"),
44
+ scripts: node.attr("scripts"),
40
45
  )
41
46
  end
42
47
 
@@ -47,6 +52,14 @@ module Asciidoctor
47
52
  headerfont: node.attr("header-font"),
48
53
  monospacefont: node.attr("monospace-font"),
49
54
  i18nyaml: node.attr("i18nyaml"),
55
+ scope: node.attr("scope"),
56
+ wordstylesheet: node.attr("wordstylesheet"),
57
+ standardstylesheet: node.attr("standardstylesheet"),
58
+ header: node.attr("header"),
59
+ wordcoverpage: node.attr("wordcoverpage"),
60
+ wordintropage: node.attr("wordintropage"),
61
+ ulstyle: node.attr("ulstyle"),
62
+ olstyle: node.attr("olstyle"),
50
63
  )
51
64
  end
52
65
 
@@ -184,23 +184,6 @@ module Asciidoctor
184
184
  end
185
185
  end
186
186
 
187
- ELEMS_ALLOW_NOTES =
188
- # %w[p formula quote sourcecode example admonition ul ol dl figure]
189
- %w[p formula ul ol dl figure].freeze
190
-
191
- # if a note is at the end of a section, it is left alone
192
- # if a note is followed by a non-note block,
193
- # it is moved inside its preceding block if it is not delimited
194
- # (so there was no way of making that block include the note)
195
- def note_cleanup(xmldoc)
196
- q = "//note[following-sibling::*[not(local-name() = 'note')]]"
197
- xmldoc.xpath(q).each do |n|
198
- next unless n.ancestors("table").empty?
199
- prev = n.previous_element || next
200
- n.parent = prev if ELEMS_ALLOW_NOTES.include? prev.name
201
- end
202
- end
203
-
204
187
  def empty_text_before_first_element(x)
205
188
  x.children.each do |c|
206
189
  if c.text?
@@ -129,6 +129,23 @@ module Asciidoctor
129
129
  end
130
130
  end
131
131
 
132
+ ELEMS_ALLOW_NOTES =
133
+ # %w[p formula quote sourcecode example admonition ul ol dl figure]
134
+ %w[p formula ul ol dl figure].freeze
135
+
136
+ # if a note is at the end of a section, it is left alone
137
+ # if a note is followed by a non-note block,
138
+ # it is moved inside its preceding block if it is not delimited
139
+ # (so there was no way of making that block include the note)
140
+ def note_cleanup(xmldoc)
141
+ q = "//note[following-sibling::*[not(local-name() = 'note')]]"
142
+ xmldoc.xpath(q).each do |n|
143
+ next unless n.ancestors("table").empty?
144
+ prev = n.previous_element || next
145
+ n.parent = prev if ELEMS_ALLOW_NOTES.include? prev.name
146
+ end
147
+ end
148
+
132
149
  def sections_order_cleanup(x)
133
150
  s = x.at("//sections")
134
151
  make_preface(x, s)
@@ -40,6 +40,12 @@ module Asciidoctor
40
40
  super
41
41
  basebackend "html"
42
42
  outfilesuffix ".xml"
43
+ @libdir = File.dirname(__FILE__)
44
+ end
45
+
46
+ # path to isodoc assets in child gems
47
+ def html_doc_path(file)
48
+ File.join(@libdir, File.join("../../isodoc/html", file))
43
49
  end
44
50
 
45
51
  alias_method :embedded, :content
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Standoc
3
- VERSION = "0.0.1".freeze
3
+ VERSION = "0.0.2".freeze
4
4
  end
5
5
  end
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_dependency "asciidoctor", "~> 1.5.7"
30
30
  spec.add_dependency "ruby-jing"
31
- spec.add_dependency "isodoc", ">= 0.8"
31
+ spec.add_dependency "isodoc", "~> 0.8.8"
32
32
  spec.add_dependency "iev", "~> 0.2.0"
33
33
  spec.add_dependency "relaton", "~> 0.1.3"
34
34
 
@@ -58,18 +58,13 @@ RSpec.describe Asciidoctor::Standoc do
58
58
  :docsubstage: 20
59
59
  :iteration: 3
60
60
  :language: en
61
- :title-intro-en: Introduction
62
- :title-main-en: Main Title -- Title
63
- :title-part-en: Title Part
64
- :title-intro-fr: Introduction Française
65
- :title-main-fr: Titre Principal
66
- :title-part-fr: Part du Titre
61
+ :title: Main Title -- Title
67
62
  :library-ics: 1,2,3
68
63
  INPUT
69
64
  <?xml version="1.0" encoding="UTF-8"?>
70
65
  <standard-document xmlns="http://riboseinc.com/isoxml">
71
66
  <bibdata type="article">
72
-
67
+ <title language="en" format="text/plain">Main Title — Title</title>
73
68
  <docidentifier>
74
69
  <project-number part="1"> 1000</project-number>
75
70
  </docidentifier>
@@ -101,7 +96,6 @@ RSpec.describe Asciidoctor::Standoc do
101
96
  OUTPUT
102
97
  end
103
98
 
104
-
105
99
  it "processes complex metadata" do
106
100
  expect(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)).to be_equivalent_to <<~'OUTPUT'
107
101
  = Document title
@@ -202,40 +196,13 @@ RSpec.describe Asciidoctor::Standoc do
202
196
  Author
203
197
  :docfile: test.adoc
204
198
  :novalid:
199
+ :scripts: spec/assets/scripts.html
205
200
  INPUT
206
201
  html = File.read("test.html", encoding: "utf-8")
207
202
  expect(html).to match(%r{<script>})
208
203
  end
209
204
 
210
- it "uses default fonts" do
211
- system "rm -f test.html"
212
- Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
213
- = Document title
214
- Author
215
- :docfile: test.adoc
216
- :novalid:
217
- INPUT
218
- html = File.read("test.html", encoding: "utf-8")
219
- expect(html).to match(%r[\.Sourcecode[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
220
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Cambria", serif;]m)
221
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Cambria", serif;]m)
222
- end
223
-
224
- it "uses default fonts for alt doc" do
225
- system "rm -f test_alt.html"
226
- Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
227
- = Document title
228
- Author
229
- :docfile: test.adoc
230
- :novalid:
231
- INPUT
232
- html = File.read("test_alt.html", encoding: "utf-8")
233
- expect(html).to match(%r[\.Sourcecode[^{]+\{[^{]+font-family: "Space Mono", monospace;]m)
234
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "Lato", sans-serif;]m)
235
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "Lato", sans-serif;]m)
236
- end
237
-
238
- it "uses Chinese fonts" do
205
+ it "uses specified fonts and assets in HTML" do
239
206
  system "rm -f test.html"
240
207
  Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
241
208
  = Document title
@@ -243,15 +210,25 @@ RSpec.describe Asciidoctor::Standoc do
243
210
  :docfile: test.adoc
244
211
  :novalid:
245
212
  :script: Hans
213
+ :body-font: Zapf Chancery
214
+ :header-font: Comic Sans
215
+ :monospace-font: Andale Mono
216
+ :htmlstylesheet: spec/assets/html.css
217
+ :htmlcoverpage: spec/assets/htmlcover.html
218
+ :htmlintropage: spec/assets/htmlintro.html
219
+ :scripts: spec/assets/scripts.html
246
220
  INPUT
247
221
  html = File.read("test.html", encoding: "utf-8")
248
- expect(html).to match(%r[\.Sourcecode[^{]+\{[^{]+font-family: "Courier New", monospace;]m)
249
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: "SimSun", serif;]m)
250
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: "SimHei", sans-serif;]m)
222
+ expect(html).to match(%r[pre[^{]+\{[^{]+font-family: Andale Mono;]m)
223
+ expect(html).to match(%r[p[^{]+\{[^{]+font-family: Zapf Chancery;]m)
224
+ expect(html).to match(%r[h1[^{]+\{[^{]+font-family: Comic Sans;]m)
225
+ expect(html).to match(%r[an empty html cover page])
226
+ expect(html).to match(%r[an empty html intro page])
227
+ expect(html).to match(%r[This is > a script])
251
228
  end
252
229
 
253
- it "uses specified fonts" do
254
- system "rm -f test.html"
230
+ it "uses specified fonts and assets in Word" do
231
+ system "rm -f test.doc"
255
232
  Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
256
233
  = Document title
257
234
  Author
@@ -261,11 +238,28 @@ RSpec.describe Asciidoctor::Standoc do
261
238
  :body-font: Zapf Chancery
262
239
  :header-font: Comic Sans
263
240
  :monospace-font: Andale Mono
241
+ :wordstylesheet: spec/assets/word.css
242
+ :wordcoverpage: spec/assets/wordcover.html
243
+ :wordintropage: spec/assets/wordintro.html
244
+ :header: spec/assets/header.html
264
245
  INPUT
265
- html = File.read("test.html", encoding: "utf-8")
266
- expect(html).to match(%r[\.Sourcecode[^{]+\{[^{]+font-family: Andale Mono;]m)
267
- expect(html).to match(%r[blockquote[^{]+\{[^{]+font-family: Zapf Chancery;]m)
268
- expect(html).to match(%r[\.h2Annex[^{]+\{[^{]+font-family: Comic Sans;]m)
246
+ html = File.read("test.doc", encoding: "utf-8")
247
+ expect(html).to match(%r[pre[^{]+\{[^{]+font-family: Andale Mono;]m)
248
+ expect(html).to match(%r[p[^{]+\{[^{]+font-family: Zapf Chancery;]m)
249
+ expect(html).to match(%r[h1[^{]+\{[^{]+font-family: Comic Sans;]m)
250
+ expect(html).to match(%r[an empty word cover page])
251
+ expect(html).to match(%r[an empty word intro page])
252
+ expect(html).to match(%r[Content-Location: file:///C:/Doc/test_files/header.html
253
+ Content-Transfer-Encoding: base64
254
+ Content-Type: text/html charset="utf-8"
255
+
256
+ Ci8qIGFuIGVtcHR5IGhlYWRlciAqLwoKU1RBUlQgRE9DIElEOiAgOiBFTkQgRE9DIElECgpGSUxF
257
+ TkFNRTogdGVzdAoK
258
+ ])
269
259
  end
270
260
 
261
+
271
262
  end
263
+
264
+
265
+
@@ -131,14 +131,27 @@ RSpec.describe Asciidoctor::Standoc do
131
131
  it "processes notes" do
132
132
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
133
133
  #{ASCIIDOC_BLANK_HDR}
134
+ NOTE: This is a note
135
+
136
+ == Clause 1
137
+
138
+
134
139
  NOTE: This is a note
135
140
  INPUT
136
141
  #{BLANK_HDR}
137
- <sections>
142
+ <preface><foreword obligation="informative">
143
+ <title>Foreword</title>
138
144
  <note id="_">
139
145
  <p id="_">This is a note</p>
140
146
  </note>
141
- </sections>
147
+ </foreword></preface><sections>
148
+ <clause id="_" inline-header="false" obligation="normative">
149
+ <title>Clause 1</title>
150
+ <note id="_">
151
+ <p id="_">This is a note</p>
152
+ </note>
153
+ </clause></sections>
154
+
142
155
  </standard-document>
143
156
 
144
157
  OUTPUT
@@ -2,6 +2,14 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe Asciidoctor::Standoc do
4
4
 
5
+ it "warns that video is a skipped node" do
6
+ expect { Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) }.to output(/converter missing for video node/).to_stderr
7
+ #{VALIDATING_BLANK_HDR}
8
+
9
+ video::video_file.mp4[]
10
+ INPUT
11
+ end
12
+
5
13
  it "warns that figure does not have title" do
6
14
  expect { Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) }.to output(/Figure should have title/).to_stderr
7
15
  #{VALIDATING_BLANK_HDR}
data/spec/assets/html.css CHANGED
@@ -1,2 +1,13 @@
1
1
 
2
- /* another empty stylesheet */
2
+ p {
3
+ font-family: $bodyfont;
4
+ }
5
+
6
+ h1 {
7
+ font-family: $headerfont;
8
+ }
9
+
10
+ pre {
11
+ font-family: $monospacefont;
12
+ }
13
+
data/spec/assets/word.css CHANGED
@@ -1,2 +1,13 @@
1
1
 
2
- /* one empty stylesheet */
2
+ p {
3
+ font-family: $bodyfont;
4
+ }
5
+
6
+ h1 {
7
+ font-family: $headerfont;
8
+ }
9
+
10
+ pre {
11
+ font-family: $monospacefont;
12
+ }
13
+
@@ -67,4 +67,37 @@ RSpec.describe Metanorma::Standoc::Processor do
67
67
  OUTPUT
68
68
  end
69
69
 
70
+ it "generates HTML from IsoDoc XML" do
71
+ system "rm -f test.doc"
72
+ processor.output(<<~"INPUT", "test.doc", :doc)
73
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
74
+ <sections>
75
+ <terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
76
+ <term id="J">
77
+ <preferred>Term2</preferred>
78
+ </term>
79
+ </terms>
80
+ </sections>
81
+ </iso-standard>
82
+ INPUT
83
+ expect(File.read("test.doc", encoding: "utf-8")).to match(/Electropedia/)
84
+ end
85
+
86
+ it "generates XML from IsoDoc XML" do
87
+ system "rm -f test.xml"
88
+ processor.output(<<~"INPUT", "test.xml", :xml)
89
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
90
+ <sections>
91
+ <terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
92
+ <term id="J">
93
+ <preferred>Term2</preferred>
94
+ </term>
95
+ </terms>
96
+ </sections>
97
+ </iso-standard>
98
+ INPUT
99
+ expect(File.exist?("test.xml")).to be true
100
+
101
+ end
102
+
70
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-standoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-12 00:00:00.000000000 Z
11
+ date: 2018-08-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: isodoc
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.8'
47
+ version: 0.8.8
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.8'
54
+ version: 0.8.8
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: iev
57
57
  requirement: !ruby/object:Gem::Requirement