enhanced_marc 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/enhanced_marc.gemspec +2 -2
- data/lib/enhanced_marc.rb +21 -21
- data/lib/enhanced_marc/reader.rb +1 -1
- data/lib/enhanced_marc/record.rb +16 -14
- metadata +5 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/enhanced_marc.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{enhanced_marc}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ross Singer"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-24}
|
13
13
|
s.description = %q{A set of enhancements to ruby-marc to make parsing MARC data easier}
|
14
14
|
s.email = %q{rossfsinger@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/enhanced_marc.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
require 'marc'
|
2
2
|
require 'locale/info'
|
3
|
-
require 'enhanced_marc/reader'
|
4
|
-
require 'enhanced_marc/record'
|
5
|
-
require 'enhanced_marc/xmlreader'
|
6
|
-
require 'enhanced_marc/leader'
|
7
|
-
require 'enhanced_marc/book_record'
|
8
|
-
require 'enhanced_marc/serial_record'
|
9
|
-
require 'enhanced_marc/visual_record'
|
10
|
-
require 'enhanced_marc/mixed_record'
|
11
|
-
require 'enhanced_marc/map_record'
|
12
|
-
require 'enhanced_marc/score_record'
|
13
|
-
require 'enhanced_marc/sound_record'
|
14
|
-
require 'enhanced_marc/computer_record'
|
15
|
-
require 'enhanced_marc/record_type'
|
16
|
-
require 'enhanced_marc/book_type'
|
17
|
-
require 'enhanced_marc/computer_type'
|
18
|
-
require 'enhanced_marc/map_type'
|
19
|
-
require 'enhanced_marc/mixed_type'
|
20
|
-
require 'enhanced_marc/score_type'
|
21
|
-
require 'enhanced_marc/serial_type'
|
22
|
-
require 'enhanced_marc/sound_type'
|
23
|
-
require 'enhanced_marc/visual_type'
|
3
|
+
require File.dirname(__FILE__) + '/enhanced_marc/reader'
|
4
|
+
require File.dirname(__FILE__) + '/enhanced_marc/record'
|
5
|
+
require File.dirname(__FILE__) + '/enhanced_marc/xmlreader'
|
6
|
+
require File.dirname(__FILE__) + '/enhanced_marc/leader'
|
7
|
+
require File.dirname(__FILE__) + '/enhanced_marc/book_record'
|
8
|
+
require File.dirname(__FILE__) + '/enhanced_marc/serial_record'
|
9
|
+
require File.dirname(__FILE__) + '/enhanced_marc/visual_record'
|
10
|
+
require File.dirname(__FILE__) + '/enhanced_marc/mixed_record'
|
11
|
+
require File.dirname(__FILE__) + '/enhanced_marc/map_record'
|
12
|
+
require File.dirname(__FILE__) + '/enhanced_marc/score_record'
|
13
|
+
require File.dirname(__FILE__) + '/enhanced_marc/sound_record'
|
14
|
+
require File.dirname(__FILE__) + '/enhanced_marc/computer_record'
|
15
|
+
require File.dirname(__FILE__) + '/enhanced_marc/record_type'
|
16
|
+
require File.dirname(__FILE__) + '/enhanced_marc/book_type'
|
17
|
+
require File.dirname(__FILE__) + '/enhanced_marc/computer_type'
|
18
|
+
require File.dirname(__FILE__) + '/enhanced_marc/map_type'
|
19
|
+
require File.dirname(__FILE__) + '/enhanced_marc/mixed_type'
|
20
|
+
require File.dirname(__FILE__) + '/enhanced_marc/score_type'
|
21
|
+
require File.dirname(__FILE__) + '/enhanced_marc/serial_type'
|
22
|
+
require File.dirname(__FILE__) + '/enhanced_marc/sound_type'
|
23
|
+
require File.dirname(__FILE__) + '/enhanced_marc/visual_type'
|
data/lib/enhanced_marc/reader.rb
CHANGED
data/lib/enhanced_marc/record.rb
CHANGED
@@ -6,14 +6,15 @@ module MARC
|
|
6
6
|
# Creates a new MARC::Record using MARC::Leader
|
7
7
|
# to work with the leader, rather than a string
|
8
8
|
def initialize
|
9
|
-
|
9
|
+
@fields = FieldMap.new
|
10
|
+
# leader is 24 bytes
|
10
11
|
@leader = Leader.new(' ' * 24)
|
11
12
|
end
|
12
13
|
|
13
14
|
def contains_type?(record_type)
|
14
15
|
type_map = {"BKS"=>/[at]{1}/, "COM"=>"m", "MAP"=>/[ef]{1}/,"MIX"=>"p", "SCO"=>/[cd]{1}/, "REC"=>/[ij]{1}/, "SER"=>"s", "VIS"=>/[gkor]{1}/}
|
15
16
|
matching_fields = []
|
16
|
-
@fields.
|
17
|
+
@fields.each_by_tag('006').each { | fxd_fld |
|
17
18
|
matching_fields << fxd_fld if fxd_fld.value[0,1].match(type_map[record_type])
|
18
19
|
|
19
20
|
}
|
@@ -23,16 +24,18 @@ module MARC
|
|
23
24
|
|
24
25
|
def self.new_from_record(record)
|
25
26
|
leader = Leader.new(record.leader)
|
26
|
-
case leader.get_type
|
27
|
-
when 'BKS' then
|
28
|
-
when 'SER' then
|
29
|
-
when 'VIS' then
|
30
|
-
when 'MIX' then
|
31
|
-
when 'MAP' then
|
32
|
-
when 'SCO' then
|
33
|
-
when 'REC' then
|
34
|
-
when 'COM' then
|
27
|
+
typed_record = case leader.get_type
|
28
|
+
when 'BKS' then MARC::BookRecord.new_from_record(record)
|
29
|
+
when 'SER' then MARC::SerialRecord.new_from_record(record)
|
30
|
+
when 'VIS' then MARC::VisualRecord.new_from_record(record)
|
31
|
+
when 'MIX' then MARC::MixedRecord.new_from_record(record)
|
32
|
+
when 'MAP' then MARC::MapRecord.new_from_record(record)
|
33
|
+
when 'SCO' then MARC::ScoreRecord.new_from_record(record)
|
34
|
+
when 'REC' then MARC::SoundRecord.new_from_record(record)
|
35
|
+
when 'COM' then MARC::ComputerRecord.new_from_record(record)
|
35
36
|
end
|
37
|
+
typed_record.fields.reindex
|
38
|
+
typed_record
|
36
39
|
end
|
37
40
|
|
38
41
|
def to_typed_record
|
@@ -69,7 +72,7 @@ module MARC
|
|
69
72
|
type_map = {/[at]{1}/=>BookType,'m'=>ComputerType,/[ef]{1}/=>MapType,
|
70
73
|
'p'=>MixedType,/[cd]{1}/=>ScoreType,/[ij]{1}/=>SoundType,'s'=>SerialType,
|
71
74
|
/[gkor]{1}/=>VisualType}
|
72
|
-
@fields.
|
75
|
+
@fields.each_by_tag('006').each { | fxd_fld |
|
73
76
|
type_map.each_key { | key |
|
74
77
|
if fxd_fld.value[0,1].match(key)
|
75
78
|
self.extend type_map[key]
|
@@ -83,8 +86,7 @@ module MARC
|
|
83
86
|
unless self['008'].value[35,3].empty?
|
84
87
|
languages << Locale::Info.get_language(self['008'].value[35,3])
|
85
88
|
end
|
86
|
-
|
87
|
-
oh_four_ones.each do | oh_four_one |
|
89
|
+
@fields.each_by_tag("041").each do | oh_four_one |
|
88
90
|
langs = oh_four_one.find_all { |sub| sub.code == 'a'}
|
89
91
|
langs.each do | lang |
|
90
92
|
languages << Locale::Info.get_language(lang.value)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enhanced_marc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ross Singer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-24 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|