marc 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,8 @@
1
1
  require 'ensure_valid_encoding'
2
- require 'marc/marc8/to_unicode'
2
+
3
+ # Note: requiring 'marc/marc8/to_unicode' below, in #initialize,
4
+ # only when necessary
5
+
3
6
 
4
7
  module MARC
5
8
  # A class for reading MARC binary (ISO 2709) files.
@@ -210,7 +213,13 @@ module MARC
210
213
  # with binary marc data, the transcode can mess up the byte count
211
214
  # and make it unreadable.
212
215
  @encoding_options[:external_encoding] ||= @handle.external_encoding
213
- end
216
+ end
217
+
218
+ # Only pull in the MARC8 translation if we need it, since it's really big
219
+ if @encoding_options[:external_encoding] == "MARC-8"
220
+ require 'marc/marc8/to_unicode' unless defined? MARC::Marc8::ToUnicode
221
+ end
222
+
214
223
  end
215
224
 
216
225
  # to support iteration:
@@ -1,3 +1,3 @@
1
1
  module MARC
2
- VERSION = "0.8.0"
2
+ VERSION = "0.8.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire: marc
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2013-11-20 00:00:00.000000000 Z
17
+ date: 2013-11-26 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: ensure_valid_encoding
@@ -65,7 +65,6 @@ files:
65
65
  - lib/marc/record.rb
66
66
  - lib/marc/subfield.rb
67
67
  - lib/marc/version.rb
68
- - lib/marc/writer-NEW.rb
69
68
  - lib/marc/writer.rb
70
69
  - lib/marc/xml_parsers.rb
71
70
  - lib/marc/xmlreader.rb
@@ -74,19 +73,14 @@ files:
74
73
  - test/bad_eacc_encoding.marc8.marc
75
74
  - test/batch.dat
76
75
  - test/batch.xml
77
- - test/bib178448.okay.human
78
- - test/bib178448.okay.marc
79
- - test/bib178448.writtenout.marc
80
76
  - test/cp866_multirecord.marc
81
77
  - test/cp866_unimarc.marc
82
78
  - test/escaped_character_reference.marc8.marc
83
- - test/hebrew880s.marc
84
79
  - test/marc8/data/test_marc8.txt
85
80
  - test/marc8/data/test_utf8.txt
86
81
  - test/marc8/tc_marc8_mapping.rb
87
82
  - test/marc8/tc_to_unicode.rb
88
83
  - test/marc8_accented_chars.marc
89
- - test/marc_with_bad_utf8.utf8.human
90
84
  - test/marc_with_bad_utf8.utf8.marc
91
85
  - test/no-leading-zero.xml
92
86
  - test/non-numeric.dat
@@ -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
@@ -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
-
@@ -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
@@ -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
-