metanorma-iso 1.3.27 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,19 +20,6 @@ module IsoDoc
20
20
  "iso.international-standard.xsl"
21
21
  end
22
22
  end
23
-
24
- def convert(filename, file = nil, debug = false)
25
- file = File.read(filename, encoding: "utf-8") if file.nil?
26
- docxml, outname_html, dir = convert_init(file, filename, debug)
27
- /\.xml$/.match(filename) or
28
- filename = Tempfile.open([outname_html, ".xml"], encoding: "utf-8") do |f|
29
- f.write file
30
- f.path
31
- end
32
- FileUtils.rm_rf dir
33
- ::Metanorma::Output::XslfoPdf.new.convert(
34
- filename, outname_html + ".pdf", File.join(@libdir, pdf_stylesheet(docxml)))
35
- end
36
23
  end
37
24
  end
38
25
  end
@@ -0,0 +1,13 @@
1
+ require_relative "base_convert"
2
+ require "isodoc"
3
+
4
+ module IsoDoc
5
+ module Iso
6
+
7
+ # A {Converter} implementation that generates HTML output, and a document
8
+ # schema encapsulation of the document for validation
9
+ #
10
+ class PresentationXMLConvert < IsoDoc::PresentationXMLConvert
11
+ end
12
+ end
13
+ end
@@ -30,9 +30,9 @@ module IsoDoc
30
30
  end
31
31
 
32
32
  def annex(isoxml, out)
33
- @amd and @suppressheadingnumbers = @oldsuppressheadingnumbers
33
+ amd(isoxml) and @suppressheadingnumbers = @oldsuppressheadingnumbers
34
34
  super
35
- @amd and @suppressheadingnumbers = true
35
+ amd(isoxml) and @suppressheadingnumbers = true
36
36
  end
37
37
 
38
38
  def introduction(isoxml, out)
@@ -10,18 +10,20 @@ module IsoDoc
10
10
  class StsConvert < IsoDoc::XslfoPdfConvert
11
11
  def initialize(options)
12
12
  @libdir = File.dirname(__FILE__)
13
+ @format = :sts
14
+ @suffix = "sts.xml"
13
15
  end
14
16
 
15
- def convert(filename, file = nil, debug = false)
16
- file = File.read(filename, encoding: "utf-8") if file.nil?
17
- docxml, outname_html, dir = convert_init(file, filename, debug)
18
- /\.xml$/.match(filename) or
19
- filename = Tempfile.open([outname_html, ".xml"], encoding: "utf-8") do |f|
17
+ def convert(input_filename, file = nil, debug = false, output_filename = nil)
18
+ file = File.read(input_filename, encoding: "utf-8") if file.nil?
19
+ docxml, filename, dir = convert_init(file, input_filename, debug)
20
+ /\.xml$/.match(input_filename) or
21
+ input_filename = Tempfile.open([filename, ".xml"], encoding: "utf-8") do |f|
20
22
  f.write file
21
23
  f.path
22
24
  end
23
25
  FileUtils.rm_rf dir
24
- Mn2sts.convert(filename, outname_html + ".sts.xml")
26
+ Mn2sts.convert(input_filename, output_filename || "#{filename}.#{@suffix}")
25
27
  end
26
28
  end
27
29
  end
@@ -1,8 +1,8 @@
1
1
  module IsoDoc
2
2
  module Iso
3
- module BaseConvert
4
- def anchor_names(docxml)
5
- if @amd
3
+ class Xref < IsoDoc::Xref
4
+ def parse(docxml)
5
+ if @klass.amd(docxml)
6
6
  back_anchor_names(docxml)
7
7
  note_anchor_names(docxml.xpath(ns("//annex//table | //annex//figure")))
8
8
  note_anchor_names(docxml.xpath(ns("//annex")))
@@ -33,7 +33,7 @@ module IsoDoc
33
33
 
34
34
  def appendix_names(clause, num)
35
35
  clause.xpath(ns("./appendix")).each_with_index do |c, i|
36
- @anchors[c["id"]] = anchor_struct(i + 1, nil, @appendix_lbl, "clause")
36
+ @anchors[c["id"]] = anchor_struct(i + 1, nil, @labels["appendix"], "clause")
37
37
  @anchors[c["id"]][:level] = 2
38
38
  @anchors[c["id"]][:container] = clause["id"]
39
39
  end
@@ -58,12 +58,12 @@ module IsoDoc
58
58
  end
59
59
 
60
60
  def hierarchical_formula_names(clause, num)
61
- c = IsoDoc::Function::XrefGen::Counter.new
61
+ c = IsoDoc::XrefGen::Counter.new
62
62
  clause.xpath(ns(".//formula")).each do |t|
63
63
  next if t["id"].nil? || t["id"].empty?
64
64
  @anchors[t["id"]] =
65
65
  anchor_struct("#{num}#{hiersep}#{c.increment(t).print}", t,
66
- t["inequality"] ? @inequality_lbl : @formula_lbl,
66
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
67
67
  "formula", t["unnumbered"])
68
68
  end
69
69
  end
@@ -71,13 +71,13 @@ module IsoDoc
71
71
  def figure_anchor(t, sublabel, label)
72
72
  @anchors[t["id"]] = anchor_struct(
73
73
  (sublabel ? "#{label} #{sublabel}" : label),
74
- nil, @figure_lbl, "figure", t["unnumbered"])
74
+ nil, @labels["figure"], "figure", t["unnumbered"])
75
75
  sublabel && t["unnumbered"] != "true" and
76
76
  @anchors[t["id"]][:label] = sublabel
77
77
  end
78
78
 
79
79
  def sequential_figure_names(clause)
80
- c = IsoDoc::Function::XrefGen::Counter.new
80
+ c = IsoDoc::XrefGen::Counter.new
81
81
  j = 0
82
82
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).
83
83
  each do |t|
@@ -89,7 +89,7 @@ module IsoDoc
89
89
  end
90
90
 
91
91
  def hierarchical_figure_names(clause, num)
92
- c = IsoDoc::Function::XrefGen::Counter.new
92
+ c = IsoDoc::XrefGen::Counter.new
93
93
  j = 0
94
94
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).
95
95
  each do |t|
@@ -100,6 +100,12 @@ module IsoDoc
100
100
  figure_anchor(t, sublabel, label)
101
101
  end
102
102
  end
103
+
104
+ def reference_names(ref)
105
+ super
106
+ @anchors[ref["id"]] = { xref: @anchors[ref["id"]][:xref].
107
+ sub(/ \(All Parts\)/i, "") }
108
+ end
103
109
  end
104
110
  end
105
111
  end
@@ -5,6 +5,7 @@ require_relative "isodoc/iso/html_convert"
5
5
  require_relative "isodoc/iso/word_convert"
6
6
  require_relative "isodoc/iso/pdf_convert"
7
7
  require_relative "isodoc/iso/sts_convert"
8
+ require_relative "isodoc/iso/presentation_xml_convert"
8
9
  require "asciidoctor/extensions"
9
10
 
10
11
  if defined? Metanorma
@@ -37,18 +37,25 @@ module Metanorma
37
37
  Metanorma::Input::Asciidoc.new.process(file, filename, @asciidoctor_backend)
38
38
  end
39
39
 
40
- def output(isodoc_node, outname, format, options={})
40
+ def use_presentation_xml(ext)
41
+ return true if ext == :html_alt
42
+ super
43
+ end
44
+
45
+ def output(isodoc_node, inname, outname, format, options={})
41
46
  case format
42
47
  when :html
43
- IsoDoc::Iso::HtmlConvert.new(options).convert(outname, isodoc_node)
48
+ IsoDoc::Iso::HtmlConvert.new(options).convert(inname, isodoc_node, nil, outname)
44
49
  when :html_alt
45
- IsoDoc::Iso::HtmlConvert.new(options.merge(alt: true)).convert(outname, isodoc_node)
50
+ IsoDoc::Iso::HtmlConvert.new(options.merge(alt: true)).convert(inname, isodoc_node, nil, outname)
46
51
  when :doc
47
- IsoDoc::Iso::WordConvert.new(options).convert(outname, isodoc_node)
52
+ IsoDoc::Iso::WordConvert.new(options).convert(inname, isodoc_node, nil, outname)
48
53
  when :pdf
49
- IsoDoc::Iso::PdfConvert.new(options).convert(outname, isodoc_node)
54
+ IsoDoc::Iso::PdfConvert.new(options).convert(inname, isodoc_node, nil, outname)
50
55
  when :sts
51
- IsoDoc::Iso::StsConvert.new(options).convert(outname, isodoc_node)
56
+ IsoDoc::Iso::StsConvert.new(options).convert(inname, isodoc_node, nil, outname)
57
+ when :presentation
58
+ IsoDoc::Iso::PresentationXMLConvert.new(options).convert(inname, isodoc_node, nil, outname)
52
59
  else
53
60
  super
54
61
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ISO
3
- VERSION = "1.3.27".freeze
3
+ VERSION = "1.4.0".freeze
4
4
  end
5
5
  end
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
31
31
 
32
32
  spec.add_dependency "ruby-jing"
33
- spec.add_dependency "isodoc", "~> 1.0.0"
33
+ spec.add_dependency "isodoc", "~> 1.1.0"
34
34
  spec.add_dependency "metanorma-standoc", "~> 1.4.0"
35
35
  spec.add_dependency "tokenizer", "~> 0.3.0"
36
36
  spec.add_dependency "twitter_cldr"
@@ -547,7 +547,7 @@ RSpec.describe Asciidoctor::ISO do
547
547
  INPUT
548
548
  #{BLANK_HDR}
549
549
  <sections><formula id="_">
550
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi><mtext>or</mtext><mi>μ</mi><mi>l</mi><mi>a</mi></math></stem>
550
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>F</mi><mi>or</mi><mi>μ</mi><mi>l</mi><mi>a</mi></math></stem>
551
551
  <dl id="_">
552
552
  <dt>a</dt>
553
553
  <dd>
@@ -150,7 +150,7 @@ RSpec.describe Asciidoctor::ISO do
150
150
  <tr>
151
151
  <th rowspan="2" align="left">Defect</th>
152
152
  <th colspan="4" align="center">Maximum permissible mass fraction of defects in husked rice<br/>
153
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>w</mi><mi>max</mi></msub></math></stem></th>
153
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>w</mi><mo>max</mo></msub></math></stem></th>
154
154
  </tr>
155
155
  <tr>
156
156
  <th align="left">in husked rice</th>
@@ -15,7 +15,7 @@ RSpec.describe Metanorma::Iso::Processor do
15
15
 
16
16
  it "registers output formats against metanorma" do
17
17
  expect(processor.output_formats.sort.to_s).to be_equivalent_to <<~"OUTPUT"
18
- [[:doc, "doc"], [:html, "html"], [:html_alt, "alt.html"], [:pdf, "pdf"], [:rxl, "rxl"], [:sts, "sts.xml"], [:xml, "xml"]]
18
+ [[:doc, "doc"], [:html, "html"], [:html_alt, "alt.html"], [:pdf, "pdf"], [:presentation, "presentation.xml"], [:rxl, "rxl"], [:sts, "sts.xml"], [:xml, "xml"]]
19
19
  OUTPUT
20
20
  end
21
21
 
@@ -35,7 +35,7 @@ RSpec.describe Metanorma::Iso::Processor do
35
35
 
36
36
  it "generates HTML from IsoDoc XML" do
37
37
  FileUtils.rm_f "test.xml"
38
- processor.output(<<~"INPUT", "test.html", :html)
38
+ processor.output(<<~"INPUT", "test.xml", "test.html", :html)
39
39
  <iso-standard xmlns="http://riboseinc.com/isoxml">
40
40
  <sections>
41
41
  <terms id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.27
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
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: ruby-jing
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.0.0
33
+ version: 1.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.0
40
+ version: 1.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: metanorma-standoc
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -308,6 +308,7 @@ files:
308
308
  - lib/isodoc/iso/iso.international-standard.xsl
309
309
  - lib/isodoc/iso/metadata.rb
310
310
  - lib/isodoc/iso/pdf_convert.rb
311
+ - lib/isodoc/iso/presentation_xml_convert.rb
311
312
  - lib/isodoc/iso/sections.rb
312
313
  - lib/isodoc/iso/sts_convert.rb
313
314
  - lib/isodoc/iso/word_convert.rb
@@ -375,7 +376,7 @@ homepage: https://github.com/metanorma/metanorma-iso
375
376
  licenses:
376
377
  - BSD-2-Clause
377
378
  metadata: {}
378
- post_install_message:
379
+ post_install_message:
379
380
  rdoc_options: []
380
381
  require_paths:
381
382
  - lib
@@ -390,9 +391,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
390
391
  - !ruby/object:Gem::Version
391
392
  version: '0'
392
393
  requirements: []
393
- rubyforge_project:
394
- rubygems_version: 2.7.6
395
- signing_key:
394
+ rubygems_version: 3.0.3
395
+ signing_key:
396
396
  specification_version: 4
397
397
  summary: metanorma-iso lets you write ISO standards in AsciiDoc.
398
398
  test_files: []