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
@@ -0,0 +1,42 @@
|
|
1
|
+
# $Id: control_field.rb,v 1.3 2005/12/05 19:36:41 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
|
+
require 'rmarc/model/variable_field'
|
22
|
+
|
23
|
+
module RMARC
|
24
|
+
|
25
|
+
# Represents a control field in a MARC record.
|
26
|
+
class ControlField < VariableField
|
27
|
+
attr_reader :data
|
28
|
+
|
29
|
+
attr_writer :data
|
30
|
+
|
31
|
+
def initialize(tag, data = nil)
|
32
|
+
super(tag)
|
33
|
+
@data = data
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns a string representaiton for a conctrol field.
|
37
|
+
def to_s
|
38
|
+
super + "#@data"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
## $Id: data_field.rb,v 1.3 2005/12/05 19:37:09 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
|
+
require 'rmarc/model/variable_field'
|
22
|
+
|
23
|
+
module RMARC
|
24
|
+
|
25
|
+
# Represents a data field in a MARC record. The module Enumerable is
|
26
|
+
# mixed in to enable searching within subfields using each.
|
27
|
+
class DataField < VariableField
|
28
|
+
include Enumerable
|
29
|
+
|
30
|
+
attr_reader :ind1, :ind2, :subfields
|
31
|
+
|
32
|
+
attr_writer :ind1, :ind2, :subfields
|
33
|
+
|
34
|
+
def initialize(tag, ind1, ind2)
|
35
|
+
super(tag)
|
36
|
+
@ind1 = ind1
|
37
|
+
@ind2 = ind2
|
38
|
+
@subfields = Array.new
|
39
|
+
end
|
40
|
+
|
41
|
+
# Adds a subfield.
|
42
|
+
def add(subf)
|
43
|
+
@subfields.push(subf)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Removes a subfield
|
47
|
+
def remove(subf)
|
48
|
+
@subfields.delete(subf)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Implements Enumarable.each to provide an iterator over all
|
52
|
+
# subfields.
|
53
|
+
def each
|
54
|
+
for subfield in @subfields
|
55
|
+
yield subfield
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns a string representation of the data field.
|
60
|
+
def to_s
|
61
|
+
a = ""
|
62
|
+
a << super << @ind1 << @ind2
|
63
|
+
subfields.each { |s| a << s.to_s }
|
64
|
+
return a
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# $Id: directory.rb,v 1.3 2005/12/05 19:36:41 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
|
+
module RMARC
|
22
|
+
|
23
|
+
# Represents a directory in a MARC record.
|
24
|
+
class Directory
|
25
|
+
attr_reader :tag, :length, :start
|
26
|
+
|
27
|
+
attr_writer :tag, :length, :start
|
28
|
+
|
29
|
+
def initialize(tag, length, start)
|
30
|
+
@tag = tag
|
31
|
+
@length = length.to_i
|
32
|
+
@start = start.to_i
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# $Id: leader.rb,v 1.4 2005/12/07 19:50:35 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
|
+
module RMARC
|
22
|
+
|
23
|
+
# Represents a leader or record label in a MARC record.
|
24
|
+
class Leader
|
25
|
+
|
26
|
+
attr_reader :record_length, :record_status, :record_type, :impl_defined1, :char_coding, :indicator_count, :subfield_code_length, :base_address, :impl_defined2, :entry_map
|
27
|
+
|
28
|
+
attr_writer :record_length, :record_status, :record_type, :impl_defined1, :char_coding, :indicator_count, :subfield_code_length, :base_address, :impl_defined2, :entry_map
|
29
|
+
|
30
|
+
def initialize(ldr = nil)
|
31
|
+
if (ldr == nil)
|
32
|
+
@record_length = 0
|
33
|
+
@record_status = "n"
|
34
|
+
@record_type = "a"
|
35
|
+
@impl_defined1 = "m "
|
36
|
+
@char_coding = " "
|
37
|
+
@indicator_count = "2"
|
38
|
+
@subfield_code_length = "2"
|
39
|
+
@base_address = 0
|
40
|
+
@impl_defined2 = "a "
|
41
|
+
@entry_map = "4500"
|
42
|
+
else
|
43
|
+
@record_length = ldr[0,5].to_i
|
44
|
+
@record_status = ldr[5].chr
|
45
|
+
@record_type = ldr[6].chr
|
46
|
+
@impl_defined1 = ldr[7,2].to_s
|
47
|
+
@char_coding = ldr[9].chr
|
48
|
+
@indicator_count = ldr[10].chr
|
49
|
+
@subfield_code_length = ldr[11].chr
|
50
|
+
@base_address = ldr[12,5].to_i
|
51
|
+
@impl_defined2 = ldr[17,3].to_s
|
52
|
+
@entry_map = ldr[20,4].to_s
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns a string representation for a MARC record.
|
57
|
+
def to_s
|
58
|
+
"%05d" % @record_length +
|
59
|
+
"#@record_status#@record_type#@impl_defined1#@char_coding" +
|
60
|
+
"#@indicator_count#@subfield_code_length" +
|
61
|
+
"%05d" % @base_address + "#@impl_defined2#@entry_map"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# $Id: record.rb,v 1.3 2005/12/05 19:37:09 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
|
+
module RMARC
|
22
|
+
|
23
|
+
# Represents a MARC record. The module Enumerable is
|
24
|
+
# mixed in to enable searching within variable fields
|
25
|
+
# using each.
|
26
|
+
class Record
|
27
|
+
include Enumerable
|
28
|
+
|
29
|
+
attr_reader :leader, :fields
|
30
|
+
|
31
|
+
attr_writer :leader, :fields
|
32
|
+
|
33
|
+
def initialize(leader = nil)
|
34
|
+
@leader = leader
|
35
|
+
@fields = Array.new
|
36
|
+
end
|
37
|
+
|
38
|
+
# Adds a field.
|
39
|
+
def add(fld)
|
40
|
+
@fields.push(fld)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Removes a field.
|
44
|
+
def remove(fld)
|
45
|
+
@fields.delete(fld)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Implements Enumarable.each to provide an iterator over all
|
49
|
+
# variable fields.
|
50
|
+
def each
|
51
|
+
for field in @fields
|
52
|
+
yield field
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Returns a string representation of the record.
|
57
|
+
def to_s
|
58
|
+
a = "Leader: #{@leader.to_s}\n"
|
59
|
+
@fields.each { |f| a << "#{f.to_s}\n" }
|
60
|
+
return a
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# $Id: subfield.rb,v 1.3 2005/12/05 19:36:41 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
|
+
module RMARC
|
22
|
+
|
23
|
+
# Represents a subfield in a MARC record.
|
24
|
+
class Subfield
|
25
|
+
attr_reader :code, :data
|
26
|
+
|
27
|
+
attr_writer :code, :data
|
28
|
+
|
29
|
+
def initialize(code, data = nil)
|
30
|
+
@code = code
|
31
|
+
@data = data
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_s
|
35
|
+
"$#@code#@data"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# $Id: variable_field.rb,v 1.3 2005/12/05 19:36:41 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
|
+
module RMARC
|
22
|
+
|
23
|
+
# Represents a variable field in a MARC record.
|
24
|
+
class VariableField
|
25
|
+
attr_reader :tag
|
26
|
+
|
27
|
+
attr_writer :tag
|
28
|
+
|
29
|
+
def initialize(tag)
|
30
|
+
@tag = tag
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_s
|
34
|
+
"#@tag "
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
data/test/chabon.mrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
00759cam a2200229 a 45000010009000000050017000090080041000260200033000670400018001001000021001182450078001392600038002173000021002556500052002766500035003286500030003636510030003936500024004236500026004476550029004736550027005021193987620041229190604.0000313s2000 nyu 000 1 eng a0679450041 (acid-free paper) aDLCcDLCdDLC1 aChabon, Michael.14aThe amazing adventures of Kavalier and Clay :ba novel /cMichael Chabon. aNew York :bRandom House,cc2000. a639 p. ;c25 cm. 0aComic books, strips, etc.xAuthorshipvFiction. 0aHeroes in mass mediavFiction. 0aCzech AmericansvFiction. 0aNew York (N.Y.)vFiction. 0aYoung menvFiction. 0aCartoonistsvFiction. 7aHumorous stories.2gsafd 7aBildungsromane.2gsafd00714cam 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/chabon.xml
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim">
|
2
|
+
<record>
|
3
|
+
<leader>00759cam a2200229 a 4500</leader>
|
4
|
+
<controlfield tag="001">11939876</controlfield>
|
5
|
+
<controlfield tag="005">20041229190604.0</controlfield>
|
6
|
+
<controlfield tag="008">000313s2000 nyu 000 1 eng </controlfield>
|
7
|
+
<datafield tag="020" ind1=" " ind2=" ">
|
8
|
+
<subfield code="a">0679450041 (acid-free paper)</subfield>
|
9
|
+
</datafield>
|
10
|
+
<datafield tag="040" ind1=" " ind2=" ">
|
11
|
+
<subfield code="a">DLC</subfield>
|
12
|
+
<subfield code="c">DLC</subfield>
|
13
|
+
<subfield code="d">DLC</subfield>
|
14
|
+
</datafield>
|
15
|
+
<datafield tag="100" ind1="1" ind2=" ">
|
16
|
+
<subfield code="a">Chabon, Michael.</subfield>
|
17
|
+
</datafield>
|
18
|
+
<datafield tag="245" ind1="1" ind2="4">
|
19
|
+
<subfield code="a">The amazing adventures of Kavalier and Clay :</subfield>
|
20
|
+
<subfield code="b">a novel /</subfield>
|
21
|
+
<subfield code="c">Michael Chabon.</subfield>
|
22
|
+
</datafield>
|
23
|
+
<datafield tag="260" ind1=" " ind2=" ">
|
24
|
+
<subfield code="a">New York :</subfield>
|
25
|
+
<subfield code="b">Random House,</subfield>
|
26
|
+
<subfield code="c">c2000.</subfield>
|
27
|
+
</datafield>
|
28
|
+
<datafield tag="300" ind1=" " ind2=" ">
|
29
|
+
<subfield code="a">639 p. ;</subfield>
|
30
|
+
<subfield code="c">25 cm.</subfield>
|
31
|
+
</datafield>
|
32
|
+
<datafield tag="650" ind1=" " ind2="0">
|
33
|
+
<subfield code="a">Comic books, strips, etc.</subfield>
|
34
|
+
<subfield code="x">Authorship</subfield>
|
35
|
+
<subfield code="v">Fiction.</subfield>
|
36
|
+
</datafield>
|
37
|
+
<datafield tag="650" ind1=" " ind2="0">
|
38
|
+
<subfield code="a">Heroes in mass media</subfield>
|
39
|
+
<subfield code="v">Fiction.</subfield>
|
40
|
+
</datafield>
|
41
|
+
<datafield tag="650" ind1=" " ind2="0">
|
42
|
+
<subfield code="a">Czech Americans</subfield>
|
43
|
+
<subfield code="v">Fiction.</subfield>
|
44
|
+
</datafield>
|
45
|
+
<datafield tag="651" ind1=" " ind2="0">
|
46
|
+
<subfield code="a">New York (N.Y.)</subfield>
|
47
|
+
<subfield code="v">Fiction.</subfield>
|
48
|
+
</datafield>
|
49
|
+
<datafield tag="650" ind1=" " ind2="0">
|
50
|
+
<subfield code="a">Young men</subfield>
|
51
|
+
<subfield code="v">Fiction.</subfield>
|
52
|
+
</datafield>
|
53
|
+
<datafield tag="650" ind1=" " ind2="0">
|
54
|
+
<subfield code="a">Cartoonists</subfield>
|
55
|
+
<subfield code="v">Fiction.</subfield>
|
56
|
+
</datafield>
|
57
|
+
<datafield tag="655" ind1=" " ind2="7">
|
58
|
+
<subfield code="a">Humorous stories.</subfield>
|
59
|
+
<subfield code="2">gsafd</subfield>
|
60
|
+
</datafield>
|
61
|
+
<datafield tag="655" ind1=" " ind2="7">
|
62
|
+
<subfield code="a">Bildungsromane.</subfield>
|
63
|
+
<subfield code="2">gsafd</subfield>
|
64
|
+
</datafield>
|
65
|
+
</record>
|
66
|
+
<record>
|
67
|
+
<leader>00714cam a2200205 a 4500</leader>
|
68
|
+
<controlfield tag="001">12883376</controlfield>
|
69
|
+
<controlfield tag="005">20030616111422.0</controlfield>
|
70
|
+
<controlfield tag="008">020805s2002 nyu j 000 1 eng </controlfield>
|
71
|
+
<datafield tag="020" ind1=" " ind2=" ">
|
72
|
+
<subfield code="a">0786808772</subfield>
|
73
|
+
</datafield>
|
74
|
+
<datafield tag="020" ind1=" " ind2=" ">
|
75
|
+
<subfield code="a">0786816155 (pbk.)</subfield>
|
76
|
+
</datafield>
|
77
|
+
<datafield tag="040" ind1=" " ind2=" ">
|
78
|
+
<subfield code="a">DLC</subfield>
|
79
|
+
<subfield code="c">DLC</subfield>
|
80
|
+
<subfield code="d">DLC</subfield>
|
81
|
+
</datafield>
|
82
|
+
<datafield tag="100" ind1="1" ind2=" ">
|
83
|
+
<subfield code="a">Chabon, Michael.</subfield>
|
84
|
+
</datafield>
|
85
|
+
<datafield tag="245" ind1="1" ind2="0">
|
86
|
+
<subfield code="a">Summerland /</subfield>
|
87
|
+
<subfield code="c">Michael Chabon.</subfield>
|
88
|
+
</datafield>
|
89
|
+
<datafield tag="250" ind1=" " ind2=" ">
|
90
|
+
<subfield code="a">1st ed.</subfield>
|
91
|
+
</datafield>
|
92
|
+
<datafield tag="260" ind1=" " ind2=" ">
|
93
|
+
<subfield code="a">New York :</subfield>
|
94
|
+
<subfield code="b">Miramax Books/Hyperion Books for Children,</subfield>
|
95
|
+
<subfield code="c">c2002.</subfield>
|
96
|
+
</datafield>
|
97
|
+
<datafield tag="300" ind1=" " ind2=" ">
|
98
|
+
<subfield code="a">500 p. ;</subfield>
|
99
|
+
<subfield code="c">22 cm.</subfield>
|
100
|
+
</datafield>
|
101
|
+
<datafield tag="520" ind1=" " ind2=" ">
|
102
|
+
<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>
|
103
|
+
</datafield>
|
104
|
+
<datafield tag="650" ind1=" " ind2="1">
|
105
|
+
<subfield code="a">Fantasy.</subfield>
|
106
|
+
</datafield>
|
107
|
+
<datafield tag="650" ind1=" " ind2="1">
|
108
|
+
<subfield code="a">Baseball</subfield>
|
109
|
+
<subfield code="v">Fiction.</subfield>
|
110
|
+
</datafield>
|
111
|
+
<datafield tag="650" ind1=" " ind2="1">
|
112
|
+
<subfield code="a">Magic</subfield>
|
113
|
+
<subfield code="v">Fiction.</subfield>
|
114
|
+
</datafield>
|
115
|
+
</record>
|
116
|
+
</collection>
|