metanorma-nist 1.0.10 → 1.1.0

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: fdfccf7f80188c5fdb7b176e3f2e1ec2533218d878ffc2e8798a4ad3b9cd70f7
4
- data.tar.gz: d98180fcdd728e854e47df4f8ca07503c77de570ac3c7f41ab21c6ae0b516e87
3
+ metadata.gz: '05109623d4ab89934b15717692765c6c29015007695efad9ea8258b81d1e956c'
4
+ data.tar.gz: f848bb3f40e50382a2bfeca5f2bd89a78d06d7808bbb3aa4e01d3ce88a8cb87e
5
5
  SHA512:
6
- metadata.gz: 25231b4da1777b011ef5ac9eb9aa2c9691227882ca37fa59cc034a4bbf5a22b077bb59b512e1673488d7a497b36c304d508e8e65b45fd0deb5b3aa069304a9bc
7
- data.tar.gz: ba4697d24bb857a5468dd1dc02e4b0bf83cb8ea296c6fc08b205c855d8b9b4dd000a08bcba3f7871ce06ab5919dfeb758148f862464fbbc78ed6124b6d26aa7b
6
+ metadata.gz: 5b3e0c43ab7a515b8dcba5a6c988254d361934a87091dca35a9134b3d51833c463126695bc2ebee8a3c1430b309210fd08adc8efec6e1ddce727dd2a9c96ad28
7
+ data.tar.gz: edc0d9b4b5aa9b8fe2c98a7369cfec29a44a93a3b4808dfb95b8eb618aa6ff7ada7e0110190bb84cf35355fbcb4497c84827ddbd0eb540aeba2a3389525fd20d
@@ -97,21 +97,12 @@ module Asciidoctor
97
97
  super
98
98
  end
99
99
 
100
- def document(node)
101
- init(node)
102
- ret1 = makexml(node)
103
- ret = ret1.to_xml(indent: 2)
104
- unless node.attr("nodoc") || !node.attr("docfile")
105
- filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
106
- gsub(%r{^.*/}, "")
107
- File.open(filename, "w:UTF-8") { |f| f.write(ret) }
108
- html_converter(node).convert filename unless node.attr("nodoc")
109
- word_converter(node).convert filename unless node.attr("nodoc")
110
- pdf_converter(node)&.convert filename unless node.attr("nodoc")
111
- end
112
- @log.write(@localdir + @filename + ".err") unless @novalid
113
- @files_to_delete.each { |f| FileUtils.rm f }
114
- ret
100
+ def outputs(node, ret)
101
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
102
+ presentation_xml_converter(node).convert(@filename + ".xml")
103
+ html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
104
+ doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
105
+ pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
115
106
  end
116
107
 
117
108
  def clause_parse(attrs, xml, node)
@@ -170,8 +161,8 @@ module Asciidoctor
170
161
  xml.annex **attr_code(attrs1) do |xml_section|
171
162
  xml_section.title { |t| t << "Bibliography" }
172
163
  @biblio = true
173
- xml.references **attr_code(attrs) do |xml_section|
174
- xml_section << node.content
164
+ xml.references **attr_code(attrs.merge(normative: true)) do |r|
165
+ r << node.content
175
166
  end
176
167
  end
177
168
  @biblio = false
@@ -203,11 +194,15 @@ module Asciidoctor
203
194
  super
204
195
  end
205
196
 
197
+ def presentation_xml_converter(node)
198
+ IsoDoc::NIST::PresentationXMLConvert.new(html_extract_attributes(node))
199
+ end
200
+
206
201
  def html_converter(node)
207
202
  IsoDoc::NIST::HtmlConvert.new(html_extract_attributes(node))
208
203
  end
209
204
 
210
- def word_converter(node)
205
+ def doc_converter(node)
211
206
  IsoDoc::NIST::WordConvert.new(doc_extract_attributes(node))
212
207
  end
213
208
 
@@ -1,6 +1,6 @@
1
1
  require "isodoc"
2
2
  require_relative "metadata"
3
- require_relative "xrefs"
3
+ require_relative "xref"
4
4
  require_relative "refs"
5
5
  require_relative "section"
6
6
  require "fileutils"
@@ -8,6 +8,14 @@ require "fileutils"
8
8
  module IsoDoc
9
9
  module NIST
10
10
  module BaseConvert
11
+ def metadata_init(lang, script, labels)
12
+ @meta = Metadata.new(lang, script, labels)
13
+ end
14
+
15
+ def xref_init(lang, script, klass, labels, options)
16
+ @xrefs = Xref.new(lang, script, klass, labels, options)
17
+ end
18
+
11
19
  def keywords(_docxml, out)
12
20
  kw = @meta.get[:keywords]
13
21
  kw.empty? and return
@@ -126,8 +134,9 @@ module IsoDoc
126
134
  end
127
135
  end
128
136
 
129
- MIDDLE_CLAUSE = "//clause[parent::sections] | "\
130
- "//terms[parent::sections]".freeze
137
+ def middle_clause
138
+ "//clause[parent::sections] | //terms[parent::sections]"
139
+ end
131
140
 
132
141
  def middle(isoxml, out)
133
142
  middle_admonitions(isoxml, out)
@@ -219,6 +228,19 @@ module IsoDoc
219
228
  out << " &mdash; "
220
229
  node.at(ns("./p")).children.each { |n| parse(n, out) }
221
230
  end
231
+
232
+ def annex_name(annex, name, div)
233
+ div.h1 **{ class: "Annex" } do |t|
234
+ t << "#{@xrefs.anchor(annex['id'], :label)} &mdash; "
235
+ t.b do |b|
236
+ if @bibliographycount == 1 && annex.at(ns("./references"))
237
+ b << "References"
238
+ else
239
+ name&.children&.each { |c2| parse(c2, b) }
240
+ end
241
+ end
242
+ end
243
+ end
222
244
  end
223
245
  end
224
246
  end
@@ -37,10 +37,6 @@ module IsoDoc
37
37
  }
38
38
  end
39
39
 
40
- def metadata_init(lang, script, labels)
41
- @meta = Metadata.new(lang, script, labels)
42
- end
43
-
44
40
  def googlefonts
45
41
  <<~HEAD.freeze
46
42
  <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,600i" rel="stylesheet">
@@ -7,26 +7,15 @@ module IsoDoc
7
7
  module NIST
8
8
  # A {Converter} implementation that generates PDF HTML output, and a
9
9
  # document schema encapsulation of the document for validation
10
- class PdfConvert < IsoDoc::PdfConvert
10
+ class PdfConvert < IsoDoc::XslfoPdfConvert
11
11
  def initialize(options)
12
12
  @libdir = File.dirname(__FILE__)
13
13
  super
14
14
  end
15
15
 
16
- def convert(filename, file = nil, debug = false)
17
- file = File.read(filename, encoding: "utf-8") if file.nil?
18
- docxml, outname_html, dir = convert_init(file, filename, debug)
19
- @series = docxml&.at(ns("//bibdata/series/abbreviation"))&.text
20
- /\.xml$/.match(filename) or
21
- filename = Tempfile.open([outname_html, ".xml"], encoding: "utf-8") do |f|
22
- f.write file
23
- f.path
24
- end
25
- FileUtils.rm_rf dir
26
- ::Metanorma::Output::XslfoPdf.new.convert(
27
- filename, outname_html + ".pdf",
28
- File.join(@libdir, @series == "NIST CSWP" ?
29
- "nist.cswp.xsl" : "nist.sp.xsl"))
16
+ def pdf_stylesheet(docxml)
17
+ series = docxml&.at(ns("//bibdata/series/abbreviation"))&.text
18
+ series == "NIST CSWP" ? "nist.cswp.xsl" : "nist.sp.xsl"
30
19
  end
31
20
  end
32
21
  end
@@ -0,0 +1,10 @@
1
+ require_relative "base_convert"
2
+ require "isodoc"
3
+
4
+ module IsoDoc
5
+ module NIST
6
+ class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
7
+ end
8
+ end
9
+ end
10
+
@@ -62,7 +62,7 @@ module IsoDoc
62
62
  title = node&.at(ns("./title"))&.text || ""
63
63
  out.div do |div|
64
64
  unless suppress_biblio_title(node)
65
- anchor(node['id'], :label, false) and
65
+ @xrefs.anchor(node['id'], :label, false) and
66
66
  clause_parse_title(node, div, node.at(ns("./title")), out) or
67
67
  div.h2 title, **{ class: "Section3" }
68
68
  end
@@ -25,7 +25,7 @@ module IsoDoc
25
25
  def preface1(c, title, patent, out)
26
26
  out.div **attr_code(id: c["id"]) do |s|
27
27
  page_break(s) if patent
28
- clause_name(anchor(c['id'], :label), title, s,
28
+ clause_name(@xrefs.anchor(c['id'], :label), title, s,
29
29
  class: (c.name == "executivesummary") ? "NormalTitle" :
30
30
  "IntroTitle")
31
31
  c.elements.reject { |c1| c1.name == "title" }.each do |c1|
@@ -49,10 +49,6 @@ module IsoDoc
49
49
  olstyle: "l2" }
50
50
  end
51
51
 
52
- def metadata_init(lang, script, labels)
53
- @meta = Metadata.new(lang, script, labels)
54
- end
55
-
56
52
  def make_body(xml, docxml)
57
53
  body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72" }
58
54
  xml.body **body_attr do |body|
@@ -4,7 +4,7 @@ require "fileutils"
4
4
 
5
5
  module IsoDoc
6
6
  module NIST
7
- module BaseConvert
7
+ class Xref < IsoDoc::Xref
8
8
  SECTIONS_XPATH =
9
9
  "//foreword | //introduction | //reviewnote | //executivesummary | //annex | "\
10
10
  "//sections/clause | //bibliography/references | //acknowledgements | "\
@@ -50,7 +50,7 @@ module IsoDoc
50
50
  end
51
51
 
52
52
  def annex_name_lbl(clause, num)
53
- l10n("<b>#{@annex_lbl} #{num}</b>")
53
+ l10n("<b>#{@labels['annex']} #{num}</b>")
54
54
  end
55
55
 
56
56
  def annex_name(annex, name, div)
@@ -3,7 +3,9 @@ require_relative "asciidoctor/nist/converter"
3
3
  require_relative "isodoc/nist/html_convert"
4
4
  require_relative "isodoc/nist/pdf_convert"
5
5
  require_relative "isodoc/nist/word_convert"
6
+ require_relative "isodoc/nist/presentation_xml_convert"
6
7
  require_relative "isodoc/nist/render"
8
+ require_relative "isodoc/nist/xref"
7
9
  require_relative "metanorma/nist/version"
8
10
 
9
11
  if defined? Metanorma
@@ -33,14 +33,16 @@ module Metanorma
33
33
  Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
34
34
  end
35
35
 
36
- def output(isodoc_node, outname, format, options={})
36
+ def output(isodoc_node, inname, outname, format, options={})
37
37
  case format
38
38
  when :html
39
- IsoDoc::NIST::HtmlConvert.new(options).convert(outname, isodoc_node)
39
+ IsoDoc::NIST::HtmlConvert.new(options).convert(inname, isodoc_node, nil, outname)
40
40
  when :doc
41
- IsoDoc::NIST::WordConvert.new(options).convert(outname, isodoc_node)
41
+ IsoDoc::NIST::WordConvert.new(options).convert(inname, isodoc_node, nil, outname)
42
42
  when :pdf
43
- IsoDoc::NIST::PdfConvert.new(options).convert(outname, isodoc_node)
43
+ IsoDoc::NIST::PdfConvert.new(options).convert(inname, isodoc_node, nil, outname)
44
+ when :presentation
45
+ IsoDoc::NIST::PresentationXMLConvert.new(options).convert(inname, isodoc_node, nil, outname)
44
46
  else
45
47
  super
46
48
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module NIST
3
- VERSION = "1.0.10"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_dependency "tzinfo-data" # we need this for windows only
32
32
 
33
33
  spec.add_dependency "metanorma-standoc", "~> 1.4.0"
34
- spec.add_dependency "isodoc", "~> 1.0.0"
34
+ spec.add_dependency "isodoc", "~> 1.1.0"
35
35
  #spec.add_dependency "relaton-nist", "~> 0.3.0"
36
36
 
37
37
  spec.add_development_dependency "byebug", "~> 9.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-nist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-19 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: htmlentities
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 1.0.0
103
+ version: 1.1.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 1.0.0
110
+ version: 1.1.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: byebug
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -298,6 +298,7 @@ files:
298
298
  - lib/isodoc/nist/nist.cswp.xsl
299
299
  - lib/isodoc/nist/nist.sp.xsl
300
300
  - lib/isodoc/nist/pdf_convert.rb
301
+ - lib/isodoc/nist/presentation_xml_convert.rb
301
302
  - lib/isodoc/nist/refs.rb
302
303
  - lib/isodoc/nist/render.rb
303
304
  - lib/isodoc/nist/render_contributors.rb
@@ -305,7 +306,7 @@ files:
305
306
  - lib/isodoc/nist/section.rb
306
307
  - lib/isodoc/nist/word_convert.rb
307
308
  - lib/isodoc/nist/word_convert_toc.rb
308
- - lib/isodoc/nist/xrefs.rb
309
+ - lib/isodoc/nist/xref.rb
309
310
  - lib/metanorma-nist.rb
310
311
  - lib/metanorma/nist.rb
311
312
  - lib/metanorma/nist/processor.rb
@@ -315,7 +316,7 @@ homepage: https://github.com/metanorma/metanorma-nist
315
316
  licenses:
316
317
  - BSD-2-Clause
317
318
  metadata: {}
318
- post_install_message:
319
+ post_install_message:
319
320
  rdoc_options: []
320
321
  require_paths:
321
322
  - lib
@@ -330,9 +331,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
331
  - !ruby/object:Gem::Version
331
332
  version: '0'
332
333
  requirements: []
333
- rubyforge_project:
334
- rubygems_version: 2.7.6
335
- signing_key:
334
+ rubygems_version: 3.0.3
335
+ signing_key:
336
336
  specification_version: 4
337
337
  summary: Metanorma NIST gem.
338
338
  test_files: []