isodoc 0.9.10 → 0.9.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/lib/isodoc/function/i18n.rb +18 -15
- data/lib/isodoc/function/inline.rb +3 -2
- data/lib/isodoc/function/to_word_html.rb +8 -0
- data/lib/isodoc/html_function/html.rb +15 -0
- data/lib/isodoc/metadata.rb +15 -1
- data/lib/isodoc/pdf_convert.rb +6 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +6 -0
- data/spec/isodoc/inline_spec.rb +2 -2
- data/spec/isodoc/metadata_spec.rb +7 -2
- data/spec/isodoc/xref_spec.rb +51 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '00160137956d6bf94a5ae197a7cb4b88ad74c0a4c60b421cb37bbe23abe8cd31'
|
4
|
+
data.tar.gz: aaeb75e3aecc1cf19729b046332dcab2ca732357f08c22f2631eddf65ec5bf5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2ebe7192825e49355716ec580fc6da530d48475a6da2a9d4896c0a7d36927967b02f0f1f1a1cc198d91f0f4a1839d257bdc1b9d6e4d0b73ecc288ee08db3709
|
7
|
+
data.tar.gz: 01e04c0e9c669c5d6746fc5618f517bda045258202e234550223d37180d4db5d2dea873df2e651733f64cbf942d7963b5d4634a236f7e21949ee4467c536dcf1
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
isodoc (0.9.
|
4
|
+
isodoc (0.9.11)
|
5
5
|
asciimath
|
6
6
|
html2doc (~> 0.8.6)
|
7
7
|
htmlentities (~> 4.3.4)
|
@@ -61,7 +61,7 @@ GEM
|
|
61
61
|
rb-inotify (~> 0.9, >= 0.9.7)
|
62
62
|
ruby_dep (~> 1.2)
|
63
63
|
lumberjack (1.0.13)
|
64
|
-
metanorma (0.3.
|
64
|
+
metanorma (0.3.2)
|
65
65
|
method_source (0.9.2)
|
66
66
|
mime-types (3.2.2)
|
67
67
|
mime-types-data (~> 3.2015)
|
data/lib/isodoc/function/i18n.rb
CHANGED
@@ -3,24 +3,27 @@ require "yaml"
|
|
3
3
|
# TODO: Cleanup and generalize
|
4
4
|
module IsoDoc::Function
|
5
5
|
module I18n
|
6
|
+
def load_yaml(lang, script)
|
7
|
+
if @i18nyaml then YAML.load_file(@i18nyaml)
|
8
|
+
elsif lang == "en"
|
9
|
+
YAML.load_file(File.join(File.dirname(__FILE__),
|
10
|
+
"../../isodoc-yaml/i18n-en.yaml"))
|
11
|
+
elsif lang == "fr"
|
12
|
+
YAML.load_file(File.join(File.dirname(__FILE__),
|
13
|
+
"../../isodoc-yaml/i18n-fr.yaml"))
|
14
|
+
elsif lang == "zh" && script == "Hans"
|
15
|
+
YAML.load_file(File.join(File.dirname(__FILE__),
|
16
|
+
"../../isodoc-yaml/i18n-zh-Hans.yaml"))
|
17
|
+
else
|
18
|
+
YAML.load_file(File.join(File.dirname(__FILE__),
|
19
|
+
"../../isodoc-yaml/i18n-en.yaml"))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
6
23
|
def i18n_init(lang, script)
|
7
24
|
@lang = lang
|
8
25
|
@script = script
|
9
|
-
y =
|
10
|
-
YAML.load_file(@i18nyaml)
|
11
|
-
elsif lang == "en"
|
12
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
13
|
-
"../../isodoc-yaml/i18n-en.yaml"))
|
14
|
-
elsif lang == "fr"
|
15
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
16
|
-
"../../isodoc-yaml/i18n-fr.yaml"))
|
17
|
-
elsif lang == "zh" && script == "Hans"
|
18
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
19
|
-
"../../isodoc-yaml/i18n-zh-Hans.yaml"))
|
20
|
-
else
|
21
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
22
|
-
"../../isodoc-yaml/i18n-en.yaml"))
|
23
|
-
end
|
26
|
+
y = load_yaml(lang, script)
|
24
27
|
@term_def_boilerplate = y["term_def_boilerplate"]
|
25
28
|
@scope_lbl = y["scope"]
|
26
29
|
@symbols_lbl = y["symbols"]
|
@@ -50,8 +50,9 @@ module IsoDoc::Function
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def xref_parse(node, out)
|
53
|
-
|
54
|
-
|
53
|
+
target = /#/.match(node["target"]) ? node["target"].sub(/#/, ".html#") :
|
54
|
+
"##{node["target"]}"
|
55
|
+
out.a(**{ "href": target }) { |l| l << get_linkend(node) }
|
55
56
|
end
|
56
57
|
|
57
58
|
def eref_localities(refs, target)
|
@@ -93,6 +93,7 @@ module IsoDoc::Function
|
|
93
93
|
@meta.bibdate isoxml, out
|
94
94
|
@meta.relations isoxml, out
|
95
95
|
@meta.version isoxml, out
|
96
|
+
@meta.url isoxml, out
|
96
97
|
@meta.get
|
97
98
|
end
|
98
99
|
|
@@ -128,6 +129,12 @@ module IsoDoc::Function
|
|
128
129
|
out.a **attr_code(id: node["id"])
|
129
130
|
end
|
130
131
|
|
132
|
+
def keyword_parse(node, out)
|
133
|
+
out.span **{ class: "keyword" } do |s|
|
134
|
+
s << node.inner_html
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
131
138
|
def parse(node, out)
|
132
139
|
if node.text?
|
133
140
|
text_parse(node, out)
|
@@ -139,6 +146,7 @@ module IsoDoc::Function
|
|
139
146
|
when "sub" then out.sub { |e| e << node.inner_html }
|
140
147
|
when "tt" then out.tt { |e| e << node.inner_html }
|
141
148
|
when "strike" then out.s { |e| e << node.inner_html }
|
149
|
+
when "keyword" then keyword_parse(node, out)
|
142
150
|
when "smallcap" then smallcap_parse(node, out)
|
143
151
|
when "br" then out.br
|
144
152
|
when "hr" then out.hr
|
@@ -221,7 +221,22 @@ module IsoDoc::HtmlFunction
|
|
221
221
|
i["width"], i["height"] = Html2Doc.image_resize(i, local_filename, @maxheight, @maxwidth)
|
222
222
|
end
|
223
223
|
|
224
|
+
def html_toc_entry(level, header)
|
225
|
+
%(<li class="h#{level}"><a href="##{header['id']}">#{header_strip(header)}</a></li>)
|
226
|
+
end
|
227
|
+
|
224
228
|
def html_toc(docxml)
|
229
|
+
=begin
|
230
|
+
idx = docxml.at("//div[@id = 'toc']") or return docxml
|
231
|
+
toc = "<ul>"
|
232
|
+
tocidx = 0
|
233
|
+
docxml.xpath("//main//h1 | //main//h2[not(@class = 'TermNum')]").each do |h|
|
234
|
+
h["id"] ||= "toc#{tocidx}"
|
235
|
+
toc += html_toc_entry(h.name == "h1" ? 1 : 2, h)
|
236
|
+
tocidx += 1
|
237
|
+
end
|
238
|
+
idx.children = "#{toc}</ul>"
|
239
|
+
=end
|
225
240
|
docxml
|
226
241
|
end
|
227
242
|
end
|
data/lib/isodoc/metadata.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
class Metadata
|
3
3
|
DATETYPES = %w{published accessed created implemented obsoleted confirmed
|
4
|
-
updated issued}.freeze
|
4
|
+
updated issued received}.freeze
|
5
5
|
|
6
6
|
def ns(xpath)
|
7
7
|
Common::ns(xpath)
|
@@ -113,11 +113,17 @@ module IsoDoc
|
|
113
113
|
|
114
114
|
def docstatus(isoxml, _out)
|
115
115
|
docstatus = isoxml.at(ns("//bibdata/status"))
|
116
|
+
set(:unpublished, true)
|
116
117
|
if docstatus
|
117
118
|
set(:status, status_print(docstatus.text))
|
119
|
+
set(:unpublished, unpublished(docstatus.text))
|
118
120
|
end
|
119
121
|
end
|
120
122
|
|
123
|
+
def unpublished(status)
|
124
|
+
status.downcase == "published"
|
125
|
+
end
|
126
|
+
|
121
127
|
def status_print(status)
|
122
128
|
status.split(/-/).map{ |w| w.capitalize }.join(" ")
|
123
129
|
end
|
@@ -161,5 +167,13 @@ module IsoDoc
|
|
161
167
|
set(:obsoletes, id.text) if id
|
162
168
|
set(:obsoletes_part, locality.text) if locality
|
163
169
|
end
|
170
|
+
|
171
|
+
def url(xml, _out)
|
172
|
+
a = xml.at(ns("//bibdata/source[not(@type)]")) and set(:url, a.text)
|
173
|
+
a = xml.at(ns("//bibdata/source[@type = 'html']")) and set(:html, a.text)
|
174
|
+
a = xml.at(ns("//bibdata/source[@type = 'xml']")) and set(:xml, a.text)
|
175
|
+
a = xml.at(ns("//bibdata/source[@type = 'pdf']")) and set(:pdf, a.text)
|
176
|
+
a = xml.at(ns("//bibdata/source[@type = 'doc']")) and set(:doc, a.text)
|
177
|
+
end
|
164
178
|
end
|
165
179
|
end
|
data/lib/isodoc/pdf_convert.rb
CHANGED
@@ -30,5 +30,11 @@ module IsoDoc
|
|
30
30
|
::Metanorma::Output::Pdf.new.convert(filename + ".html", outname_html + ".pdf")
|
31
31
|
FileUtils.rm_r ["#{filename}.html", tmpimagedir]
|
32
32
|
end
|
33
|
+
|
34
|
+
def xref_parse(node, out)
|
35
|
+
target = /#/.match(node["target"]) ? node["target"].sub(/#/, ".pdf#") :
|
36
|
+
"##{node["target"]}"
|
37
|
+
out.a(**{ "href": target }) { |l| l << get_linkend(node) }
|
38
|
+
end
|
33
39
|
end
|
34
40
|
end
|
data/lib/isodoc/version.rb
CHANGED
@@ -202,5 +202,11 @@ module IsoDoc::WordFunction
|
|
202
202
|
out.img **attr_code(attrs)
|
203
203
|
image_title_parse(out, caption)
|
204
204
|
end
|
205
|
+
|
206
|
+
def xref_parse(node, out)
|
207
|
+
target = /#/.match(node["target"]) ? node["target"].sub(/#/, ".doc#") :
|
208
|
+
"##{node["target"]}"
|
209
|
+
out.a(**{ "href": target }) { |l| l << get_linkend(node) }
|
210
|
+
end
|
205
211
|
end
|
206
212
|
end
|
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -7,7 +7,7 @@ RSpec.describe IsoDoc do
|
|
7
7
|
<preface><foreword>
|
8
8
|
<p>
|
9
9
|
<em>A</em> <strong>B</strong> <sup>C</sup> <sub>D</sub> <tt>E</tt>
|
10
|
-
<strike>F</strike> <smallcap>G</smallcap> <br/> <hr/>
|
10
|
+
<strike>F</strike> <smallcap>G</smallcap> <keyword>I</keyword> <br/> <hr/>
|
11
11
|
<bookmark id="H"/> <pagebreak/>
|
12
12
|
</p>
|
13
13
|
</foreword></preface>
|
@@ -20,7 +20,7 @@ RSpec.describe IsoDoc do
|
|
20
20
|
<h1 class="ForewordTitle">Foreword</h1>
|
21
21
|
<p>
|
22
22
|
<i>A</i> <b>B</b> <sup>C</sup> <sub>D</sub> <tt>E</tt>
|
23
|
-
<s>F</s> <span style="font-variant:small-caps;">G</span> <br/> <hr/>
|
23
|
+
<s>F</s> <span style="font-variant:small-caps;">G</span> <span class="keyword">I</span> <br/> <hr/>
|
24
24
|
<a id="H"/> <br/>
|
25
25
|
</p>
|
26
26
|
</div>
|
@@ -12,6 +12,11 @@ RSpec.describe IsoDoc do
|
|
12
12
|
<bibdata type="international-standard">
|
13
13
|
<title>The Incredible Mr Ripley</title>
|
14
14
|
<title language="en">Cereals and pulses</title>
|
15
|
+
<source>URL A</source>
|
16
|
+
<source type="html">URL B</source>
|
17
|
+
<source type="xml">URL C</source>
|
18
|
+
<source type="pdf">URL D</source>
|
19
|
+
<source type="doc">URL E</source>
|
15
20
|
<docidentifier>17301-1</docidentifier>
|
16
21
|
<docnumber>17301</docnumber>
|
17
22
|
<date type="published"><on>2011</on></date>
|
@@ -55,7 +60,7 @@ RSpec.describe IsoDoc do
|
|
55
60
|
</version>
|
56
61
|
</iso-standard>
|
57
62
|
INPUT
|
58
|
-
{:accesseddate=>"2012", :activateddate=>"2013", :agency=>"ISO", :confirmeddate=>"XXX", :createddate=>"2010–2011", :docnumber=>"17301-1", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"0.4", :draftinfo=>" (draft 0.4, 2016-05-01)", :editorialgroup=>["TC 34", "SC 4", "WG 3"], :ics=>"XXX", :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"2014", :obsoletes=>nil, :obsoletes_part=>nil, :publisheddate=>"2011", :revdate=>"2016-05-01", :sc=>"SC 4", :secretariat=>"GB", :status=>"Committee draft", :tc=>"TC 34", :updateddate=>"XXX", :wg=>"WG 3"}
|
63
|
+
{:accesseddate=>"2012", :activateddate=>"2013", :agency=>"ISO", :confirmeddate=>"XXX", :createddate=>"2010–2011", :doc=>"URL E", :docnumber=>"17301-1", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"0.4", :draftinfo=>" (draft 0.4, 2016-05-01)", :editorialgroup=>["TC 34", "SC 4", "WG 3"], :html=>"URL B", :ics=>"XXX", :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"2014", :obsoletes=>nil, :obsoletes_part=>nil, :pdf=>"URL D", :publisheddate=>"2011", :receiveddate=>"XXX", :revdate=>"2016-05-01", :sc=>"SC 4", :secretariat=>"GB", :status=>"Committee draft", :tc=>"TC 34", :unpublished=>false, :updateddate=>"XXX", :url=>"URL A", :wg=>"WG 3", :xml=>"URL C"}
|
59
64
|
OUTPUT
|
60
65
|
end
|
61
66
|
|
@@ -118,7 +123,7 @@ OUTPUT
|
|
118
123
|
</version>
|
119
124
|
</iso-standard>
|
120
125
|
INPUT
|
121
|
-
{:accesseddate=>"XXX", :agency=>"ISO/IEC", :confirmeddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"12", :draftinfo=>" (draft 12, 2016-05-01)", :editorialgroup=>["ABC 34", "DEF 4", "GHI 3"], :ics=>"1.2.3, 1.2.3", :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :obsoletes=>"IEC 8121", :obsoletes_part=>"3.1", :publisheddate=>"XXX", :revdate=>"2016-05-01", :sc=>"DEF 4", :secretariat=>"XXXX", :status=>"Published", :tc=>"ABC 34", :updateddate=>"XXX", :wg=>"GHI 3"}
|
126
|
+
{:accesseddate=>"XXX", :agency=>"ISO/IEC", :confirmeddate=>"XXX", :createddate=>"XXX", :docnumber=>"17301-1-3", :doctitle=>"Cereals and pulses", :doctype=>"International Standard", :docyear=>"2016", :draft=>"12", :draftinfo=>" (draft 12, 2016-05-01)", :editorialgroup=>["ABC 34", "DEF 4", "GHI 3"], :ics=>"1.2.3, 1.2.3", :implementeddate=>"XXX", :issueddate=>"XXX", :obsoleteddate=>"XXX", :obsoletes=>"IEC 8121", :obsoletes_part=>"3.1", :publisheddate=>"XXX", :receiveddate=>"XXX", :revdate=>"2016-05-01", :sc=>"DEF 4", :secretariat=>"XXXX", :status=>"Published", :tc=>"ABC 34", :unpublished=>true, :updateddate=>"XXX", :wg=>"GHI 3"}
|
122
127
|
OUTPUT
|
123
128
|
end
|
124
129
|
|
data/spec/isodoc/xref_spec.rb
CHANGED
@@ -1,6 +1,57 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
RSpec.describe IsoDoc do
|
4
|
+
it "cross-references external documents in HTML" do
|
5
|
+
expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
|
6
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
7
|
+
<preface>
|
8
|
+
<foreword>
|
9
|
+
<p>
|
10
|
+
<xref target="a#b"/>
|
11
|
+
</p>
|
12
|
+
</foreword>
|
13
|
+
</preface>
|
14
|
+
</iso-standard
|
15
|
+
INPUT
|
16
|
+
#{HTML_HDR}
|
17
|
+
<br/>
|
18
|
+
<div>
|
19
|
+
<h1 class="ForewordTitle">Foreword</h1>
|
20
|
+
<p>
|
21
|
+
<a href="a.html#b">a#b</a>
|
22
|
+
</p>
|
23
|
+
</div>
|
24
|
+
<p class="zzSTDTitle1"/>
|
25
|
+
</div>
|
26
|
+
</body>
|
27
|
+
</html>
|
28
|
+
OUTPUT
|
29
|
+
end
|
30
|
+
|
31
|
+
it "cross-references external documents in DOC" do
|
32
|
+
expect(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true).sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').sub(%r{</div>.*$}m, "</div>")).to be_equivalent_to <<~"OUTPUT"
|
33
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
34
|
+
<preface>
|
35
|
+
<foreword>
|
36
|
+
<p>
|
37
|
+
<xref target="a#b"/>
|
38
|
+
</p>
|
39
|
+
</foreword>
|
40
|
+
</preface>
|
41
|
+
</iso-standard
|
42
|
+
INPUT
|
43
|
+
<div class="WordSection2">
|
44
|
+
<br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
|
45
|
+
<div>
|
46
|
+
<h1 class="ForewordTitle">Foreword</h1>
|
47
|
+
<p>
|
48
|
+
<a href="a.doc#b">a#b</a>
|
49
|
+
</p>
|
50
|
+
</div>
|
51
|
+
OUTPUT
|
52
|
+
end
|
53
|
+
|
54
|
+
|
4
55
|
it "cross-references notes" do
|
5
56
|
expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)). to be_equivalent_to <<~"OUTPUT"
|
6
57
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isodoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.11
|
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-11-
|
11
|
+
date: 2018-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciimath
|