metanorma-iso 1.7.1 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) 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 +18 -16
  6. data/lib/asciidoctor/iso/biblio.rng +4 -6
  7. data/lib/asciidoctor/iso/cleanup.rb +28 -24
  8. data/lib/asciidoctor/iso/front.rb +26 -16
  9. data/lib/asciidoctor/iso/front_id.rb +30 -25
  10. data/lib/asciidoctor/iso/isodoc.rng +172 -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 +22 -109
  14. data/lib/asciidoctor/iso/validate_image.rb +97 -0
  15. data/lib/asciidoctor/iso/validate_requirements.rb +26 -20
  16. data/lib/asciidoctor/iso/validate_section.rb +39 -20
  17. data/lib/asciidoctor/iso/validate_style.rb +36 -24
  18. data/lib/asciidoctor/iso/validate_title.rb +23 -17
  19. data/lib/isodoc/iso/base_convert.rb +19 -2
  20. data/lib/isodoc/iso/html/style-human.css +7 -0
  21. data/lib/isodoc/iso/html/style-iso.css +7 -0
  22. data/lib/isodoc/iso/html_convert.rb +0 -1
  23. data/lib/isodoc/iso/i18n-en.yaml +4 -0
  24. data/lib/isodoc/iso/i18n-fr.yaml +4 -0
  25. data/lib/isodoc/iso/i18n-zh-Hans.yaml +4 -0
  26. data/lib/isodoc/iso/index.rb +140 -0
  27. data/lib/isodoc/iso/iso.amendment.xsl +1092 -208
  28. data/lib/isodoc/iso/iso.international-standard.xsl +1092 -208
  29. data/lib/isodoc/iso/presentation_xml_convert.rb +45 -37
  30. data/lib/isodoc/iso/word_convert.rb +0 -1
  31. data/lib/isodoc/iso/xref.rb +15 -7
  32. data/lib/metanorma/iso/processor.rb +1 -0
  33. data/lib/metanorma/iso/version.rb +1 -1
  34. data/metanorma-iso.gemspec +8 -8
  35. data/spec/asciidoctor/amd_spec.rb +696 -0
  36. data/spec/asciidoctor/base_spec.rb +733 -0
  37. data/spec/asciidoctor/blocks_spec.rb +527 -0
  38. data/spec/asciidoctor/cleanup_spec.rb +1134 -0
  39. data/spec/asciidoctor/inline_spec.rb +195 -0
  40. data/spec/asciidoctor/lists_spec.rb +197 -0
  41. data/spec/asciidoctor/refs_spec.rb +375 -0
  42. data/spec/asciidoctor/section_spec.rb +393 -0
  43. data/spec/asciidoctor/table_spec.rb +329 -0
  44. data/spec/asciidoctor/validate_spec.rb +1627 -0
  45. data/spec/isodoc/amd_spec.rb +967 -946
  46. data/spec/isodoc/blocks_spec.rb +530 -507
  47. data/spec/isodoc/i18n_spec.rb +953 -911
  48. data/spec/isodoc/inline_spec.rb +355 -293
  49. data/spec/isodoc/iso_spec.rb +338 -314
  50. data/spec/isodoc/metadata_spec.rb +392 -382
  51. data/spec/isodoc/postproc_spec.rb +836 -657
  52. data/spec/isodoc/ref_spec.rb +374 -331
  53. data/spec/isodoc/section_spec.rb +821 -519
  54. data/spec/isodoc/table_spec.rb +472 -411
  55. data/spec/isodoc/terms_spec.rb +209 -185
  56. data/spec/isodoc/xref_spec.rb +1370 -1236
  57. data/spec/metanorma/processor_spec.rb +28 -26
  58. data/spec/spec_helper.rb +178 -193
  59. metadata +65 -66
  60. data/.rubocop.ribose.yml +0 -66
  61. data/lib/isodoc/iso/html/scripts.html +0 -178
  62. data/spec/asciidoctor-iso/amd_spec.rb +0 -694
  63. data/spec/asciidoctor-iso/base_spec.rb +0 -713
  64. data/spec/asciidoctor-iso/blocks_spec.rb +0 -482
  65. data/spec/asciidoctor-iso/cleanup_spec.rb +0 -1025
  66. data/spec/asciidoctor-iso/inline_spec.rb +0 -170
  67. data/spec/asciidoctor-iso/lists_spec.rb +0 -190
  68. data/spec/asciidoctor-iso/refs_spec.rb +0 -317
  69. data/spec/asciidoctor-iso/section_spec.rb +0 -362
  70. data/spec/asciidoctor-iso/table_spec.rb +0 -313
  71. data/spec/asciidoctor-iso/validate_spec.rb +0 -1621
  72. 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,250 +23,237 @@ 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
246
-
247
- hit_page = double("hit_page")
248
- expect(hit_page).to receive(:first).and_return(hit_instance).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
249
229
 
250
- hit_pages = double("hit_pages")
251
- expect(hit_pages).to receive(:first).and_return(hit_page).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
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
260
- end
247
+ OPTIONS = [backend: :iso, header_footer: true].freeze
261
248
 
262
249
  def mock_pdf
263
- allow(::Mn2pdf).to receive(:convert) do |url, output, c, d|
250
+ allow(::Mn2pdf).to receive(:convert) do |url, output,|
264
251
  FileUtils.cp(url.gsub(/"/, ""), output.gsub(/"/, ""))
265
252
  end
266
253
  end
267
254
 
268
255
  def mock_sts
269
- allow(::Mn2sts).to receive(:convert) do |url, output, c, d|
256
+ allow(::Mn2sts).to receive(:convert) do |url, output,|
270
257
  FileUtils.cp(url.gsub(/"/, ""), output.gsub(/"/, ""))
271
258
  end
272
259
  end
@@ -274,7 +261,7 @@ end
274
261
  private
275
262
 
276
263
  def get_xml(search, code, opts)
277
- c = code.gsub(%r{[\/\s:-]}, "_").sub(%r{_+$}, "").downcase
264
+ c = code.gsub(%r{[/\s:-]}, "_").sub(%r{_+$}, "").downcase
278
265
  o = opts.keys.join "_"
279
266
  file = "spec/examples/#{[c, o].join '_'}.xml"
280
267
  if File.exist? file
@@ -289,11 +276,9 @@ def get_xml(search, code, opts)
289
276
  end
290
277
 
291
278
  def mock_open_uri(code)
292
- #expect(OpenURI).to receive(:open_uri).and_wrap_original do |m, *args|
293
279
  expect(Iev).to receive(:get).with(code, "en") do |m, *args|
294
280
  file = "spec/examples/#{code.tr('-', '_')}.html"
295
281
  File.write file, m.call(*args).read unless File.exist? file
296
282
  File.read file
297
283
  end.at_least :once
298
284
  end
299
-