marc 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6944f89278a06152fa5710a34fa3c959d9300bc5
4
- data.tar.gz: 87e131c8dbe524d724062741de10da219d30b83b
2
+ SHA256:
3
+ metadata.gz: 3c354c92026e4cf40c482ef72de120b7aaffac5cbc24e1c369a498bf4519a6ff
4
+ data.tar.gz: b6daa3e964746945d35cae76eb290cbc0b3dc2e5d03eb9d383e5e5aba473c676
5
5
  SHA512:
6
- metadata.gz: 6bae7428d9c5c6c791a8c03687fb48d5ab5d0e3eec2005d8e9637bd6a9202c164b4e0882c6134526a7c64819dca6e7fc5dac17f9797c9891cbd743a1c231a7fc
7
- data.tar.gz: b1420e8c1b7e991f878be77a1331a06bb83206b3a74f70057b8de8a3b579bb4900c0bb111bed7c5a88187241ac8b7dbcc07af4e085a3e07e9e0d0cee3ce7a0a4
6
+ metadata.gz: b49c9c88fb12854317d0f2fc14ce465f261a9ba2db3941f694e690f124063bd905522d9a21e862e777d84992e858839956bd289a275e731be60f638e2b327e89
7
+ data.tar.gz: 22be396099b50aa7dea829b10485e9f4dc0d7d9232470d1db05b56f95815f591f3eebdfdc44af90c6f8f212ddd982814acd5356de8cd9c88e194d54c93f9ba99
data/README.md CHANGED
@@ -56,7 +56,17 @@ Consult the MARC::Reader class docs for a more complete discussion and range of
56
56
 
57
57
  The MARC binary Writer (MARC::Writer) does not have any encoding-related features -- it's up to you the developer to make sure you create MARC::Records with consistent and expected char encodings, although MARC::Writer will write out a legal ISO 2709 either way, it just might have corrupted encodings.
58
58
 
59
-
59
+ When parsing MARCXML _with Nokogiri as your XML parser implementation_ up to
60
+ and including version `1.0.2` of this gem, if the XML was badly formed, parsing
61
+ would stop and no error would be reported to your code.
62
+
63
+ If you are using a version > `1.0.2` of `ruby-marc` with MRI + Nokogiri, XML
64
+ syntax errors will be thrown (and you may need to adjust your code to account
65
+ for this). *JRuby users*: If you are using a version later than `1.0.2` and
66
+ using Nokogiri as an XML parser with JRuby as your ruby implementation, XML
67
+ syntax errors will still be ignored unless you have Nokogiri version `1.10.2`
68
+ or later.
69
+
60
70
  ## Miscellany
61
71
 
62
72
  Source code at: https://github.com/ruby-marc/ruby-marc/
@@ -138,10 +138,10 @@ module MARC
138
138
  # Encoding.default_internal = "utf-8"
139
139
  # MARC::Reader.new( File.new("marc_in_cp866.mrc", "r:cp866") )
140
140
  #
141
- # # However this shoudl be safe:
141
+ # # However this should be safe:
142
142
  # MARC::Reader.new( "marc_in_cp866.mrc", :external_encoding => "cp866")
143
143
  #
144
- # # And this shoudl be safe, if you do want to transcode:
144
+ # # And this should be safe, if you do want to transcode:
145
145
  # MARC::Reader.new( "marc_in_cp866.mrc", :external_encoding => "cp866",
146
146
  # :internal_encoding => "utf-8")
147
147
  #
@@ -1,3 +1,3 @@
1
1
  module MARC
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -1,4 +1,8 @@
1
1
  module MARC
2
+ # Exception class to be thrown when an XML parser
3
+ # encounters an unrecoverable error.
4
+ class XMLParseError < StandardError; end
5
+
2
6
  # The MagicReader will try to use the best available XML Parser at the
3
7
  # time of initialization.
4
8
  # The order is currently:
@@ -112,6 +116,10 @@ module MARC
112
116
  @parser.parse(@handle)
113
117
  end
114
118
  end
119
+
120
+ def error(evt)
121
+ raise(XMLParseError, "XML parsing error: #{evt}")
122
+ end
115
123
 
116
124
 
117
125
  def method_missing(methName, *args)
@@ -413,4 +421,4 @@ end
413
421
  end
414
422
  end # end of module
415
423
  end # end of if jruby
416
- end
424
+ end
@@ -0,0 +1,22 @@
1
+ require 'test/unit'
2
+ require 'marc'
3
+
4
+ class BadXMLHandlingTestCase < Test::Unit::TestCase
5
+
6
+ def test_nokogiri_bad_xml
7
+ begin
8
+ require 'nokogiri'
9
+ rescue LoadError
10
+ omit("nokogiri not installed, cannot test")
11
+ end
12
+ omit("nokogiri (<1.10.2) under jruby doesn't support error handling: sparklemotion/nokogiri#1847") if RUBY_PLATFORM == 'java' && Gem::Version.new(Nokogiri::VERSION) < Gem::Version.new('1.10.2')
13
+ count = 0
14
+ reader = MARC::XMLReader.new('test/three-records-second-bad.xml', :parser => :nokogiri)
15
+ assert_raise MARC::XMLParseError do
16
+ reader.each do |rec|
17
+ count += 1 if rec['260']
18
+ end
19
+ end
20
+ assert_equal(1, count, 'should only be able to parse one record')
21
+ end
22
+ end
@@ -0,0 +1,160 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <collection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/MARC21/slim" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd">
3
+ <record>
4
+ <leader> njm a22 uu 4500</leader>
5
+ <controlfield tag="001">afc99990058366</controlfield>
6
+ <controlfield tag="003">DLC</controlfield>
7
+ <controlfield tag="005">20071104155141.9</controlfield>
8
+ <controlfield tag="007">sd ummunniauub</controlfield>
9
+ <controlfield tag="008">071103s1939 xxufmnne||||||||| u eng||</controlfield>
10
+ <datafield tag="010" ind1=" " ind2=" ">
11
+ <subfield code="a">afc99990058366</subfield>
12
+ </datafield>
13
+ <datafield tag="040" ind1=" " ind2=" ">
14
+ <subfield code="a">DLC</subfield>
15
+ <subfield code="c">DLC</subfield>
16
+ </datafield>
17
+ <datafield tag="245" ind1="0" ind2="4">
18
+ <subfield code="a">The Texas ranger</subfield>
19
+ <subfield code="h">[sound recording] /</subfield>
20
+ <subfield code="c">Sung by Beale D. Taylor.</subfield>
21
+ </datafield>
22
+ <datafield tag="260" ind1=" " ind2=" ">
23
+ <subfield code="a">Medina, Texas,</subfield>
24
+ <subfield code="c">1939.</subfield>
25
+ </datafield>
26
+ <datafield tag="300" ind1=" " ind2=" ">
27
+ <subfield code="a">1 sound disc :</subfield>
28
+ <subfield code="b">analog, 33 1/3 rpm, mono. ;</subfield>
29
+ <subfield code="c">12 in.</subfield>
30
+ </datafield>
31
+ <datafield tag="651" ind1=" " ind2="0">
32
+ <subfield code="a">Medina</subfield>
33
+ <subfield code="z">Texas</subfield>
34
+ <subfield code="z">United States of America.</subfield>
35
+ </datafield>
36
+ <datafield tag="700" ind1="1" ind2=" ">
37
+ <subfield code="a">Lomax, John Avery, 1867-1948</subfield>
38
+ <subfield code="e">Recording engineer.</subfield>
39
+ </datafield>
40
+ <datafield tag="700" ind1="1" ind2=" ">
41
+ <subfield code="a">Lomax, Ruby T. (Ruby Terrill)</subfield>
42
+ <subfield code="e">Recording engineer.</subfield>
43
+ </datafield>
44
+ <datafield tag="700" ind1="1" ind2=" ">
45
+ <subfield code="a">Taylor, Beale D.</subfield>
46
+ <subfield code="e">Singer.</subfield>
47
+ </datafield>
48
+ <datafield tag="852" ind1=" " ind2=" ">
49
+ <subfield code="a">American Folklife Center, Library of Congress</subfield>
50
+ </datafield>
51
+ <datafield tag="852" ind1=" " ind2=" ">
52
+ <subfield code="a">DLC</subfield>
53
+ </datafield>
54
+ </record>
55
+ <record>
56
+ <leader> njm a22 uu 4500</leader>
57
+ <controlfield tag="001">afc99990058366</controlfield>
58
+ <controlfield tag="003">DLC</controlfield>
59
+ <controlfield tag="005">20071104155141.9</controlfield>
60
+ <controlfield tag="007">sd ummunniauub</controlfield>
61
+ <controlfield tag="008">071103s1939 xxufmnne||||||||| u eng||</controlfield>
62
+ <datafield tag="010" ind1=" " ind2=" ">
63
+ <subfield code="a">afc99990058366</subfield>
64
+ </datafield>
65
+ <datafield tag="040" ind1=" " ind2=" ">
66
+ <subfield code="a">DLC</subfield>
67
+ <subfield code="c">DLC</subfield>
68
+ </datafield>
69
+ <datafield tag="245" ind1="0" ind2="4">
70
+ <subfield code="a">The Texas ranger</subfield>
71
+ <!-- invalid utf-8 bytes in the non-printing subfield code -->
72
+ <subfield code="">[sound recording] /</subfield>
73
+ <subfield code="c">Sung by Beale D. Taylor.</subfield>
74
+ </datafield>
75
+ <datafield tag="260" ind1=" " ind2=" ">
76
+ <subfield code="a">Medina, Texas,</subfield>
77
+ <subfield code="c">1939.</subfield>
78
+ </datafield>
79
+ <datafield tag="300" ind1=" " ind2=" ">
80
+ <subfield code="a">1 sound disc :</subfield>
81
+ <subfield code="b">analog, 33 1/3 rpm, mono. ;</subfield>
82
+ <subfield code="c">12 in.</subfield>
83
+ </datafield>
84
+ <datafield tag="651" ind1=" " ind2="0">
85
+ <subfield code="a">Medina</subfield>
86
+ <subfield code="z">Texas</subfield>
87
+ <subfield code="z">United States of America.</subfield>
88
+ </datafield>
89
+ <datafield tag="700" ind1="1" ind2=" ">
90
+ <subfield code="a">Lomax, John Avery, 1867-1948</subfield>
91
+ <subfield code="e">Recording engineer.</subfield>
92
+ </datafield>
93
+ <datafield tag="700" ind1="1" ind2=" ">
94
+ <subfield code="a">Lomax, Ruby T. (Ruby Terrill)</subfield>
95
+ <subfield code="e">Recording engineer.</subfield>
96
+ </datafield>
97
+ <datafield tag="700" ind1="1" ind2=" ">
98
+ <subfield code="a">Taylor, Beale D.</subfield>
99
+ <subfield code="e">Singer.</subfield>
100
+ </datafield>
101
+ <datafield tag="852" ind1=" " ind2=" ">
102
+ <subfield code="a">American Folklife Center, Library of Congress</subfield>
103
+ </datafield>
104
+ <datafield tag="852" ind1=" " ind2=" ">
105
+ <subfield code="a">DLC</subfield>
106
+ </datafield>
107
+ </record>
108
+ <record>
109
+ <leader> njm a22 uu 4500</leader>
110
+ <controlfield tag="001">afc99990058366</controlfield>
111
+ <controlfield tag="003">DLC</controlfield>
112
+ <controlfield tag="005">20071104155141.9</controlfield>
113
+ <controlfield tag="007">sd ummunniauub</controlfield>
114
+ <controlfield tag="008">071103s1939 xxufmnne||||||||| u eng||</controlfield>
115
+ <datafield tag="010" ind1=" " ind2=" ">
116
+ <subfield code="a">afc99990058366</subfield>
117
+ </datafield>
118
+ <datafield tag="040" ind1=" " ind2=" ">
119
+ <subfield code="a">DLC</subfield>
120
+ <subfield code="c">DLC</subfield>
121
+ </datafield>
122
+ <datafield tag="245" ind1="0" ind2="4">
123
+ <subfield code="a">The Texas ranger</subfield>
124
+ <subfield code="h">[sound recording] /</subfield>
125
+ <subfield code="c">Sung by Beale D. Taylor.</subfield>
126
+ </datafield>
127
+ <datafield tag="260" ind1=" " ind2=" ">
128
+ <subfield code="a">Medina, Texas,</subfield>
129
+ <subfield code="c">1939.</subfield>
130
+ </datafield>
131
+ <datafield tag="300" ind1=" " ind2=" ">
132
+ <subfield code="a">1 sound disc :</subfield>
133
+ <subfield code="b">analog, 33 1/3 rpm, mono. ;</subfield>
134
+ <subfield code="c">12 in.</subfield>
135
+ </datafield>
136
+ <datafield tag="651" ind1=" " ind2="0">
137
+ <subfield code="a">Medina</subfield>
138
+ <subfield code="z">Texas</subfield>
139
+ <subfield code="z">United States of America.</subfield>
140
+ </datafield>
141
+ <datafield tag="700" ind1="1" ind2=" ">
142
+ <subfield code="a">Lomax, John Avery, 1867-1948</subfield>
143
+ <subfield code="e">Recording engineer.</subfield>
144
+ </datafield>
145
+ <datafield tag="700" ind1="1" ind2=" ">
146
+ <subfield code="a">Lomax, Ruby T. (Ruby Terrill)</subfield>
147
+ <subfield code="e">Recording engineer.</subfield>
148
+ </datafield>
149
+ <datafield tag="700" ind1="1" ind2=" ">
150
+ <subfield code="a">Taylor, Beale D.</subfield>
151
+ <subfield code="e">Singer.</subfield>
152
+ </datafield>
153
+ <datafield tag="852" ind1=" " ind2=" ">
154
+ <subfield code="a">American Folklife Center, Library of Congress</subfield>
155
+ </datafield>
156
+ <datafield tag="852" ind1=" " ind2=" ">
157
+ <subfield code="a">DLC</subfield>
158
+ </datafield>
159
+ </record>
160
+ </collection>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Clarke
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire: marc
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2017-08-01 00:00:00.000000000 Z
16
+ date: 2019-03-27 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: scrub_rb
@@ -106,6 +106,8 @@ files:
106
106
  - test/tc_subfield.rb
107
107
  - test/tc_writer.rb
108
108
  - test/tc_xml.rb
109
+ - test/tc_xml_error_handling.rb
110
+ - test/three-records-second-bad.xml
109
111
  - test/ts_marc.rb
110
112
  - test/utf8.marc
111
113
  - test/utf8_multirecord.marc
@@ -130,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
132
  version: '0'
131
133
  requirements: []
132
134
  rubyforge_project:
133
- rubygems_version: 2.6.8
135
+ rubygems_version: 2.7.6
134
136
  signing_key:
135
137
  specification_version: 4
136
138
  summary: A ruby library for working with Machine Readable Cataloging