metanorma-iso 1.6.0 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +16 -29
  3. data/.rubocop.yml +0 -4
  4. data/lib/asciidoctor/iso/base.rb +13 -13
  5. data/lib/asciidoctor/iso/basicdoc.rng +5 -3
  6. data/lib/asciidoctor/iso/cleanup.rb +1 -1
  7. data/lib/asciidoctor/iso/front.rb +5 -5
  8. data/lib/asciidoctor/iso/isodoc.rng +134 -5
  9. data/lib/asciidoctor/iso/isostandard-amd.rng +11 -4
  10. data/lib/asciidoctor/iso/isostandard.rng +33 -107
  11. data/lib/asciidoctor/iso/validate.rb +79 -0
  12. data/lib/asciidoctor/iso/validate_section.rb +12 -9
  13. data/lib/isodoc/iso/base_convert.rb +11 -0
  14. data/lib/isodoc/iso/html/header.html +12 -12
  15. data/lib/isodoc/iso/html/html_iso_intro.html +1 -1
  16. data/lib/isodoc/iso/html/html_iso_titlepage.html +1 -1
  17. data/lib/isodoc/iso/html/word_iso_intro.html +1 -1
  18. data/lib/isodoc/iso/html/word_iso_titlepage.html +1 -1
  19. data/lib/isodoc/iso/html_convert.rb +2 -2
  20. data/lib/isodoc/iso/i18n-en.yaml +6 -0
  21. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  22. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  23. data/lib/isodoc/iso/index.rb +139 -0
  24. data/lib/isodoc/iso/iso.amendment.xsl +1006 -317
  25. data/lib/isodoc/iso/iso.international-standard.xsl +1006 -317
  26. data/lib/isodoc/iso/presentation_xml_convert.rb +1 -4
  27. data/lib/isodoc/iso/sections.rb +1 -1
  28. data/lib/isodoc/iso/word_convert.rb +2 -2
  29. data/lib/isodoc/iso/xref.rb +33 -12
  30. data/lib/metanorma/iso/version.rb +1 -1
  31. data/metanorma-iso.gemspec +3 -3
  32. data/spec/asciidoctor/amd_spec.rb +696 -0
  33. data/spec/asciidoctor/base_spec.rb +704 -0
  34. data/spec/asciidoctor/blocks_spec.rb +527 -0
  35. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  36. data/spec/asciidoctor/inline_spec.rb +195 -0
  37. data/spec/asciidoctor/lists_spec.rb +197 -0
  38. data/spec/asciidoctor/refs_spec.rb +375 -0
  39. data/spec/asciidoctor/section_spec.rb +393 -0
  40. data/spec/asciidoctor/table_spec.rb +329 -0
  41. data/spec/asciidoctor/validate_spec.rb +1555 -0
  42. data/spec/isodoc/amd_spec.rb +967 -946
  43. data/spec/isodoc/blocks_spec.rb +530 -507
  44. data/spec/isodoc/i18n_spec.rb +953 -911
  45. data/spec/isodoc/inline_spec.rb +355 -293
  46. data/spec/isodoc/iso_spec.rb +340 -316
  47. data/spec/isodoc/metadata_spec.rb +392 -382
  48. data/spec/isodoc/postproc_spec.rb +834 -656
  49. data/spec/isodoc/ref_spec.rb +374 -331
  50. data/spec/isodoc/section_spec.rb +821 -519
  51. data/spec/isodoc/table_spec.rb +472 -411
  52. data/spec/isodoc/terms_spec.rb +209 -185
  53. data/spec/isodoc/xref_spec.rb +1370 -1236
  54. data/spec/metanorma/processor_spec.rb +28 -26
  55. data/spec/spec_helper.rb +184 -189
  56. metadata +22 -23
  57. data/.rubocop.ribose.yml +0 -66
  58. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  59. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  60. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  61. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  62. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  63. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  64. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  65. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  66. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  67. data/spec/asciidoctor-iso/validate_spec.rb +0 -1251
  68. data/spec/assets/xref_error.adoc +0 -7
@@ -2,9 +2,8 @@ require "spec_helper"
2
2
  require "metanorma"
3
3
  require "fileutils"
4
4
 
5
- #RSpec.describe Asciidoctor::Gb do
5
+ # RSpec.describe Asciidoctor::Gb do
6
6
  RSpec.describe Metanorma::Iso::Processor do
7
-
8
7
  registry = Metanorma::Registry.instance
9
8
  registry.register(Metanorma::Iso::Processor)
10
9
  processor = registry.find_processor(:iso)
@@ -15,7 +14,7 @@ RSpec.describe Metanorma::Iso::Processor do
15
14
 
16
15
  it "registers output formats against metanorma" do
17
16
  expect(processor.output_formats.sort.to_s).to be_equivalent_to <<~"OUTPUT"
18
- [[:doc, "doc"], [:html, "html"], [:html_alt, "alt.html"], [:isosts, "iso.sts.xml"], [:pdf, "pdf"], [:presentation, "presentation.xml"], [:rxl, "rxl"], [:sts, "sts.xml"], [:xml, "xml"]]
17
+ [[:doc, "doc"], [:html, "html"], [:html_alt, "alt.html"], [:isosts, "iso.sts.xml"], [:pdf, "pdf"], [:presentation, "presentation.xml"], [:rxl, "rxl"], [:sts, "sts.xml"], [:xml, "xml"]]
19
18
  OUTPUT
20
19
  end
21
20
 
@@ -25,37 +24,40 @@ RSpec.describe Metanorma::Iso::Processor do
25
24
 
26
25
  it "generates IsoDoc XML from a blank document" do
27
26
  expect(xmlpp(processor.input_to_isodoc(<<~"INPUT", nil))).to be_equivalent_to xmlpp(<<~"OUTPUT")
28
- #{ASCIIDOC_BLANK_HDR}
27
+ #{ASCIIDOC_BLANK_HDR}
29
28
  INPUT
30
- #{BLANK_HDR}
31
- <sections/>
32
- </iso-standard>
29
+ #{BLANK_HDR}
30
+ <sections/>
31
+ </iso-standard>
33
32
  OUTPUT
34
33
  end
35
34
 
36
35
  it "generates HTML from IsoDoc XML" do
37
36
  FileUtils.rm_f "test.xml"
38
37
  processor.output(<<~"INPUT", "test.xml", "test.html", :html)
39
- <iso-standard xmlns="http://riboseinc.com/isoxml">
40
- <sections>
41
- <terms id="H" obligation="normative"><title>1&#xA0; Terms, Definitions, Symbols and Abbreviated Terms</title>
42
- <term id="J">
43
- <name>1.1</name>
44
- <preferred>Term2</preferred>
45
- </term>
46
- </terms>
38
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
39
+ <sections>
40
+ <terms id="H" obligation="normative"><title>1&#xA0; Terms, Definitions, Symbols and Abbreviated Terms</title>
41
+ <term id="J">
42
+ <name>1.1</name>
43
+ <preferred>Term2</preferred>
44
+ </term>
45
+ </terms>
47
46
  </sections>
48
- </iso-standard>
47
+ </iso-standard>
49
48
  INPUT
50
- expect(xmlpp(File.read("test.html", encoding: "utf-8").gsub(%r{^.*<main}m, "<main").gsub(%r{</main>.*}m, "</main>"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
51
- <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
52
- <p class="zzSTDTitle1"></p>
53
- <div id="H"><h1 id="toc0">1&#xA0; Terms, Definitions, Symbols and Abbreviated Terms</h1>
54
- <h2 class="TermNum" id="J">1.1</h2>
55
- <p class="Terms" style="text-align:left;">Term2</p>
56
- </div>
57
- </main>
58
- OUTPUT
49
+ expect(xmlpp(File.read("test.html", encoding: "utf-8")
50
+ .gsub(%r{^.*<main}m, "<main")
51
+ .gsub(%r{</main>.*}m, "</main>")))
52
+ .to be_equivalent_to xmlpp(<<~"OUTPUT")
53
+ <main class="main-section">
54
+ <button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
55
+ <p class="zzSTDTitle1"></p>
56
+ <div id="H"><h1 id="toc0">1&#xA0; Terms, Definitions, Symbols and Abbreviated Terms</h1>
57
+ <h2 class="TermNum" id="J">1.1</h2>
58
+ <p class="Terms" style="text-align:left;">Term2</p>
59
+ </div>
60
+ </main>
61
+ OUTPUT
59
62
  end
60
-
61
63
  end
data/spec/spec_helper.rb CHANGED
@@ -23,246 +23,243 @@ RSpec.configure do |config|
23
23
  config.expect_with :rspec do |c|
24
24
  c.syntax = :expect
25
25
  end
26
+
27
+ config.around do |example|
28
+ Dir.mktmpdir("rspec-") do |dir|
29
+ tmp_assets = File.join(dir, "spec/assets/")
30
+ FileUtils.mkdir_p tmp_assets
31
+ FileUtils.cp_r Dir.glob("spec/assets/*"), tmp_assets
32
+ Dir.chdir(dir) { example.run }
33
+ end
34
+ end
26
35
  end
27
36
 
28
- def strip_guid(x)
29
- x.gsub(%r{ id="_[^"]+"}, ' id="_"').gsub(%r{ target="_[^"]+"}, ' target="_"')
37
+ def strip_guid(xml)
38
+ xml.gsub(%r{ id="_[^"]+"}, ' id="_"').gsub(%r{ target="_[^"]+"}, ' target="_"')
30
39
  end
31
40
 
32
- def metadata(x)
33
- Hash[x.sort].delete_if{ |k, v| v.nil? || v.respond_to?(:empty?) && v.empty? }
41
+ def metadata(hash)
42
+ Hash[hash.sort].delete_if { |_, v| v.nil? || v.respond_to?(:empty?) && v.empty? }
34
43
  end
35
44
 
36
- def xmlpp(x)
45
+ def xmlpp(xml)
37
46
  s = ""
38
47
  f = REXML::Formatters::Pretty.new(2)
39
48
  f.compact = true
40
- f.write(REXML::Document.new(x),s)
49
+ f.write(REXML::Document.new(xml), s)
41
50
  s
42
51
  end
43
52
 
44
- ASCIIDOC_BLANK_HDR = <<~"HDR"
45
- = Document title
46
- Author
47
- :docfile: test.adoc
48
- :nodoc:
49
- :novalid:
50
- :no-isobib:
53
+ ASCIIDOC_BLANK_HDR = <<~"HDR".freeze
54
+ = Document title
55
+ Author
56
+ :docfile: test.adoc
57
+ :nodoc:
58
+ :novalid:
59
+ :no-isobib:
51
60
 
52
61
  HDR
53
62
 
54
- AMD_BLANK_HDR = <<~"HDR"
55
- = Document title
56
- Author
57
- :docfile: test.adoc
58
- :nodoc:
59
- :novalid:
60
- :no-isobib:
61
- :doctype: amendment
63
+ AMD_BLANK_HDR = <<~"HDR".freeze
64
+ = Document title
65
+ Author
66
+ :docfile: test.adoc
67
+ :nodoc:
68
+ :novalid:
69
+ :no-isobib:
70
+ :doctype: amendment
62
71
 
63
72
  HDR
64
73
 
65
- ISOBIB_BLANK_HDR = <<~"HDR"
66
- = Document title
67
- Author
68
- :docfile: test.adoc
69
- :nodoc:
70
- :novalid:
71
- :no-isobib-cache:
74
+ ISOBIB_BLANK_HDR = <<~"HDR".freeze
75
+ = Document title
76
+ Author
77
+ :docfile: test.adoc
78
+ :nodoc:
79
+ :novalid:
80
+ :no-isobib-cache:
72
81
 
73
82
  HDR
74
83
 
75
- FLUSH_CACHE_ISOBIB_BLANK_HDR = <<~"HDR"
76
- = Document title
77
- Author
78
- :docfile: test.adoc
79
- :nodoc:
80
- :novalid:
81
- :flush-caches:
84
+ FLUSH_CACHE_ISOBIB_BLANK_HDR = <<~"HDR".freeze
85
+ = Document title
86
+ Author
87
+ :docfile: test.adoc
88
+ :nodoc:
89
+ :novalid:
90
+ :flush-caches:
82
91
 
83
92
  HDR
84
93
 
85
- CACHED_ISOBIB_BLANK_HDR = <<~"HDR"
86
- = Document title
87
- Author
88
- :docfile: test.adoc
89
- :nodoc:
90
- :novalid:
94
+ CACHED_ISOBIB_BLANK_HDR = <<~"HDR".freeze
95
+ = Document title
96
+ Author
97
+ :docfile: test.adoc
98
+ :nodoc:
99
+ :novalid:
91
100
 
92
101
  HDR
93
102
 
94
- LOCAL_CACHED_ISOBIB_BLANK_HDR = <<~"HDR"
95
- = Document title
96
- Author
97
- :docfile: test.adoc
98
- :nodoc:
99
- :novalid:
100
- :local-cache:
103
+ LOCAL_CACHED_ISOBIB_BLANK_HDR = <<~"HDR".freeze
104
+ = Document title
105
+ Author
106
+ :docfile: test.adoc
107
+ :nodoc:
108
+ :novalid:
109
+ :local-cache:
101
110
 
102
111
  HDR
103
112
 
104
- VALIDATING_BLANK_HDR = <<~"HDR"
105
- = Document title
106
- Author
107
- :docfile: test.adoc
108
- :nodoc:
109
- :no-isobib:
110
-
113
+ VALIDATING_BLANK_HDR = <<~"HDR".freeze
114
+ = Document title
115
+ Author
116
+ :docfile: test.adoc
117
+ :nodoc:
118
+ :no-isobib:
111
119
  HDR
112
120
 
121
+ ASCIIDOCTOR_ISO_DIR = Pathname.new(File.dirname(__FILE__)) / "../lib/asciidoctor/iso"
122
+
113
123
  BOILERPLATE =
114
124
  HTMLEntities.new.decode(
115
- File.read(File.join(File.dirname(__FILE__), "..", "lib", "asciidoctor", "iso", "boilerplate.xml"), encoding: "utf-8").
116
- gsub(/\{\{ agency \}\}/, "ISO").gsub(/\{\{ docyear \}\}/, Date.today.year.to_s).
117
- gsub(/\{% if unpublished %\}.*\{% endif %\}/m, "").
118
- gsub(/(?<=\p{Alnum})'(?=\p{Alpha})/, "’")
119
- )
125
+ File.read(ASCIIDOCTOR_ISO_DIR / "boilerplate.xml", encoding: "utf-8")
126
+ .gsub(/\{\{ agency \}\}/, "ISO").gsub(/\{\{ docyear \}\}/, Date.today.year.to_s)
127
+ .gsub(/\{% if unpublished %\}.*\{% endif %\}/m, "")
128
+ .gsub(/(?<=\p{Alnum})'(?=\p{Alpha})/, "’")
129
+ )
120
130
 
121
131
  BOILERPLATE_FR =
122
132
  HTMLEntities.new.decode(
123
- File.read(File.join(File.dirname(__FILE__), "..", "lib", "asciidoctor", "iso", "boilerplate-fr.xml"), encoding: "utf-8").
124
- gsub(/\{\{ agency \}\}/, "ISO").gsub(/\{\{ docyear \}\}/, Date.today.year.to_s).
125
- gsub(/\{% if unpublished %\}.*\{% endif %\}/m, "").
126
- gsub(/(?<=\p{Alnum})'(?=\p{Alpha})/, "’")
127
- )
128
-
129
- BLANK_HDR1 = <<~"HDR"
130
- <?xml version="1.0" encoding="UTF-8"?>
131
- <iso-standard xmlns="https://www.metanorma.org/ns/iso" type="semantic" version="#{Metanorma::ISO::VERSION}">
132
- <bibdata type="standard">
133
- <contributor>
134
- <role type="author"/>
135
- <organization>
136
- <name>International Organization for Standardization</name>
137
- <abbreviation>ISO</abbreviation>
138
- </organization>
139
- </contributor>
140
- <contributor>
141
- <role type="publisher"/>
142
- <organization>
143
- <name>International Organization for Standardization</name>
144
- <abbreviation>ISO</abbreviation>
145
- </organization>
146
- </contributor>
147
- <language>en</language>
148
- <script>Latn</script>
149
- <status>
150
- <stage abbreviation="IS">60</stage>
151
- <substage>60</substage>
152
- </status>
153
- <copyright>
154
- <from>#{Time.new.year}</from>
155
- <owner>
156
- <organization>
157
- <name>International Organization for Standardization</name>
158
- <abbreviation>ISO</abbreviation>
159
- </organization>
160
- </owner>
161
- </copyright>
162
- <ext>
163
- <doctype>article</doctype>
164
- <editorialgroup>
165
- <technical-committee/>
166
- <subcommittee/>
167
- <workgroup/>
168
- </editorialgroup>
169
- <stagename>International standard</stagename>
170
- </ext>
171
- </bibdata>
133
+ File.read(ASCIIDOCTOR_ISO_DIR / "boilerplate-fr.xml", encoding: "utf-8")
134
+ .gsub(/\{\{ agency \}\}/, "ISO").gsub(/\{\{ docyear \}\}/, Date.today.year.to_s)
135
+ .gsub(/\{% if unpublished %\}.*\{% endif %\}/m, "")
136
+ .gsub(/(?<=\p{Alnum})'(?=\p{Alpha})/, "’")
137
+ )
138
+
139
+ BLANK_HDR1 = <<~"HDR".freeze
140
+ <?xml version="1.0" encoding="UTF-8"?>
141
+ <iso-standard xmlns="https://www.metanorma.org/ns/iso" type="semantic" version="#{Metanorma::ISO::VERSION}">
142
+ <bibdata type="standard">
143
+ <contributor>
144
+ <role type="author"/>
145
+ <organization>
146
+ <name>International Organization for Standardization</name>
147
+ <abbreviation>ISO</abbreviation>
148
+ </organization>
149
+ </contributor>
150
+ <contributor>
151
+ <role type="publisher"/>
152
+ <organization>
153
+ <name>International Organization for Standardization</name>
154
+ <abbreviation>ISO</abbreviation>
155
+ </organization>
156
+ </contributor>
157
+ <language>en</language>
158
+ <script>Latn</script>
159
+ <status>
160
+ <stage abbreviation="IS">60</stage>
161
+ <substage>60</substage>
162
+ </status>
163
+ <copyright>
164
+ <from>#{Time.new.year}</from>
165
+ <owner>
166
+ <organization>
167
+ <name>International Organization for Standardization</name>
168
+ <abbreviation>ISO</abbreviation>
169
+ </organization>
170
+ </owner>
171
+ </copyright>
172
+ <ext>
173
+ <doctype>article</doctype>
174
+ <editorialgroup>
175
+ <technical-committee/>
176
+ <subcommittee/>
177
+ <workgroup/>
178
+ </editorialgroup>
179
+ <stagename>International standard</stagename>
180
+ </ext>
181
+ </bibdata>
172
182
  HDR
173
183
 
174
- BLANK_HDR = <<~"HDR"
175
- #{BLANK_HDR1}
176
- #{BOILERPLATE}
184
+ BLANK_HDR = <<~"HDR".freeze
185
+ #{BLANK_HDR1}
186
+ #{BOILERPLATE}
177
187
  HDR
178
188
 
179
- BLANK_HDR_FR = <<~"HDR"
180
- #{BLANK_HDR1.sub(%r{<language>en</language>}, "<language>fr</language>")}
181
- #{BOILERPLATE_FR}
189
+ BLANK_HDR_FR = <<~"HDR".freeze
190
+ #{BLANK_HDR1.sub(%r{<language>en</language>}, '<language>fr</language>')}
191
+ #{BOILERPLATE_FR}
182
192
  HDR
183
193
 
184
- TERM_BOILERPLATE = <<~END
194
+ TERM_BOILERPLATE = <<~TERM.freeze
185
195
  <p id="_">For the purposes of this document,
186
196
  the following terms and definitions apply.</p>
187
- <p id="_">ISO and IEC maintain terminological databases for use in
188
- standardization at the following addresses:</p>
189
-
190
- <ul id="_">
191
- <li> <p id="_">ISO Online browsing platform: available at
192
- <link target="http://www.iso.org/obp"/></p> </li>
193
- <li> <p id="_">IEC Electropedia: available at
194
- <link target="http://www.electropedia.org"/>
195
- </p> </li> </ul>
196
- END
197
-
198
- HTML_HDR = <<~END
199
- <html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
200
- <head/>
201
- <body lang="en">
202
- <div class="title-section">
203
- <p>&#160;</p>
204
- </div>
205
- <br/>
206
- <div class="prefatory-section">
207
- <p>&#160;</p>
208
- </div>
209
- <br/>
210
- <div class="main-section">
211
- END
212
-
213
- WORD_HDR = <<~END
214
- <html xmlns:epub="http://www.idpf.org/2007/ops">
215
- <head>
216
- <title>test</title>
217
- </head>
218
- <body lang="EN-US" link="blue" vlink="#954F72">
219
- <div class="WordSection1">
220
- <p>&#160;</p>
221
- </div>
222
- <p><br clear="all" class="section"/></p>
223
- <div class="WordSection2">
224
- <p>&#160;</p>
225
- </div>
226
- <p><br clear="all" class="section"/></p>
227
- <div class="WordSection3">
228
- END
229
-
230
-
231
- def stub_fetch_ref(**opts)
232
- xml = ""
233
-
234
- hit = double("hit")
235
- expect(hit).to receive(:"[]").with("title") do
236
- Nokogiri::XML(xml).at("//docidentifier").content
237
- end.at_least(:once)
238
-
239
- hit_instance = double("hit_instance")
240
- expect(hit_instance).to receive(:hit).and_return(hit).at_least(:once)
241
- expect(hit_instance).to receive(:to_xml) do |builder, opt|
242
- expect(builder).to be_instance_of Nokogiri::XML::Builder
243
- expect(opt).to eq opts
244
- builder << xml
245
- end.at_least :once
197
+ <p id="_">ISO and IEC maintain terminological databases for use in
198
+ standardization at the following addresses:</p>
199
+
200
+ <ul id="_">
201
+ <li>
202
+ <p id="_">ISO Online browsing platform: available at
203
+ <link target="http://www.iso.org/obp"/></p>
204
+ </li>
205
+ <li>
206
+ <p id="_">IEC Electropedia: available at
207
+ <link target="http://www.electropedia.org"/>
208
+ </p>
209
+ </li>
210
+ </ul>
211
+ TERM
212
+
213
+ HTML_HDR = <<~HDR.freeze
214
+ <html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
215
+ <head/>
216
+ <body lang="en">
217
+ <div class="title-section">
218
+ <p>&#160;</p>
219
+ </div>
220
+ <br/>
221
+ <div class="prefatory-section">
222
+ <p>&#160;</p>
223
+ </div>
224
+ <br/>
225
+ <div class="main-section">
226
+ HDR
246
227
 
247
- hit_page = double("hit_page")
248
- expect(hit_page).to receive(:first).and_return(hit_instance).at_least :once
228
+ WORD_HDR = <<~HDR.freeze
229
+ <html xmlns:epub="http://www.idpf.org/2007/ops">
230
+ <head>
231
+ <title>test</title>
232
+ </head>
233
+ <body lang="EN-US" link="blue" vlink="#954F72">
234
+ <div class="WordSection1">
235
+ <p>&#160;</p>
236
+ </div>
237
+ <p><br clear="all" class="section"/></p>
238
+ <div class="WordSection2">
239
+ <p>&#160;</p>
240
+ </div>
241
+ <p><br clear="all" class="section"/></p>
242
+ <div class="WordSection3">
243
+ HDR
249
244
 
250
- hit_pages = double("hit_pages")
251
- expect(hit_pages).to receive(:first).and_return(hit_page).at_least :once
245
+ OPTIONS = [backend: :iso, header_footer: true].freeze
252
246
 
253
- expect(Isobib::IsoBibliography).to receive(:search).
254
- and_wrap_original do |search, *args|
255
- code = args[0]
256
- expect(code).to be_instance_of String
257
- xml = get_xml(search, code, opts)
258
- hit_pages
259
- end.at_least :once
247
+ def mock_pdf
248
+ allow(::Mn2pdf).to receive(:convert) do |url, output,|
249
+ FileUtils.cp(url.gsub(/"/, ""), output.gsub(/"/, ""))
250
+ end
251
+ end
252
+
253
+ def mock_sts
254
+ allow(::Mn2sts).to receive(:convert) do |url, output,|
255
+ FileUtils.cp(url.gsub(/"/, ""), output.gsub(/"/, ""))
256
+ end
260
257
  end
261
258
 
262
259
  private
263
260
 
264
261
  def get_xml(search, code, opts)
265
- c = code.gsub(%r{[\/\s:-]}, "_").sub(%r{_+$}, "").downcase
262
+ c = code.gsub(%r{[/\s:-]}, "_").sub(%r{_+$}, "").downcase
266
263
  o = opts.keys.join "_"
267
264
  file = "spec/examples/#{[c, o].join '_'}.xml"
268
265
  if File.exist? file
@@ -277,11 +274,9 @@ def get_xml(search, code, opts)
277
274
  end
278
275
 
279
276
  def mock_open_uri(code)
280
- #expect(OpenURI).to receive(:open_uri).and_wrap_original do |m, *args|
281
277
  expect(Iev).to receive(:get).with(code, "en") do |m, *args|
282
278
  file = "spec/examples/#{code.tr('-', '_')}.html"
283
279
  File.write file, m.call(*args).read unless File.exist? file
284
280
  File.read file
285
281
  end.at_least :once
286
282
  end
287
-