marc4j4r 1.0.0 → 1.1.0

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.
data/CHANGES CHANGED
@@ -1,3 +1,5 @@
1
+ 1.1
2
+ Added native java method to turn a record into XML (20% speedup or so)
1
3
  1.0
2
4
  Arbitrary decision that this is 1.0
3
5
  Using javamarc.jar (fork of marc4j) from http://github.com/billdueber/javamarc
@@ -5,10 +7,6 @@
5
7
  Added code to Reader#each to deal with #errors object if provided by the
6
8
  specific reader (right now, :permissivemarc and :alephsequential) and specs
7
9
  to test
8
- Added lots of specs
9
- Fixed definition of class-level methods in Record. For some reason (I'm sure having to do with the
10
- fact that they're aliased java classes), using 'def self.to_xml' doesn't work; need to use
11
- 'def Record.to_xml' instead
12
10
  0.9.1
13
11
  Updated to latest marc4j; changes involve character conversion
14
12
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/jars/javamarc.jar CHANGED
Binary file
Binary file
@@ -142,20 +142,13 @@ module MARC4J4R
142
142
 
143
143
  # Return the record as valid MARC-XML
144
144
  # @return String A MARC-XML representation of the record, including the XML header
145
+
145
146
  def to_xml
146
- begin
147
- xml = java.io.StringWriter.new
148
- res = javax.xml.transform.stream.StreamResult.new(xml)
149
- writer = org.marc4j.MarcXmlWriter.new(res)
150
- writer.write(self)
151
- writer.writeEndDocument
152
- return xml.toString
153
- rescue
154
- "Woops! to_xml failed for record #{self['001'].data}: #{$!}"
155
- end
156
- end
147
+ return Java::org.marc4j.MarcXmlWriter.record_to_XML(self)
148
+ end
149
+
157
150
 
158
- def to_marc
151
+ def to_marc
159
152
  begin
160
153
  s = Java::java.io.ByteArrayOutputStream.new
161
154
  writer = org.marc4j.MarcPermissiveStreamWriter.new(s)
@@ -20,7 +20,8 @@ module MARC4J4R
20
20
  if type == :strictmarc
21
21
  return Java::org.marc4j.MarcStreamWriter.new(@handle)
22
22
  elsif type == :marcxml
23
- return Java::org.marc4j.MarcStreamWriter.new(@handle)
23
+ writer = Java::org.marc4j.MarcXmlWriter.new(@handle)
24
+ writer.setUnicodeNormalization(true)
24
25
  else
25
26
  raise ArgumentError.new("#{type} must be :strictmarc or :marcxml")
26
27
  end
@@ -4,7 +4,7 @@ import 'org.marc4j.ErrorHandler'
4
4
 
5
5
  describe "MarcAlephSequentialReader constructor" do
6
6
  before do
7
- @seqfile = 'spec/three.seq'
7
+ @seqfile = "#{DIR}/three.seq"
8
8
  end
9
9
 
10
10
  it "should open a file" do
@@ -20,7 +20,7 @@ end
20
20
 
21
21
  describe "MarcAlephSequentialReader record construction" do
22
22
  before do
23
- seqfile = 'spec/three.seq'
23
+ seqfile = "#{DIR}/three.seq"
24
24
  reader = MARC4J4R::Reader.new(seqfile, :alephsequential)
25
25
  @recs = reader.collect
26
26
 
@@ -65,19 +65,19 @@ describe "MarcAlephSequentialReader error handling" do
65
65
 
66
66
  it "should bail on a bad file" do
67
67
  lambda{
68
- reader = MARC4J4R::Reader.new('spec/dne', :alephsequential)
68
+ reader = MARC4J4R::Reader.new("#{DIR}/doesntexist.seq", :alephsequential)
69
69
  }.should.raise Java::java.io.IOException
70
70
  end
71
71
 
72
72
 
73
73
  it "should fail to read a non-aleph-seq file" do
74
74
  lambda {
75
- reader = MARC4J4R::Reader.new('spec/batch.xml', :alephsequential)
75
+ reader = MARC4J4R::Reader.new("#{DIR}/batch.xml", :alephsequential)
76
76
  }.should.raise Java::org.marc4j.MarcException
77
77
  end
78
78
 
79
79
  it "should produce a minor error for bad indicators" do
80
- reader = MARC4J4R::Reader.new('spec/errors.seq', :alephsequential)
80
+ reader = MARC4J4R::Reader.new("#{DIR}/errors.seq", :alephsequential)
81
81
  r = reader.next
82
82
  err = reader.errors.getErrors
83
83
  e = err[0]
@@ -89,7 +89,7 @@ describe "MarcAlephSequentialReader error handling" do
89
89
  end
90
90
 
91
91
  it "should produce a major error for poorly-formed variable field" do
92
- reader = MARC4J4R::Reader.new('spec/errors.seq', :alephsequential)
92
+ reader = MARC4J4R::Reader.new("#{DIR}/errors.seq", :alephsequential)
93
93
  r = reader.next
94
94
  r = reader.next # second record
95
95
  err = reader.errors.getErrors
data/spec/record_spec.rb CHANGED
@@ -117,4 +117,9 @@ describe "MARC4J4R::Record #find_by_tag" do
117
117
  MARC4J4R::Record.from_string(@one.to_marc).should.equal @one
118
118
  MARC4J4R::Record.from_xml_string(@one.to_xml).should.equal @one
119
119
  end
120
+
121
+ it "round trips xml with the native_to_xml" do
122
+ MARC4J4R::Record.from_xml_string(@one.native_to_xml).should.equal @one
123
+ end
124
+
120
125
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marc4j4r
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 1.0.0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - BillDueber
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-04 00:00:00 -04:00
18
+ date: 2010-09-16 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -61,6 +61,7 @@ files:
61
61
  - Rakefile
62
62
  - VERSION
63
63
  - jars/javamarc.jar
64
+ - jars/marc4j_serializations.jar
64
65
  - lib/marc4j4r.rb
65
66
  - lib/marc4j4r/controlfield.rb
66
67
  - lib/marc4j4r/datafield.rb