marc 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/marc/field.rb +5 -3
- data/lib/marc/marc21.rb +5 -1
- data/lib/marc/subfield.rb +5 -3
- metadata +1 -1
data/lib/marc/field.rb
CHANGED
@@ -39,10 +39,12 @@ module MARC
|
|
39
39
|
# ['a', 'Consilience :'],['b','the unity of knowledge ',
|
40
40
|
# ['c', 'by Edward O. Wilson.'] )
|
41
41
|
|
42
|
-
def initialize(tag, i1=
|
42
|
+
def initialize(tag, i1=' ', i2=' ', *subfields)
|
43
43
|
@tag = tag
|
44
|
-
|
45
|
-
|
44
|
+
# can't allow nil to be passed in or else it'll
|
45
|
+
# screw us up later when we try to encode
|
46
|
+
@indicator1 = i1 == nil ? ' ' : i1
|
47
|
+
@indicator2 = i2 == nil ? ' ' : i2
|
46
48
|
@subfields = []
|
47
49
|
|
48
50
|
# must use MARC::ControlField for tags < 010
|
data/lib/marc/marc21.rb
CHANGED
@@ -22,7 +22,7 @@ module MARC
|
|
22
22
|
|
23
23
|
# encode the field
|
24
24
|
field_data = ''
|
25
|
-
if field.class == MARC::Field
|
25
|
+
if field.class == MARC::Field
|
26
26
|
field_data = field.indicator1 + field.indicator2
|
27
27
|
for s in field.subfields
|
28
28
|
field_data += SUBFIELD_INDICATOR + s.code + s.value
|
@@ -125,6 +125,10 @@ module MARC
|
|
125
125
|
# get all subfields
|
126
126
|
subfields = field_data.split(SUBFIELD_INDICATOR)
|
127
127
|
|
128
|
+
# must have at least 2 elements (indicators, and 1 subfield)
|
129
|
+
# TODO some sort of logging?
|
130
|
+
next if subfields.length() < 2
|
131
|
+
|
128
132
|
# get indicators
|
129
133
|
indicators = subfields.shift()
|
130
134
|
field.indicator1 = indicators[0,1]
|
data/lib/marc/subfield.rb
CHANGED
@@ -3,9 +3,11 @@ module MARC
|
|
3
3
|
class Subfield
|
4
4
|
attr_accessor :code, :value
|
5
5
|
|
6
|
-
def initialize(code,value)
|
7
|
-
|
8
|
-
|
6
|
+
def initialize(code='' ,value='')
|
7
|
+
# can't allow code of value to be nil
|
8
|
+
# or else it'll screw us up later on
|
9
|
+
@code = code == nil ? '' : code
|
10
|
+
@value = value == nil ? '' : value
|
9
11
|
end
|
10
12
|
|
11
13
|
def ==(other)
|
metadata
CHANGED