marc 0.8.2 → 1.0.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.
- checksums.yaml +7 -0
- data/lib/marc.rb +1 -1
- data/lib/marc/datafield.rb +2 -2
- data/lib/marc/reader.rb +41 -8
- data/lib/marc/record.rb +2 -2
- data/lib/marc/version.rb +1 -1
- data/lib/marc/writer.rb +2 -2
- data/lib/marc/xmlreader.rb +1 -1
- data/lib/marc/xmlwriter.rb +3 -3
- data/test/tc_reader.rb +24 -1
- metadata +26 -54
- data/lib/marc/writer-NEW.rb +0 -108
- data/test/bib178448.okay.human +0 -24
- data/test/bib178448.okay.marc +0 -1
- data/test/bib178448.writtenout.marc +0 -1
- data/test/hebrew880s.marc +0 -1
- data/test/marc_with_bad_utf8.utf8.human +0 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 91f847e4c58a60a123919914206e8b41935d1268
|
4
|
+
data.tar.gz: b9485bfa59528e3703cc5bc4b45ec10df6dea502
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7434cec1dd28cd9bdbf0390958d5f663f187720597c8bc5a0a45d04d6a84409bada2c6974e94b48effdc2e33fbb48fe54b3b86fb050a7e2bfa17da49bada3831
|
7
|
+
data.tar.gz: 83d5be3ce3eaa6da114101fe4dcbe15320b394184aeafa9aa20b8f7254c25d01f42f62d7153546909310adcb44d7f809c95f467c66f123435705b587957901b2
|
data/lib/marc.rb
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
# # Deal with non-standard control field tags
|
29
29
|
# MARC::Field.control_tags << 'FMT'
|
30
30
|
# record = MARC::Record.new()
|
31
|
-
# record.add_field(MARC::ControlField.new('FMT', 'Book')) # doesn't
|
31
|
+
# record.add_field(MARC::ControlField.new('FMT', 'Book')) # doesn't raise an error
|
32
32
|
|
33
33
|
|
34
34
|
require File.dirname(__FILE__) + '/marc/version'
|
data/lib/marc/datafield.rb
CHANGED
@@ -38,13 +38,13 @@ module MARC
|
|
38
38
|
#
|
39
39
|
# field = MARC::DataField.new('245','0','0',
|
40
40
|
# MARC::Subfield.new('a', 'Consilience :'),
|
41
|
-
# MARC::Subfield.new('b', 'the unity of knowledge ',
|
41
|
+
# MARC::Subfield.new('b', 'the unity of knowledge '),
|
42
42
|
# MARC::Subfield.new('c', 'by Edward O. Wilson.'))
|
43
43
|
#
|
44
44
|
# or using a shorthand:
|
45
45
|
#
|
46
46
|
# field = MARC::DataField.new('245','0','0',
|
47
|
-
# ['a', 'Consilience :'],['b','the unity of knowledge ',
|
47
|
+
# ['a', 'Consilience :'],['b','the unity of knowledge '],
|
48
48
|
# ['c', 'by Edward O. Wilson.'] )
|
49
49
|
|
50
50
|
def initialize(tag, i1=' ', i2=' ', *subfields)
|
data/lib/marc/reader.rb
CHANGED
@@ -201,7 +201,7 @@ module MARC
|
|
201
201
|
elsif file.respond_to?("read", 5)
|
202
202
|
@handle = file
|
203
203
|
else
|
204
|
-
|
204
|
+
raise ArgumentError, "must pass in path or file"
|
205
205
|
end
|
206
206
|
|
207
207
|
if (! @encoding_options[:external_encoding] ) && @handle.respond_to?(:external_encoding)
|
@@ -229,7 +229,37 @@ module MARC
|
|
229
229
|
unless block_given?
|
230
230
|
return self.enum_for(:each)
|
231
231
|
else
|
232
|
-
|
232
|
+
self.each_raw do |raw|
|
233
|
+
record = self.decode(raw)
|
234
|
+
yield record
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
# Iterates over each record as a raw String, rather than a decoded
|
240
|
+
# MARC::Record
|
241
|
+
#
|
242
|
+
# This allows for handling encoding exceptions per record (e.g. to log which
|
243
|
+
# record caused the error):
|
244
|
+
#
|
245
|
+
# reader = MARC::Reader.new("marc_with_some_bad_records.dat",
|
246
|
+
# :external_encoding => "UTF-8",
|
247
|
+
# :validate_encoding => true)
|
248
|
+
# reader.each_raw do |raw|
|
249
|
+
# begin
|
250
|
+
# record = reader.decode(raw)
|
251
|
+
# rescue Encoding::InvalidByteSequenceError => e
|
252
|
+
# record = MARC::Reader.decode(raw, :external_encoding => "UTF-8",
|
253
|
+
# :invalid => :replace)
|
254
|
+
# warn e.message, record
|
255
|
+
# end
|
256
|
+
# end
|
257
|
+
#
|
258
|
+
# If no block is given, an enumerator is returned
|
259
|
+
def each_raw
|
260
|
+
unless block_given?
|
261
|
+
return self.enum_for(:each_raw)
|
262
|
+
else
|
233
263
|
while rec_length_s = @handle.read(5)
|
234
264
|
# make sure the record length looks like an integer
|
235
265
|
rec_length_i = rec_length_s.to_i
|
@@ -240,15 +270,18 @@ module MARC
|
|
240
270
|
# get the raw MARC21 for a record back from the file
|
241
271
|
# using the record length
|
242
272
|
raw = rec_length_s + @handle.read(rec_length_i-5)
|
243
|
-
|
244
|
-
# create a record from the data and return it
|
245
|
-
#record = MARC::Record.new_from_marc(raw)
|
246
|
-
record = MARC::Reader.decode(raw, @encoding_options)
|
247
|
-
yield record
|
273
|
+
yield raw
|
248
274
|
end
|
249
275
|
end
|
250
276
|
end
|
251
277
|
|
278
|
+
# Decodes the given string into a MARC::Record object.
|
279
|
+
#
|
280
|
+
# Wraps the class method MARC::Reader::decode, using the encoding options of
|
281
|
+
# the MARC::Reader instance.
|
282
|
+
def decode(marc)
|
283
|
+
return MARC::Reader.decode(marc, @encoding_options)
|
284
|
+
end
|
252
285
|
|
253
286
|
# A static method for turning raw MARC data in transission
|
254
287
|
# format into a MARC::Record object.
|
@@ -282,7 +315,7 @@ module MARC
|
|
282
315
|
# get the byte offsets from the record directory
|
283
316
|
directory = marc[LEADER_LENGTH..base_address-1]
|
284
317
|
|
285
|
-
|
318
|
+
raise MARC::Exception.new("invalid directory in record") if directory == nil
|
286
319
|
|
287
320
|
# the number of fields in the record corresponds to
|
288
321
|
# how many directory entries there are
|
data/lib/marc/record.rb
CHANGED
@@ -58,7 +58,7 @@ module MARC
|
|
58
58
|
# record.find_all {|field| field.tag =~ /^6../}
|
59
59
|
#
|
60
60
|
# The accessor 'fields' is also an Array of MARC::DataField objects which
|
61
|
-
# the client can
|
61
|
+
# the client can modify if neccesary.
|
62
62
|
#
|
63
63
|
# record.fields.delete(field)
|
64
64
|
#
|
@@ -297,7 +297,7 @@ module MARC
|
|
297
297
|
|
298
298
|
def to_s
|
299
299
|
str = "LEADER #{leader}\n"
|
300
|
-
|
300
|
+
self.each do |field|
|
301
301
|
str += field.to_s() + "\n"
|
302
302
|
end
|
303
303
|
return str
|
data/lib/marc/version.rb
CHANGED
data/lib/marc/writer.rb
CHANGED
@@ -35,7 +35,7 @@ module MARC
|
|
35
35
|
elsif file.respond_to?('write')
|
36
36
|
@fh = file
|
37
37
|
else
|
38
|
-
|
38
|
+
raise ArgumentError, "must pass in file name or handle"
|
39
39
|
end
|
40
40
|
self.allow_oversized = false
|
41
41
|
end
|
@@ -64,7 +64,7 @@ module MARC
|
|
64
64
|
directory = ''
|
65
65
|
fields = ''
|
66
66
|
offset = 0
|
67
|
-
|
67
|
+
record.each do |field|
|
68
68
|
|
69
69
|
# encode the field
|
70
70
|
field_data = ''
|
data/lib/marc/xmlreader.rb
CHANGED
data/lib/marc/xmlwriter.rb
CHANGED
@@ -25,7 +25,7 @@ module MARC
|
|
25
25
|
elsif file.respond_to?('write')
|
26
26
|
@fh = file
|
27
27
|
else
|
28
|
-
|
28
|
+
raise ArgumentError, "must pass in file name or handle"
|
29
29
|
end
|
30
30
|
|
31
31
|
@fh.write("<?xml version='1.0'?>\n")
|
@@ -95,7 +95,7 @@ module MARC
|
|
95
95
|
leader.add_text(record.leader)
|
96
96
|
e.add_element(leader)
|
97
97
|
|
98
|
-
|
98
|
+
record.each do |field|
|
99
99
|
if field.class == MARC::DataField
|
100
100
|
datafield_elem = REXML::Element.new("datafield")
|
101
101
|
|
@@ -137,7 +137,7 @@ module MARC
|
|
137
137
|
control_element = REXML::Element.new("controlfield")
|
138
138
|
|
139
139
|
# We need a marker for invalid tag values (we use 000)
|
140
|
-
unless field.tag.match(ctrlFieldTag) or MARC::
|
140
|
+
unless field.tag.match(ctrlFieldTag) or MARC::ControlField.control_tag?(ctrlFieldTag)
|
141
141
|
field.tag = "00z"
|
142
142
|
end
|
143
143
|
|
data/test/tc_reader.rb
CHANGED
@@ -82,6 +82,29 @@ class ReaderTest < Test::Unit::TestCase
|
|
82
82
|
assert_raises(StopIteration) { iter.next }
|
83
83
|
end
|
84
84
|
|
85
|
-
|
85
|
+
def test_each_raw
|
86
|
+
reader = MARC::Reader.new('test/batch.dat')
|
87
|
+
count = 0
|
88
|
+
raw = nil
|
89
|
+
reader.each_raw { |r| count += 1; raw = r }
|
90
|
+
assert_equal(count, 10)
|
91
|
+
assert_instance_of(String, raw)
|
92
|
+
|
93
|
+
record = MARC::Reader.decode(raw)
|
94
|
+
assert_instance_of(MARC::Record, record)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_each_raw_enum
|
98
|
+
reader = MARC::Reader.new('test/batch.dat')
|
99
|
+
enum = reader.each_raw
|
100
|
+
r = enum.next
|
101
|
+
assert_instance_of(String, r)
|
102
|
+
|
103
|
+
record = MARC::Reader.decode(r)
|
104
|
+
assert_instance_of(MARC::Record, record)
|
105
|
+
|
106
|
+
9.times {enum.next} # total of ten records
|
107
|
+
assert_raises(StopIteration) { enum.next }
|
108
|
+
end
|
86
109
|
|
87
110
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kevin Clarke
|
@@ -14,101 +13,71 @@ authors:
|
|
14
13
|
autorequire: marc
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
|
-
date:
|
16
|
+
date: 2015-01-28 00:00:00.000000000 Z
|
18
17
|
dependencies:
|
19
18
|
- !ruby/object:Gem::Dependency
|
20
|
-
name: ensure_valid_encoding
|
21
19
|
requirement: !ruby/object:Gem::Requirement
|
22
|
-
none: false
|
23
20
|
requirements:
|
24
|
-
- -
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
type: :runtime
|
28
|
-
prerelease: false
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
none: false
|
31
|
-
requirements:
|
32
|
-
- - ! '>='
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: scrub_rb
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
|
-
requirements:
|
40
|
-
- - ! '>='
|
21
|
+
- - '>='
|
41
22
|
- !ruby/object:Gem::Version
|
42
23
|
version: 1.0.1
|
43
24
|
- - <
|
44
25
|
- !ruby/object:Gem::Version
|
45
26
|
version: '2'
|
46
|
-
|
27
|
+
name: scrub_rb
|
47
28
|
prerelease: false
|
29
|
+
type: :runtime
|
48
30
|
version_requirements: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
31
|
requirements:
|
51
|
-
- -
|
32
|
+
- - '>='
|
52
33
|
- !ruby/object:Gem::Version
|
53
34
|
version: 1.0.1
|
54
35
|
- - <
|
55
36
|
- !ruby/object:Gem::Version
|
56
37
|
version: '2'
|
57
38
|
- !ruby/object:Gem::Dependency
|
58
|
-
name: unf
|
59
39
|
requirement: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
40
|
requirements:
|
62
|
-
- -
|
41
|
+
- - '>='
|
63
42
|
- !ruby/object:Gem::Version
|
64
43
|
version: '0'
|
65
|
-
|
44
|
+
name: unf
|
66
45
|
prerelease: false
|
46
|
+
type: :runtime
|
67
47
|
version_requirements: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
48
|
requirements:
|
70
|
-
- -
|
49
|
+
- - '>='
|
71
50
|
- !ruby/object:Gem::Version
|
72
51
|
version: '0'
|
73
|
-
description:
|
52
|
+
description:
|
74
53
|
email: ehs@pobox.com
|
75
54
|
executables: []
|
76
55
|
extensions: []
|
77
56
|
extra_rdoc_files: []
|
78
57
|
files:
|
58
|
+
- lib/marc.rb
|
79
59
|
- lib/marc/constants.rb
|
80
60
|
- lib/marc/controlfield.rb
|
81
61
|
- lib/marc/datafield.rb
|
82
62
|
- lib/marc/dublincore.rb
|
83
63
|
- lib/marc/exception.rb
|
84
|
-
- lib/marc/marc8/map_to_unicode.rb
|
85
|
-
- lib/marc/marc8/to_unicode.rb
|
86
64
|
- lib/marc/reader.rb
|
87
65
|
- lib/marc/record.rb
|
88
66
|
- lib/marc/subfield.rb
|
89
67
|
- lib/marc/version.rb
|
90
|
-
- lib/marc/writer-NEW.rb
|
91
68
|
- lib/marc/writer.rb
|
92
69
|
- lib/marc/xml_parsers.rb
|
93
70
|
- lib/marc/xmlreader.rb
|
94
71
|
- lib/marc/xmlwriter.rb
|
95
|
-
- lib/marc.rb
|
72
|
+
- lib/marc/marc8/map_to_unicode.rb
|
73
|
+
- lib/marc/marc8/to_unicode.rb
|
96
74
|
- test/bad_eacc_encoding.marc8.marc
|
97
75
|
- test/batch.dat
|
98
76
|
- test/batch.xml
|
99
|
-
- test/bib178448.okay.human
|
100
|
-
- test/bib178448.okay.marc
|
101
|
-
- test/bib178448.writtenout.marc
|
102
77
|
- test/cp866_multirecord.marc
|
103
78
|
- test/cp866_unimarc.marc
|
104
79
|
- test/escaped_character_reference.marc8.marc
|
105
|
-
- test/hebrew880s.marc
|
106
|
-
- test/marc8/data/test_marc8.txt
|
107
|
-
- test/marc8/data/test_utf8.txt
|
108
|
-
- test/marc8/tc_marc8_mapping.rb
|
109
|
-
- test/marc8/tc_to_unicode.rb
|
110
80
|
- test/marc8_accented_chars.marc
|
111
|
-
- test/marc_with_bad_utf8.utf8.human
|
112
81
|
- test/marc_with_bad_utf8.utf8.marc
|
113
82
|
- test/no-leading-zero.xml
|
114
83
|
- test/non-numeric.dat
|
@@ -133,6 +102,10 @@ files:
|
|
133
102
|
- test/utf8.marc
|
134
103
|
- test/utf8_multirecord.marc
|
135
104
|
- test/utf8_with_bad_bytes.marc
|
105
|
+
- test/marc8/tc_marc8_mapping.rb
|
106
|
+
- test/marc8/tc_to_unicode.rb
|
107
|
+
- test/marc8/data/test_marc8.txt
|
108
|
+
- test/marc8/data/test_utf8.txt
|
136
109
|
- Rakefile
|
137
110
|
- README.md
|
138
111
|
- Changes
|
@@ -140,27 +113,26 @@ files:
|
|
140
113
|
homepage: https://github.com/ruby-marc/ruby-marc/
|
141
114
|
licenses:
|
142
115
|
- MIT
|
143
|
-
|
116
|
+
metadata: {}
|
117
|
+
post_install_message:
|
144
118
|
rdoc_options: []
|
145
119
|
require_paths:
|
146
120
|
- lib
|
147
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
-
none: false
|
149
122
|
requirements:
|
150
|
-
- -
|
123
|
+
- - '>='
|
151
124
|
- !ruby/object:Gem::Version
|
152
125
|
version: 1.8.6
|
153
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
-
none: false
|
155
127
|
requirements:
|
156
|
-
- -
|
128
|
+
- - '>='
|
157
129
|
- !ruby/object:Gem::Version
|
158
130
|
version: '0'
|
159
131
|
requirements: []
|
160
|
-
rubyforge_project:
|
161
|
-
rubygems_version: 1.
|
162
|
-
signing_key:
|
163
|
-
specification_version:
|
132
|
+
rubyforge_project:
|
133
|
+
rubygems_version: 2.1.9
|
134
|
+
signing_key:
|
135
|
+
specification_version: 4
|
164
136
|
summary: A ruby library for working with Machine Readable Cataloging
|
165
137
|
test_files:
|
166
138
|
- test/ts_marc.rb
|
data/lib/marc/writer-NEW.rb
DELETED
@@ -1,108 +0,0 @@
|
|
1
|
-
module MARC
|
2
|
-
|
3
|
-
# A class for writing MARC records as MARC21.
|
4
|
-
|
5
|
-
class Writer
|
6
|
-
|
7
|
-
# the constructor which you must pass a file path
|
8
|
-
# or an object that responds to a write message
|
9
|
-
|
10
|
-
def initialize(file)
|
11
|
-
if file.class == String
|
12
|
-
@fh = File.new(file,"w")
|
13
|
-
elsif file.respond_to?('write')
|
14
|
-
@fh = file
|
15
|
-
else
|
16
|
-
throw "must pass in file name or handle"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
# write a record to the file or handle
|
22
|
-
|
23
|
-
def write(record)
|
24
|
-
@fh.write(MARC::Writer.encode(record))
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
# close underlying filehandle
|
29
|
-
|
30
|
-
def close
|
31
|
-
@fh.close
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
# a static method that accepts a MARC::Record object
|
36
|
-
# and returns the record encoded as MARC21 in transmission format
|
37
|
-
|
38
|
-
def self.encode(record)
|
39
|
-
directory = ''
|
40
|
-
fields = ''
|
41
|
-
offset = 0
|
42
|
-
for field in record.fields
|
43
|
-
|
44
|
-
# encode the field
|
45
|
-
field_data = ''
|
46
|
-
if field.class == MARC::DataField
|
47
|
-
warn("Warn: Missing indicator") unless field.indicator1 && field.indicator2
|
48
|
-
field_data = (field.indicator1 || " ") + (field.indicator2 || " ")
|
49
|
-
for s in field.subfields
|
50
|
-
field_data += SUBFIELD_INDICATOR + s.code + s.value
|
51
|
-
end
|
52
|
-
elsif field.class == MARC::ControlField
|
53
|
-
field_data = field.value
|
54
|
-
end
|
55
|
-
field_data += END_OF_FIELD
|
56
|
-
|
57
|
-
# calculate directory entry for the field
|
58
|
-
field_length = (field_data.respond_to?(:bytesize) ?
|
59
|
-
field_data.bytesize() :
|
60
|
-
field_data.length())
|
61
|
-
directory += sprintf("%03s", field.tag) + format_byte_count(field_length, 4) + format_byte_count(offset)
|
62
|
-
|
63
|
-
|
64
|
-
# add field to data for other fields
|
65
|
-
fields += field_data
|
66
|
-
|
67
|
-
# update offset for next field
|
68
|
-
offset += field_length
|
69
|
-
end
|
70
|
-
|
71
|
-
# determine the base (leader + directory)
|
72
|
-
base = record.leader + directory + END_OF_FIELD
|
73
|
-
|
74
|
-
# determine complete record
|
75
|
-
marc = base + fields + END_OF_RECORD
|
76
|
-
|
77
|
-
# update leader with the byte offest to the end of the directory
|
78
|
-
marc[12..16] = format_byte_count(base.respond_to?(:bytesize) ?
|
79
|
-
base.bytesize() :
|
80
|
-
base.length()
|
81
|
-
)
|
82
|
-
|
83
|
-
# update the record length
|
84
|
-
marc[0..4] = format_byte_count(marc.respond_to?(:bytesize) ?
|
85
|
-
marc.bytesize() :
|
86
|
-
marc.length()
|
87
|
-
)
|
88
|
-
|
89
|
-
# store updated leader in the record that was passed in
|
90
|
-
record.leader = marc[0..LEADER_LENGTH-1]
|
91
|
-
|
92
|
-
# return encoded marc
|
93
|
-
return marc
|
94
|
-
end
|
95
|
-
|
96
|
-
def self.format_byte_count(number, num_digits=5)
|
97
|
-
formatted = sprintf("%0#{num_digits}i", number)
|
98
|
-
if formatted.length > num_digits
|
99
|
-
# uh, oh, we've exceeded our max. Either zero out
|
100
|
-
# or raise, depending on settings.
|
101
|
-
#formatted = sprintf("%0#{num_digits}i", "")
|
102
|
-
formatted = "9" * num_digits
|
103
|
-
end
|
104
|
-
return formatted
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
data/test/bib178448.okay.human
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
01161cam a2200289 4500
|
2
|
-
001 178448
|
3
|
-
008 s1996 xx spa d
|
4
|
-
035 $a X!b
|
5
|
-
049 $a JHWV [AV] [NIRC] $n o
|
6
|
-
096 $a WY 20.5 VC6 1996
|
7
|
-
110 2 $a National Institutes of Health (U.S.)
|
8
|
-
110 2 $a National Institute of Nursing Research (U.S.)
|
9
|
-
110 2 $a Department of Health & Human Services (U.S.)
|
10
|
-
245 0 $a Ten years at NIH : $b advancing health through science : the human dimension / $c Patricia A. Grady, Harold Varmus.
|
11
|
-
246 $a 10 years at NIH
|
12
|
-
300 $a 2 videocassettes (229 min.) : $b sd., col. ; $c 1/2 in.
|
13
|
-
520 $a A series of speakers recounts advances in nursing research from 1986 to 1996.
|
14
|
-
538 $a VHS.
|
15
|
-
650 2 $a Nursing Care $x videocassettes
|
16
|
-
650 2 $a Nursing Research $x videocassettes
|
17
|
-
650 2 $a Nursing $x videocassettes
|
18
|
-
700 10 $a Grady, Patricia Anne, $d 1943-
|
19
|
-
700 1 $a Varmus, Harold
|
20
|
-
910 $a 178448 $b Horizon bib#
|
21
|
-
949 31 $7 1 $5 WY 20.5 VC6 1996 $0 26 $0 G $2 A $8 5 $4 1
|
22
|
-
991 $a WY 20.5 VC6 1996 $f nlm $b wnlm $c c. 1 $q 0 $i 3199765 $l wempbk $m elsc
|
23
|
-
991 $a WY 20.5 VC6 1996 $f nlm $b wnlm $c c. 1 $q 0 $i 3199766 $l wempbk $m elsc
|
24
|
-
|
data/test/bib178448.okay.marc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
01161cam a2200289 4500001000700000008004100007035000800048049002400056096002100080110004100101110005100142110004900193245011600242246002000358300005600378520008500434538000900519650003300528650003700561650002800598700003300626700001900659910002500678949004000703991006400743991006400807178448 s1996 xx spa d aX!b aJHWV [AV] [NIRC]no aWY 20.5 VC6 19962 aNational Institutes of Health (U.S.)2 aNational Institute of Nursing Research (U.S.)2 aDepartment of Health & Human Services (U.S.) 0aTen years at NIH :badvancing health through science : the human dimension /cPatricia A. Grady, Harold Varmus. a10 years at NIH a2 videocassettes (229 min.) :bsd., col. ;c1/2 in. aA series of speakers recounts advances in nursing research from 1986 to 1996. aVHS. 2aNursing Carexvideocassettes 2aNursing Researchxvideocassettes 2aNursingxvideocassettes10aGrady, Patricia Anne,d1943-1 aVarmus, Harold a178448bHorizon bib#31715WY 20.5 VC6 19960260G2A8541 aWY 20.5 VC6 1996fnlmbwnlmcc. 1q0i3199765lwempbkmelsc aWY 20.5 VC6 1996fnlmbwnlmcc. 1q0i3199766lwempbkmelsc
|
@@ -1 +0,0 @@
|
|
1
|
-
01161cam a2200289 4500001000700000008004100007035000800048049002400056096002100080110004100101110005100142110004900193245011600242246002000358300005600378520008500434538000900519650003300528650003700561650002800598700003300626700001900659910002500678949004000703991006400743991006400807178448 s1996 xx spa d aX!b aJHWV [AV] [NIRC]no aWY 20.5 VC6 19962 aNational Institutes of Health (U.S.)2 aNational Institute of Nursing Research (U.S.)2 aDepartment of Health & Human Services (U.S.) 0aTen years at NIH :badvancing health through science : the human dimension /cPatricia A. Grady, Harold Varmus. a10 years at NIH a2 videocassettes (229 min.) :bsd., col. ;c1/2 in. aA series of speakers recounts advances in nursing research from 1986 to 1996. aVHS. 2aNursing Carexvideocassettes 2aNursing Researchxvideocassettes 2aNursingxvideocassettes10aGrady, Patricia Anne,d1943-1 aVarmus, Harold a178448bHorizon bib#31715WY 20.5 VC6 19960260G2A8541 aWY 20.5 VC6 1996fnlmbwnlmcc. 1q0i3199765lwempbkmelsc aWY 20.5 VC6 1996fnlmbwnlmcc. 1q0i3199766lwempbkmelsc
|
data/test/hebrew880s.marc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
01998cam a2200469 a 4500001000800000005001700008008004100025020001800066020001500084024001800099024001200117035001200129035001700141035002100158040003200179042000800211049000900219050002100228066000700249100002900256245010000285246008400385260015000469300002100619504006400640541010900704600004100813600004700854650002500901650002300926650002900949650002500978752002201003880003701025880013001062880017301192910002601365936002701391938003801418991006001456994001201516408398520120302131100.0110313s2011 is b 001 0 heb c a9789651321337 a96513213348 a00032002131958 a3221319 a4083985 aocn710973037 a(OCoLC)710973037 aWEINBcWEINBdHLSdIXAdCUY apcc aJHEE 4aDS149b.R38 2011 c(21 6880-01aRatsabi, Shalom.106880-02aAnarkhizm be-"Tsiyon" :bben Marṭin Buber le-Aharon Daṿid Gordon /cShalom Ratsabi.1 iTitle on t.p. verso:aAnarchy in "Zion" :bbetween Martin Buber and A.D. Gordon 6880-03a[Tel Aviv] :bʻAm ʻoved :bha-Makhon le-ḥeḳer ha-Tsiyonut ve-Yiśra'el ʻa. sh. Ḥayim Ṿaitsman, Universiṭat Tel Aviv,cc2011. a339 p. ;c23 cm. aIncludes bibliographical references (p. 320-330) and index. 3Eisenhower copy:cPurchased with support from the National Endowment for the Humanities;dFY2012.5MdBJ.10aBuber, Martin,d1878-1965xReligion.10aGordon, Aaron David,d1856-1922xReligion. 0aZionism and Judaism. 0aReligious Zionism. 0aZionismxHistoriography. 0aZionismxPhilosophy. aIsraeldTel Aviv.1 6100-01/(2/raרצבי, שלום.106245-02/(2/raאנרכיזם ב״ציון״ :bבין מרטין בובר לאהרן דוד גורדון /cשלום רצבי. 6260-03/(2/ra[תל אביב] :bעם עובד :bהמכון לחקר הציונות וישראל עʺש חיים ויצמן, אוניברסיטת תל אביב,cc2011. a4083985bHorizon bib# aPR 747581025 741225747 aA.I. WeinbergbWEINnwb2011369996 aDS149.R38 2011flcbelccc. 1q0i6085034lemainmemsel aC0bJHE
|
@@ -1,40 +0,0 @@
|
|
1
|
-
01161cam a2200289 4500
|
2
|
-
001 178448
|
3
|
-
008 s1996 xx spa d
|
4
|
-
035 $a X!b
|
5
|
-
049 $a JHWV [AV] [NIRC] $n o
|
6
|
-
096 $a WY 20.5 VC6 1996
|
7
|
-
110 2 $a National Institutes of Health (U.S.)
|
8
|
-
110 2 $a National Institute of Nursing Research (U.S.)#
|
9
|
-
(No separator at end of field length=51)
|
10
|
-
(Bad indicator data. Skipping 2 bytes)
|
11
|
-
110 2 $a Department of Health & Human Services (U.S.)
|
12
|
-
(Bad indicator data. Skipping 2 bytes)
|
13
|
-
245 0 $a Ten years at NIH : $b advancing health through science : the human dimension / $c Patricia A. Grady, Harold Varmus.
|
14
|
-
(Bad indicator data. Skipping 2 bytes)
|
15
|
-
246 $a 10 years at NIH
|
16
|
-
(Bad indicator data. Skipping 2 bytes)
|
17
|
-
300 $a 2 videocassettes (229 min.) : $b sd., col. ; $c 1/2 in.
|
18
|
-
(Bad indicator data. Skipping 2 bytes)
|
19
|
-
520 $a A series of speakers recounts advances in nursing research from 1986 to 1996.
|
20
|
-
(Bad indicator data. Skipping 2 bytes)
|
21
|
-
538 $a VHS.
|
22
|
-
(Bad indicator data. Skipping 2 bytes)
|
23
|
-
650 2 $a Nursing Care $x videocassettes
|
24
|
-
(Bad indicator data. Skipping 2 bytes)
|
25
|
-
650 2 $a Nursing Research $x videocassettes
|
26
|
-
(Bad indicator data. Skipping 2 bytes)
|
27
|
-
650 2 $a Nursing $x videocassettes
|
28
|
-
(Bad indicator data. Skipping 2 bytes)
|
29
|
-
700 10 $a Grady, Patricia Anne, $d 1943-
|
30
|
-
(Bad indicator data. Skipping 2 bytes)
|
31
|
-
700 1 $a Varmus, Harold
|
32
|
-
(Bad indicator data. Skipping 2 bytes)
|
33
|
-
910 $a 178448 $b Horizon bib#
|
34
|
-
(Bad indicator data. Skipping 2 bytes)
|
35
|
-
949 31 $7 1 $5 WY 20.5 VC6 1996 $0 26 $0 G $2 A $8 5 $4 1
|
36
|
-
(Bad indicator data. Skipping 2 bytes)
|
37
|
-
991 $a WY 20.5 VC6 1996 $f nlm $b wnlm $c c. 1 $q 0 $i 3199765 $l wempbk $m elsc
|
38
|
-
(Bad indicator data. Skipping 2 bytes)
|
39
|
-
991 $a WY 20.5 VC6 1996 $f nlm $b wnlm $c c. 1 $q 0 $i 3199766 $l wempbk $m elsc
|
40
|
-
|