enhanced_marc 0.1.7 → 0.2.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.
- 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
|