metanorma-iso 1.7.0 → 1.8.0

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