isodoc 1.0.25 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +12 -2
  3. data/.github/workflows/ubuntu.yml +15 -3
  4. data/.github/workflows/windows.yml +12 -2
  5. data/isodoc.gemspec +2 -2
  6. data/lib/isodoc.rb +2 -0
  7. data/lib/isodoc/common.rb +0 -4
  8. data/lib/isodoc/convert.rb +18 -8
  9. data/lib/isodoc/function/blocks.rb +46 -52
  10. data/lib/isodoc/function/blocks_example_note.rb +108 -0
  11. data/lib/isodoc/function/cleanup.rb +14 -2
  12. data/lib/isodoc/function/i18n.rb +1 -0
  13. data/lib/isodoc/function/inline.rb +76 -82
  14. data/lib/isodoc/function/inline_simple.rb +72 -0
  15. data/lib/isodoc/function/lists.rb +12 -6
  16. data/lib/isodoc/function/references.rb +49 -53
  17. data/lib/isodoc/function/reqt.rb +14 -5
  18. data/lib/isodoc/function/section.rb +10 -12
  19. data/lib/isodoc/function/table.rb +4 -5
  20. data/lib/isodoc/function/terms.rb +3 -3
  21. data/lib/isodoc/function/to_word_html.rb +22 -12
  22. data/lib/isodoc/function/utils.rb +9 -3
  23. data/lib/isodoc/headlesshtml_convert.rb +12 -6
  24. data/lib/isodoc/html_convert.rb +7 -1
  25. data/lib/isodoc/html_function/footnotes.rb +1 -1
  26. data/lib/isodoc/html_function/html.rb +16 -1
  27. data/lib/isodoc/html_function/postprocess.rb +6 -5
  28. data/lib/isodoc/metadata.rb +6 -0
  29. data/lib/isodoc/metadata_date.rb +19 -7
  30. data/lib/isodoc/pdf_convert.rb +13 -6
  31. data/lib/isodoc/presentation_xml_convert.rb +29 -0
  32. data/lib/isodoc/version.rb +1 -1
  33. data/lib/isodoc/word_convert.rb +7 -1
  34. data/lib/isodoc/word_function/body.rb +14 -48
  35. data/lib/isodoc/word_function/footnotes.rb +1 -1
  36. data/lib/isodoc/word_function/inline.rb +75 -0
  37. data/lib/isodoc/word_function/postprocess.rb +1 -0
  38. data/lib/isodoc/word_function/table.rb +3 -3
  39. data/lib/isodoc/xref.rb +59 -0
  40. data/lib/isodoc/{function → xref}/xref_anchor.rb +10 -21
  41. data/lib/isodoc/xref/xref_counter.rb +74 -0
  42. data/lib/isodoc/{function → xref}/xref_gen.rb +11 -23
  43. data/lib/isodoc/{function → xref}/xref_gen_seq.rb +41 -32
  44. data/lib/isodoc/{function → xref}/xref_sect_gen.rb +54 -40
  45. data/lib/isodoc/xslfo_convert.rb +21 -4
  46. data/spec/assets/i18n.yaml +4 -1
  47. data/spec/assets/odf.emf +0 -0
  48. data/spec/assets/odf.svg +4 -0
  49. data/spec/assets/odf1.svg +4 -0
  50. data/spec/isodoc/blocks_spec.rb +271 -48
  51. data/spec/isodoc/cleanup_spec.rb +139 -17
  52. data/spec/isodoc/footnotes_spec.rb +20 -5
  53. data/spec/isodoc/i18n_spec.rb +8 -8
  54. data/spec/isodoc/inline_spec.rb +299 -4
  55. data/spec/isodoc/lists_spec.rb +8 -8
  56. data/spec/isodoc/metadata_spec.rb +110 -3
  57. data/spec/isodoc/postproc_spec.rb +10 -14
  58. data/spec/isodoc/presentation_xml_spec.rb +20 -0
  59. data/spec/isodoc/ref_spec.rb +121 -52
  60. data/spec/isodoc/section_spec.rb +232 -208
  61. data/spec/isodoc/table_spec.rb +28 -28
  62. data/spec/isodoc/terms_spec.rb +7 -7
  63. data/spec/isodoc/xref_spec.rb +206 -59
  64. metadata +24 -17
  65. data/lib/isodoc/function/blocks_example.rb +0 -53
  66. data/lib/isodoc/function/xref_counter.rb +0 -50
@@ -1,11 +1,9 @@
1
- require_relative "xref_counter"
2
- require_relative "xref_anchor"
3
- require_relative "xref_gen_seq"
1
+ require_relative "xref_gen_seq.rb"
4
2
 
5
- module IsoDoc::Function
6
- module XrefGen
3
+ module IsoDoc::XrefGen
4
+ module Blocks
7
5
  def termnote_label(n)
8
- @termnote_lbl.gsub(/%/, n.to_s)
6
+ @labels["termnote"].gsub(/%/, n.to_s)
9
7
  end
10
8
 
11
9
  def termnote_anchor_names(docxml)
@@ -17,7 +15,7 @@ module IsoDoc::Function
17
15
  @anchors[n["id"]] =
18
16
  { label: termnote_label(c.print), type: "termnote",
19
17
  xref: l10n("#{anchor(t['id'], :xref)}, "\
20
- "#{@note_xref_lbl} #{c.print}") }
18
+ "#{@labels["note_xref"]} #{c.print}") }
21
19
  end
22
20
  end
23
21
  end
@@ -33,13 +31,14 @@ module IsoDoc::Function
33
31
  @anchors[n["id"]] = {
34
32
  type: "termexample", label: idx,
35
33
  xref: l10n("#{anchor(t['id'], :xref)}, "\
36
- "#{@example_xref_lbl} #{c.print}") }
34
+ "#{@labels["example_xref"]} #{c.print}") }
37
35
  end
38
36
  end
39
37
  end
40
38
 
41
39
  SECTIONS_XPATH =
42
40
  "//foreword | //introduction | //acknowledgements | //preface/clause | "\
41
+ "//preface/terms | preface/definitions | preface/references | "\
43
42
  "//sections/terms | //annex | "\
44
43
  "//sections/clause | //sections/definitions | "\
45
44
  "//bibliography/references | //bibliography/clause".freeze
@@ -56,7 +55,7 @@ module IsoDoc::Function
56
55
  notes.each do |n|
57
56
  next if @anchors[n["id"]] || n["id"].nil? || n["id"].empty?
58
57
  idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
59
- @anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl,
58
+ @anchors[n["id"]] = anchor_struct(idx, n, @labels["note_xref"],
60
59
  "note", false)
61
60
  end
62
61
  note_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
@@ -68,7 +67,7 @@ module IsoDoc::Function
68
67
  "not(self::xmlns:terms) and not(self::xmlns:definitions)]//"\
69
68
  "xmlns:example | ./xmlns:example".freeze
70
69
 
71
- CHILD_SECTIONS = "./clause | ./appendix | ./terms | ./definitions"
70
+ CHILD_SECTIONS = "./clause | ./appendix | ./terms | ./definitions | ./references"
72
71
 
73
72
  def example_anchor_names(sections)
74
73
  sections.each do |s|
@@ -78,7 +77,7 @@ module IsoDoc::Function
78
77
  next if @anchors[n["id"]]
79
78
  next if n["id"].nil? || n["id"].empty?
80
79
  idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
81
- @anchors[n["id"]] = anchor_struct(idx, n, @example_xref_lbl,
80
+ @anchors[n["id"]] = anchor_struct(idx, n, @labels["example_xref"],
82
81
  "example", n["unnumbered"])
83
82
  end
84
83
  example_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
@@ -93,7 +92,7 @@ module IsoDoc::Function
93
92
  notes.each do |n|
94
93
  next if n["id"].nil? || n["id"].empty?
95
94
  idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
96
- @anchors[n["id"]] = anchor_struct(idx, n, @list_lbl, "list", false)
95
+ @anchors[n["id"]] = anchor_struct(idx, n, @labels["list"], "list", false)
97
96
  list_item_anchor_names(n, @anchors[n["id"]], 1, "", notes.size != 1)
98
97
  end
99
98
  list_anchor_names(s.xpath(ns(CHILD_SECTIONS)))
@@ -114,16 +113,5 @@ module IsoDoc::Function
114
113
  end
115
114
  end
116
115
  end
117
-
118
- # extract names for all anchors, xref and label
119
- def anchor_names(docxml)
120
- initial_anchor_names(docxml)
121
- back_anchor_names(docxml)
122
- # preempt clause notes with all other types of note (ISO default)
123
- note_anchor_names(docxml.xpath(ns("//table | //figure")))
124
- note_anchor_names(docxml.xpath(ns(SECTIONS_XPATH)))
125
- example_anchor_names(docxml.xpath(ns(SECTIONS_XPATH)))
126
- list_anchor_names(docxml.xpath(ns(SECTIONS_XPATH)))
127
- end
128
116
  end
129
117
  end
@@ -1,19 +1,32 @@
1
- module IsoDoc::Function
2
- module XrefGen
1
+ module IsoDoc::XrefGen
2
+ module Blocks
3
+ def hiersep
4
+ "."
5
+ end
6
+
7
+ def hierfigsep
8
+ "-"
9
+ end
10
+
11
+ def subfigure_increment(j, c, t)
12
+ if t.parent.name == "figure" then j += 1
13
+ else
14
+ j = 0
15
+ c.increment(t)
16
+ end
17
+ j
18
+ end
19
+
3
20
  def sequential_figure_names(clause)
4
21
  c = Counter.new
5
22
  j = 0
6
23
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).
7
24
  each do |t|
8
- if t.parent.name == "figure" then j += 1
9
- else
10
- j = 0
11
- c.increment(t)
12
- end
25
+ j = subfigure_increment(j, c, t)
13
26
  label = c.print + (j.zero? ? "" : "-#{j}")
14
27
  next if t["id"].nil? || t["id"].empty?
15
28
  @anchors[t["id"]] =
16
- anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
29
+ anchor_struct(label, nil, @labels["figure"], "figure", t["unnumbered"])
17
30
  end
18
31
  end
19
32
 
@@ -22,7 +35,7 @@ module IsoDoc::Function
22
35
  clause.xpath(ns(".//table")).each do |t|
23
36
  next if t["id"].nil? || t["id"].empty?
24
37
  @anchors[t["id"]] = anchor_struct(c.increment(t).print, nil,
25
- @table_lbl, "table", t["unnumbered"])
38
+ @labels["table"], "table", t["unnumbered"])
26
39
  end
27
40
  end
28
41
 
@@ -32,7 +45,7 @@ module IsoDoc::Function
32
45
  next if t["id"].nil? || t["id"].empty?
33
46
  @anchors[t["id"]] =
34
47
  anchor_struct(c.increment(t).print, t,
35
- t["inequality"] ? @inequality_lbl : @formula_lbl,
48
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
36
49
  "formula", t["unnumbered"])
37
50
  end
38
51
  end
@@ -51,9 +64,9 @@ module IsoDoc::Function
51
64
  end
52
65
 
53
66
  def sequential_permission_names2(t, id)
54
- sequential_permission_names1(t, id, "permission", @permission_lbl)
55
- sequential_permission_names1(t, id, "requirement", @requirement_lbl)
56
- sequential_permission_names1(t, id, "recommendation", @recommendation_lbl)
67
+ sequential_permission_names1(t, id, "permission", @labels["permission"])
68
+ sequential_permission_names1(t, id, "requirement", @labels["requirement"])
69
+ sequential_permission_names1(t, id, "recommendation", @labels["recommendation"])
57
70
  end
58
71
 
59
72
  def sequential_permission_names1(block, lbl, klass, label)
@@ -70,9 +83,9 @@ module IsoDoc::Function
70
83
  sequential_table_names(clause)
71
84
  sequential_figure_names(clause)
72
85
  sequential_formula_names(clause)
73
- sequential_permission_names(clause, "permission", @permission_lbl)
74
- sequential_permission_names(clause, "requirement", @requirement_lbl)
75
- sequential_permission_names(clause, "recommendation", @recommendation_lbl)
86
+ sequential_permission_names(clause, "permission", @labels["permission"])
87
+ sequential_permission_names(clause, "requirement", @labels["requirement"])
88
+ sequential_permission_names(clause, "recommendation", @labels["recommendation"])
76
89
  end
77
90
 
78
91
  def hierarchical_figure_names(clause, num)
@@ -80,15 +93,11 @@ module IsoDoc::Function
80
93
  j = 0
81
94
  clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).
82
95
  each do |t|
83
- if t.parent.name == "figure" then j += 1
84
- else
85
- j = 0
86
- c.increment(t)
87
- end
96
+ j = subfigure_increment(j, c, t)
88
97
  label = "#{num}#{hiersep}#{c.print}" +
89
98
  (j.zero? ? "" : "#{hierfigsep}#{j}")
90
99
  next if t["id"].nil? || t["id"].empty?
91
- @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure",
100
+ @anchors[t["id"]] = anchor_struct(label, nil, @labels["figure"], "figure",
92
101
  t["unnumbered"])
93
102
  end
94
103
  end
@@ -99,7 +108,7 @@ module IsoDoc::Function
99
108
  next if t["id"].nil? || t["id"].empty?
100
109
  @anchors[t["id"]] =
101
110
  anchor_struct("#{num}#{hiersep}#{c.increment(t).print}",
102
- nil, @table_lbl, "table", t["unnumbered"])
111
+ nil, @labels["table"], "table", t["unnumbered"])
103
112
  end
104
113
  end
105
114
 
@@ -107,11 +116,11 @@ module IsoDoc::Function
107
116
  hierarchical_table_names(clause, num)
108
117
  hierarchical_figure_names(clause, num)
109
118
  hierarchical_formula_names(clause, num)
110
- hierarchical_permission_names(clause, num, "permission", @permission_lbl)
119
+ hierarchical_permission_names(clause, num, "permission", @labels["permission"])
111
120
  hierarchical_permission_names(clause, num, "requirement",
112
- @requirement_lbl)
121
+ @labels["requirement"])
113
122
  hierarchical_permission_names(clause, num, "recommendation",
114
- @recommendation_lbl)
123
+ @labels["recommendation"])
115
124
  end
116
125
 
117
126
  def hierarchical_formula_names(clause, num)
@@ -120,7 +129,7 @@ module IsoDoc::Function
120
129
  next if t["id"].nil? || t["id"].empty?
121
130
  @anchors[t["id"]] =
122
131
  anchor_struct("#{num}#{hiersep}#{c.increment(t).print}", nil,
123
- t["inequality"] ? @inequality_lbl : @formula_lbl,
132
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
124
133
  "formula", t["unnumbered"])
125
134
  end
126
135
  end
@@ -135,13 +144,13 @@ module IsoDoc::Function
135
144
  end
136
145
  end
137
146
 
138
- def hierarchical_permission_names2(t, id)
139
- hierarchical_permission_names1(t, id, "permission", @permission_lbl)
140
- hierarchical_permission_names1(t, id, "requirement", @requirement_lbl)
141
- hierarchical_permission_names1(t, id, "recommendation", @recommendation_lbl)
147
+ def hierarchical_permission_names2(t, id)
148
+ hierarchical_permission_names1(t, id, "permission", @labels["permission"])
149
+ hierarchical_permission_names1(t, id, "requirement", @labels["requirement"])
150
+ hierarchical_permission_names1(t, id, "recommendation", @labels["recommendation"])
142
151
  end
143
152
 
144
- def hierarchical_permission_names1(block, lbl, klass, label)
153
+ def hierarchical_permission_names1(block, lbl, klass, label)
145
154
  c = Counter.new
146
155
  block.xpath(ns("./#{klass}")).each do |t|
147
156
  next if t["id"].nil? || t["id"].empty?
@@ -1,39 +1,28 @@
1
- module IsoDoc::Function
2
- module XrefSectGen
1
+ module IsoDoc::XrefGen
2
+ module Sections
3
3
  def back_anchor_names(docxml)
4
4
  docxml.xpath(ns("//annex")).each_with_index do |c, i|
5
5
  annex_names(c, (65 + i).chr.to_s)
6
6
  end
7
7
  docxml.xpath(
8
- ns("//bibliography/clause[not(xmlns:title = 'Normative References' or "\
9
- "xmlns:title = 'Normative references')] |"\
10
- "//bibliography/references[not(xmlns:title = 'Normative References'"\
11
- " or xmlns:title = 'Normative references')]")).each do |b|
12
- preface_names(b)
13
- end
14
- docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
15
- reference_names(ref)
16
- end
8
+ ns("//bibliography/clause[.//references[@normative = 'false']] | "\
9
+ "//bibliography/references[@normative = 'false']"
10
+ )).each do |b|
11
+ preface_names(b)
12
+ end
13
+ docxml.xpath(ns("//bibitem[not(ancestor::bibitem)]")).each do |ref|
14
+ reference_names(ref)
15
+ end
17
16
  end
18
17
 
19
18
  def initial_anchor_names(d)
20
- preface_names(d.at(ns("//preface/abstract")))
21
- preface_names(d.at(ns("//foreword")))
22
- preface_names(d.at(ns("//introduction")))
23
- d.xpath(ns("//preface/clause")).each do |c|
24
- preface_names(c)
25
- end
26
- preface_names(d.at(ns("//acknowledgements")))
19
+ d.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
27
20
  # potentially overridden in middle_section_asset_names()
28
- sequential_asset_names(
29
- d.xpath(ns("//preface/abstract | //foreword | //introduction | "\
30
- "//preface/clause | //acknowledgements")))
21
+ sequential_asset_names(d.xpath(ns("//preface/*")))
31
22
  n = section_names(d.at(ns("//clause[title = 'Scope']")), 0, 1)
32
23
  n = section_names(d.at(ns(
33
- "//bibliography/clause[title = 'Normative References' or "\
34
- "title = 'Normative references'] |"\
35
- "//bibliography/references[title = 'Normative References' or "\
36
- "title = 'Normative references']")), n, 1)
24
+ "//bibliography/clause[.//references[@normative = 'true']] | "\
25
+ "//bibliography/references[@normative = 'true']")), n, 1)
37
26
  n = section_names(d.at(ns("//sections/terms | "\
38
27
  "//sections/clause[descendant::terms]")), n, 1)
39
28
  n = section_names(d.at(ns("//sections/definitions")), n, 1)
@@ -76,17 +65,14 @@ module IsoDoc::Function
76
65
 
77
66
  def middle_section_asset_names(d)
78
67
  middle_sections = "//clause[title = 'Scope'] | "\
79
- "//references[title = 'Normative References' or title = "\
80
- "'Normative references'] | "\
81
- "//sections/terms | //preface/abstract | //foreword | "\
82
- "//introduction | //preface/clause | //acknowledgements | "\
68
+ "//references[@normative = 'true'] | "\
69
+ "//sections/terms | //preface/* | "\
83
70
  "//sections/definitions | //clause[parent::sections]"
84
71
  sequential_asset_names(d.xpath(ns(middle_sections)))
85
72
  end
86
73
 
87
74
  def clause_names(docxml, sect_num)
88
- q = self.class::MIDDLE_CLAUSE
89
- docxml.xpath(ns(q)).each_with_index do |c, i|
75
+ docxml.xpath(ns(@klass.middle_clause)).each_with_index do |c, i|
90
76
  section_names(c, (i + sect_num), 1)
91
77
  end
92
78
  end
@@ -95,7 +81,7 @@ module IsoDoc::Function
95
81
  return num if clause.nil?
96
82
  num = num + 1
97
83
  @anchors[clause["id"]] =
98
- { label: num.to_s, xref: l10n("#{@clause_lbl} #{num}"), level: lvl,
84
+ { label: num.to_s, xref: l10n("#{@labels["clause"]} #{num}"), level: lvl,
99
85
  type: "clause" }
100
86
  clause.xpath(ns(SUBCLAUSES)).
101
87
  each_with_index do |c, i|
@@ -106,7 +92,7 @@ module IsoDoc::Function
106
92
 
107
93
  def section_names1(clause, num, level)
108
94
  @anchors[clause["id"]] =
109
- { label: num, level: level, xref: l10n("#{@clause_lbl} #{num}"),
95
+ { label: num, level: level, xref: l10n("#{@labels["clause"]} #{num}"),
110
96
  type: "clause" }
111
97
  clause.xpath(ns(SUBCLAUSES)).
112
98
  each_with_index do |c, i|
@@ -115,27 +101,55 @@ module IsoDoc::Function
115
101
  end
116
102
 
117
103
  def annex_name_lbl(clause, num)
118
- obl = l10n("(#{@inform_annex_lbl})")
119
- obl = l10n("(#{@norm_annex_lbl})") if clause["obligation"] == "normative"
120
- l10n("<b>#{@annex_lbl} #{num}</b><br/>#{obl}")
104
+ obl = l10n("(#{@labels["inform_annex"]})")
105
+ obl = l10n("(#{@labels["norm_annex"]})") if clause["obligation"] == "normative"
106
+ l10n("<b>#{@labels["annex"]} #{num}</b><br/>#{obl}")
107
+ end
108
+
109
+ def single_annex_special_section(clause)
110
+ a = clause.xpath(ns("./references | ./terms | ./definitions"))
111
+ a.size == 1 or return nil
112
+ clause.xpath(ns("./clause | ./p | ./table | ./ol | ./ul | ./dl | "\
113
+ "./note | ./admonition | ./figure")).size == 0 or
114
+ return nil
115
+ a[0]
121
116
  end
122
117
 
123
118
  def annex_names(clause, num)
124
119
  @anchors[clause["id"]] = { label: annex_name_lbl(clause, num),
125
120
  type: "clause",
126
- xref: "#{@annex_lbl} #{num}", level: 1 }
127
- clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
128
- annex_names1(c, "#{num}.#{i + 1}", 2)
121
+ xref: "#{@labels["annex"]} #{num}", level: 1 }
122
+ if a = single_annex_special_section(clause)
123
+ annex_names1(a, "#{num}", 1)
124
+ else
125
+ clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
126
+ annex_names1(c, "#{num}.#{i + 1}", 2)
127
+ end
129
128
  end
130
129
  hierarchical_asset_names(clause, num)
131
130
  end
132
131
 
133
132
  def annex_names1(clause, num, level)
134
- @anchors[clause["id"]] = { label: num, xref: "#{@annex_lbl} #{num}",
133
+ @anchors[clause["id"]] = { label: num, xref: "#{@labels["annex"]} #{num}",
135
134
  level: level, type: "clause" }
136
135
  clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
137
136
  annex_names1(c, "#{num}.#{i + 1}", level + 1)
138
137
  end
139
138
  end
139
+
140
+ ISO_PUBLISHER_XPATH =
141
+ "./contributor[xmlns:role/@type = 'publisher']/"\
142
+ "organization[abbreviation = 'ISO' or xmlns:abbreviation = 'IEC' or "\
143
+ "xmlns:name = 'International Organization for Standardization' or "\
144
+ "xmlns:name = 'International Electrotechnical Commission']".freeze
145
+
146
+ def reference_names(ref)
147
+ isopub = ref.at(ns(ISO_PUBLISHER_XPATH))
148
+ ids = @klass.bibitem_ref_code(ref)
149
+ identifiers = @klass.render_identifier(ids)
150
+ date = ref.at(ns("./date[@type = 'published']"))
151
+ reference = @klass.docid_l10n(identifiers[0] || identifiers[1])
152
+ @anchors[ref["id"]] = { xref: reference }
153
+ end
140
154
  end
141
155
  end
@@ -13,11 +13,28 @@ module IsoDoc
13
13
  "_pdfimages"
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)
16
+ def initialize(options)
17
+ @format = :pdf
18
+ @suffix = "pdf"
19
+ super
20
+ end
21
+
22
+ def pdf_stylesheet(docxml)
23
+ nil
24
+ end
25
+
26
+ def convert(input_filename, file = nil, debug = false, output_filename = nil)
27
+ file = File.read(input_filename, encoding: "utf-8") if file.nil?
28
+ docxml, filename, dir = convert_init(file, input_filename, debug)
29
+ /\.xml$/.match(input_filename) or
30
+ input_filename = Tempfile.open([filename, ".xml"], encoding: "utf-8") do |f|
31
+ f.write file
32
+ f.path
33
+ end
19
34
  FileUtils.rm_rf dir
20
- ::Metanorma::Output::XslfoPdf.new.convert(filename, outname_html + ".pdf", nil)
35
+ ::Metanorma::Output::XslfoPdf.new.convert(input_filename,
36
+ output_filename || "#{filename}.#{@suffix}",
37
+ File.join(@libdir, pdf_stylesheet(docxml)))
21
38
  end
22
39
 
23
40
  def xref_parse(node, out)
@@ -1,2 +1,5 @@
1
1
  foreword: Enkonduko
2
-
2
+ clause: klaŭzo
3
+ table: Tabelo
4
+ source: SOURCE
5
+ modified: modified
Binary file
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <circle fill="#009" r="45" cx="50" cy="50"/>
3
+ <path d="M33,26H78A37,37,0,0,1,33,83V57H59V43H33Z" fill="#FFF"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
2
+ <circle fill="#009" r="45" cx="50" cy="50"/>
3
+ <path d="M33,26H78A37,37,0,0,1,33,83V57H59V43H33Z" fill="#FFF"/>
4
+ </svg>