rmarc 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +504 -0
- data/lib/rmarc.rb +14 -0
- data/lib/rmarc/constants.rb +43 -0
- data/lib/rmarc/marc_stream_reader.rb +128 -0
- data/lib/rmarc/marc_stream_writer.rb +73 -0
- data/lib/rmarc/marc_xml_reader.rb +137 -0
- data/lib/rmarc/marc_xml_writer.rb +88 -0
- data/lib/rmarc/model/control_field.rb +42 -0
- data/lib/rmarc/model/data_field.rb +68 -0
- data/lib/rmarc/model/directory.rb +36 -0
- data/lib/rmarc/model/leader.rb +65 -0
- data/lib/rmarc/model/record.rb +64 -0
- data/lib/rmarc/model/subfield.rb +39 -0
- data/lib/rmarc/model/variable_field.rb +38 -0
- data/test/chabon.mrc +1 -0
- data/test/chabon.xml +116 -0
- data/test/summerland.mrc +1 -0
- data/test/summerland.xml +52 -0
- data/test/test_model.rb +78 -0
- data/test/test_reader.rb +50 -0
- data/test/test_writer.rb +56 -0
- metadata +60 -0
data/test/summerland.mrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
00714cam a2200205 a 45000010009000000050017000090080041000260200015000670200022000820400018001041000021001222450034001432500012001772600067001893000021002565200175002776500013004526500023004656500020004881288337620030616111422.0020805s2002 nyu j 000 1 eng a0786808772 a0786816155 (pbk.) aDLCcDLCdDLC1 aChabon, Michael.10aSummerland /cMichael Chabon. a1st ed. aNew York :bMiramax Books/Hyperion Books for Children,cc2002. a500 p. ;c22 cm. aEthan Feld, the worst baseball player in the history of the game, finds himself recruited by a 100-year-old scout to help a band of fairies triumph over an ancient enemy. 1aFantasy. 1aBaseballvFiction. 1aMagicvFiction.
|
data/test/summerland.xml
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim">
|
2
|
+
<record>
|
3
|
+
<leader>00714cam a2200205 a 4500</leader>
|
4
|
+
<controlfield tag="001">12883376</controlfield>
|
5
|
+
<controlfield tag="005">20030616111422.0</controlfield>
|
6
|
+
<controlfield tag="008">020805s2002 nyu j 000 1 eng </controlfield>
|
7
|
+
<datafield tag="020" ind1=" " ind2=" ">
|
8
|
+
<subfield code="a">0786808772</subfield>
|
9
|
+
</datafield>
|
10
|
+
<datafield tag="020" ind1=" " ind2=" ">
|
11
|
+
<subfield code="a">0786816155 (pbk.)</subfield>
|
12
|
+
</datafield>
|
13
|
+
<datafield tag="040" ind1=" " ind2=" ">
|
14
|
+
<subfield code="a">DLC</subfield>
|
15
|
+
<subfield code="c">DLC</subfield>
|
16
|
+
<subfield code="d">DLC</subfield>
|
17
|
+
</datafield>
|
18
|
+
<datafield tag="100" ind1="1" ind2=" ">
|
19
|
+
<subfield code="a">Chabon, Michael.</subfield>
|
20
|
+
</datafield>
|
21
|
+
<datafield tag="245" ind1="1" ind2="0">
|
22
|
+
<subfield code="a">Summerland /</subfield>
|
23
|
+
<subfield code="c">Michael Chabon.</subfield>
|
24
|
+
</datafield>
|
25
|
+
<datafield tag="250" ind1=" " ind2=" ">
|
26
|
+
<subfield code="a">1st ed.</subfield>
|
27
|
+
</datafield>
|
28
|
+
<datafield tag="260" ind1=" " ind2=" ">
|
29
|
+
<subfield code="a">New York :</subfield>
|
30
|
+
<subfield code="b">Miramax Books/Hyperion Books for Children,</subfield>
|
31
|
+
<subfield code="c">c2002.</subfield>
|
32
|
+
</datafield>
|
33
|
+
<datafield tag="300" ind1=" " ind2=" ">
|
34
|
+
<subfield code="a">500 p. ;</subfield>
|
35
|
+
<subfield code="c">22 cm.</subfield>
|
36
|
+
</datafield>
|
37
|
+
<datafield tag="520" ind1=" " ind2=" ">
|
38
|
+
<subfield code="a">Ethan Feld, the worst baseball player in the history of the game, finds himself recruited by a 100-year-old scout to help a band of fairies triumph over an ancient enemy.</subfield>
|
39
|
+
</datafield>
|
40
|
+
<datafield tag="650" ind1=" " ind2="1">
|
41
|
+
<subfield code="a">Fantasy.</subfield>
|
42
|
+
</datafield>
|
43
|
+
<datafield tag="650" ind1=" " ind2="1">
|
44
|
+
<subfield code="a">Baseball</subfield>
|
45
|
+
<subfield code="v">Fiction.</subfield>
|
46
|
+
</datafield>
|
47
|
+
<datafield tag="650" ind1=" " ind2="1">
|
48
|
+
<subfield code="a">Magic</subfield>
|
49
|
+
<subfield code="v">Fiction.</subfield>
|
50
|
+
</datafield>
|
51
|
+
</record>
|
52
|
+
</collection>
|
data/test/test_model.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# $Id: test_model.rb,v 1.1 2005/12/07 19:56:56 bpeters Exp $
|
2
|
+
#
|
3
|
+
# Copyright (c) 2005 Bas Peters
|
4
|
+
#
|
5
|
+
# This file is part of RMARC
|
6
|
+
#
|
7
|
+
# RMARC is free software; you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU Lesser General Public
|
9
|
+
# License as published by the Free Software Foundation; either
|
10
|
+
# version 2.1 of the License, or (at your option) any later version.
|
11
|
+
#
|
12
|
+
# RMARC is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15
|
+
# Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public
|
18
|
+
# License along with RMARC; if not, write to the Free Software
|
19
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
20
|
+
#
|
21
|
+
$: << File.dirname(__FILE__) + "/.." << File.dirname(__FILE__) + "/../lib"
|
22
|
+
|
23
|
+
require 'test/unit'
|
24
|
+
require 'rmarc'
|
25
|
+
|
26
|
+
class TestModel < Test::Unit::TestCase
|
27
|
+
|
28
|
+
def test_control_field
|
29
|
+
field = RMARC::ControlField.new("001", "12883376")
|
30
|
+
assert_equal("001", field.tag)
|
31
|
+
assert_equal("12883376", field.data)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_subfield
|
35
|
+
subfield = RMARC::Subfield.new("a", "Summerland")
|
36
|
+
assert_equal("a", subfield.code)
|
37
|
+
assert_equal("Summerland", subfield.data)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_data_field
|
41
|
+
field = RMARC::DataField.new("245", "1", "0")
|
42
|
+
assert_equal("245", field.tag)
|
43
|
+
assert_equal("1", field.ind1)
|
44
|
+
assert_equal("0", field.ind2)
|
45
|
+
assert_equal(0, field.subfields.length)
|
46
|
+
subfield = RMARC::Subfield.new("a", "Summerland")
|
47
|
+
field.add(subfield)
|
48
|
+
assert_equal(1, field.subfields.length)
|
49
|
+
subfield = RMARC::Subfield.new("c", "Michael Chabon")
|
50
|
+
field.add(subfield)
|
51
|
+
assert_equal(2, field.subfields.length)
|
52
|
+
field.remove(subfield)
|
53
|
+
assert_equal(1, field.subfields.length)
|
54
|
+
assert_equal("a", field.subfields.last.code)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_leader
|
58
|
+
leader = RMARC::Leader.new("00714cam a2200205 a 4500")
|
59
|
+
assert_equal(714, leader.record_length)
|
60
|
+
assert_equal("a", leader.char_coding)
|
61
|
+
assert_equal(205, leader.base_address)
|
62
|
+
assert_equal("00714cam a2200205 a 4500", leader.to_s)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_record
|
66
|
+
record = RMARC::Record.new()
|
67
|
+
assert_equal(0, record.fields.length)
|
68
|
+
field = RMARC::ControlField.new("001", "12883376")
|
69
|
+
record.add(field)
|
70
|
+
assert_equal(1, record.fields.length)
|
71
|
+
field = RMARC::DataField.new("245", "1", "0")
|
72
|
+
record.add(field)
|
73
|
+
assert_equal(2, record.fields.length)
|
74
|
+
record.remove(field)
|
75
|
+
assert_equal("001", record.fields.last.tag)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
data/test/test_reader.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# $Id: test_reader.rb,v 1.1 2005/12/07 19:56:56 bpeters Exp $
|
2
|
+
#
|
3
|
+
# Copyright (c) 2005 Bas Peters
|
4
|
+
#
|
5
|
+
# This file is part of RMARC
|
6
|
+
#
|
7
|
+
# RMARC is free software; you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU Lesser General Public
|
9
|
+
# License as published by the Free Software Foundation; either
|
10
|
+
# version 2.1 of the License, or (at your option) any later version.
|
11
|
+
#
|
12
|
+
# RMARC is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15
|
+
# Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public
|
18
|
+
# License along with RMARC; if not, write to the Free Software
|
19
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
20
|
+
#
|
21
|
+
$: << File.dirname(__FILE__) + "/.." << File.dirname(__FILE__) + "/../lib"
|
22
|
+
|
23
|
+
require 'test/unit'
|
24
|
+
require 'rmarc'
|
25
|
+
|
26
|
+
class TestMarcReader < Test::Unit::TestCase
|
27
|
+
|
28
|
+
def test_parse_marc
|
29
|
+
assert_nothing_raised() {
|
30
|
+
File.open("test/chabon.mrc", "r") do |file|
|
31
|
+
reader = RMARC::MarcStreamReader.new(file)
|
32
|
+
while reader.has_next
|
33
|
+
record = reader.next()
|
34
|
+
end
|
35
|
+
end
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_parse_marc_xml
|
40
|
+
assert_nothing_raised() {
|
41
|
+
File.open("test/chabon.xml", "r") do |file|
|
42
|
+
reader = RMARC::MarcXmlReader.new(file)
|
43
|
+
while reader.has_next
|
44
|
+
record = reader.next()
|
45
|
+
end
|
46
|
+
end
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/test/test_writer.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# $Id: test_writer.rb,v 1.1 2005/12/07 19:56:56 bpeters Exp $
|
2
|
+
#
|
3
|
+
# Copyright (c) 2005 Bas Peters
|
4
|
+
#
|
5
|
+
# This file is part of RMARC
|
6
|
+
#
|
7
|
+
# RMARC is free software; you can redistribute it and/or
|
8
|
+
# modify it under the terms of the GNU Lesser General Public
|
9
|
+
# License as published by the Free Software Foundation; either
|
10
|
+
# version 2.1 of the License, or (at your option) any later version.
|
11
|
+
#
|
12
|
+
# RMARC is distributed in the hope that it will be useful,
|
13
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15
|
+
# Lesser General Public License for more details.
|
16
|
+
#
|
17
|
+
# You should have received a copy of the GNU Lesser General Public
|
18
|
+
# License along with RMARC; if not, write to the Free Software
|
19
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
20
|
+
#
|
21
|
+
$: << File.dirname(__FILE__) + "/.." << File.dirname(__FILE__) + "/../lib"
|
22
|
+
|
23
|
+
require 'test/unit'
|
24
|
+
require 'rmarc'
|
25
|
+
|
26
|
+
class TestMarcWriter < Test::Unit::TestCase
|
27
|
+
|
28
|
+
def test_write_marc
|
29
|
+
assert_nothing_raised() {
|
30
|
+
File.open("test/chabon.mrc", "r") do |file|
|
31
|
+
reader = RMARC::MarcStreamReader.new(file)
|
32
|
+
writer = RMARC::MarcStreamWriter.new(STDOUT)
|
33
|
+
while reader.has_next
|
34
|
+
record = reader.next()
|
35
|
+
writer.write_record(record)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_write_marc_xml
|
42
|
+
assert_nothing_raised() {
|
43
|
+
writer = RMARC::MarcXmlWriter.new(STDOUT)
|
44
|
+
File.open("test/chabon.mrc", "r") do |file|
|
45
|
+
reader = RMARC::MarcStreamReader.new(file)
|
46
|
+
writer.start_document
|
47
|
+
while reader.has_next
|
48
|
+
record = reader.next()
|
49
|
+
writer.write_record(record)
|
50
|
+
end
|
51
|
+
writer.end_document
|
52
|
+
end
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.10
|
3
|
+
specification_version: 1
|
4
|
+
name: rmarc
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2005-12-07
|
8
|
+
summary: RMARC is a library for working with MARC and MARC XML data in Ruby
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: bpeters@rubyforge.org
|
12
|
+
homepage: http://rmarc.rubyforge.org
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
-
|
22
|
+
- ">"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.0.0
|
25
|
+
version:
|
26
|
+
platform: ruby
|
27
|
+
authors:
|
28
|
+
- Bas Peters
|
29
|
+
files:
|
30
|
+
- lib/rmarc
|
31
|
+
- lib/rmarc.rb
|
32
|
+
- lib/rmarc/constants.rb
|
33
|
+
- lib/rmarc/marc_stream_reader.rb
|
34
|
+
- lib/rmarc/marc_stream_writer.rb
|
35
|
+
- lib/rmarc/marc_xml_reader.rb
|
36
|
+
- lib/rmarc/marc_xml_writer.rb
|
37
|
+
- lib/rmarc/model
|
38
|
+
- lib/rmarc/model/control_field.rb
|
39
|
+
- lib/rmarc/model/data_field.rb
|
40
|
+
- lib/rmarc/model/directory.rb
|
41
|
+
- lib/rmarc/model/leader.rb
|
42
|
+
- lib/rmarc/model/record.rb
|
43
|
+
- lib/rmarc/model/subfield.rb
|
44
|
+
- lib/rmarc/model/variable_field.rb
|
45
|
+
- test/chabon.mrc
|
46
|
+
- test/chabon.xml
|
47
|
+
- test/summerland.mrc
|
48
|
+
- test/summerland.xml
|
49
|
+
- test/test_model.rb
|
50
|
+
- test/test_reader.rb
|
51
|
+
- test/test_writer.rb
|
52
|
+
- LICENSE
|
53
|
+
test_files: []
|
54
|
+
rdoc_options: []
|
55
|
+
extra_rdoc_files:
|
56
|
+
- LICENSE
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
requirements: []
|
60
|
+
dependencies: []
|