marc 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/marc/record.rb CHANGED
@@ -82,13 +82,13 @@ module MARC
82
82
  end
83
83
 
84
84
  # Handy method for returning the MARCXML serialization for a
85
- # MARC::Record object. Really this is just a wrapper around
86
- # MARC::MARCXML::encode
85
+ # MARC::Record object. You'll get back a REXML::Document object.
86
+ # Really this is just a wrapper around MARC::XMLWriter::encode
87
87
  #
88
- # xml = record.to_xml()
88
+ # xml_doc = record.to_xml()
89
89
 
90
90
  def to_xml
91
- return MARC::MARCXML.new().encode(self)
91
+ return MARC::XMLWriter.encode(self)
92
92
  end
93
93
 
94
94
  # Returns a string version of the record, suitable for printing
@@ -6,9 +6,28 @@ module MARC
6
6
  class XMLReader
7
7
  include Enumerable
8
8
 
9
- def initialize(filename)
10
- source = File.new(filename)
11
- @parser = REXML::Parsers::PullParser.new(source)
9
+ # the constructor which you can pass either a filename:
10
+ #
11
+ # reader = MARC::XMLReader.new('/Users/edsu/marc.dat')
12
+ #
13
+ # or a File object,
14
+ #
15
+ # reader = Marc::XMLReader.new(File.new('/Users/edsu/marc.dat'))
16
+ #
17
+ # or really any object that responds to read(n)
18
+ #
19
+ # reader = MARC::XMLReader.new(StringIO.new(xml))
20
+
21
+ def initialize(file)
22
+ if file.class == String:
23
+ handle = File.new(file)
24
+ elsif file.respond_to?("read", 5)
25
+ handle = file
26
+ else
27
+ throw "must pass in path or File"
28
+ end
29
+
30
+ @parser = REXML::Parsers::PullParser.new(handle)
12
31
  end
13
32
 
14
33
  def each
data/test/tc_record.rb CHANGED
@@ -8,6 +8,13 @@ class TestRecord < Test::Unit::TestCase
8
8
  assert_equal(r.class, MARC::Record)
9
9
  end
10
10
 
11
+ def test_xml
12
+ r = get_record()
13
+ doc = r.to_xml
14
+ assert_kind_of REXML::Document, doc
15
+ assert_equal "<record><leader> Z 22 4500</leader><datafield tag='100' ind1='2' ind2='0'><subfield code='a'>Thomas, Dave</subfield></datafield><datafield tag='245' ind1='0' ind2='4'><subfield code='The Pragmatic Programmer'></subfield></datafield></record>", doc.to_s
16
+ end
17
+
11
18
  def test_append_field
12
19
  r = get_record()
13
20
  assert_equal(r.fields.length(), 2)
data/test/tc_xml.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  require 'test/unit'
2
2
  require 'marc'
3
+ require 'stringio'
3
4
 
4
5
  class XMLTest < Test::Unit::TestCase
5
6
 
6
- def otest_batch
7
+ def test_batch
7
8
  reader = MARC::XMLReader.new('test/batch.xml')
8
9
  count = 0
9
10
  for record in reader
@@ -13,6 +14,12 @@ class XMLTest < Test::Unit::TestCase
13
14
  assert_equal(count, 2)
14
15
  end
15
16
 
17
+ def test_read_string
18
+ xml = File.new('test/batch.xml').read
19
+ reader = MARC::XMLReader.new(StringIO.new(xml))
20
+ assert_equal reader.entries.length, 2
21
+ end
22
+
16
23
  def test_read_write
17
24
  record1 = MARC::Record.new
18
25
  record1.leader = '00925njm 22002777a 4500'
@@ -33,5 +40,6 @@ class XMLTest < Test::Unit::TestCase
33
40
 
34
41
  File.unlink('test/test.xml')
35
42
  end
43
+
36
44
  end
37
45
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: marc
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2006-12-06 00:00:00 -05:00
6
+ version: 0.1.2
7
+ date: 2006-12-21 00:00:00 -05:00
8
8
  summary: A ruby library for working with Machine Readable Cataloging
9
9
  require_paths:
10
10
  - lib