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 CHANGED
@@ -1 +1 @@
1
- 0.1.7
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{enhanced_marc}
8
- s.version = "0.1.7"
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-23}
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 = [
@@ -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'
@@ -97,7 +97,7 @@ module MARC
97
97
  record.append(field)
98
98
  end
99
99
  end
100
-
100
+ record.fields.reindex
101
101
  return record
102
102
  end
103
103
 
@@ -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
- super
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.find_all {|f| ('006') === f.tag}.each { | fxd_fld |
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 return MARC::BookRecord.new_from_record(record)
28
- when 'SER' then return MARC::SerialRecord.new_from_record(record)
29
- when 'VIS' then return MARC::VisualRecord.new_from_record(record)
30
- when 'MIX' then return MARC::MixedRecord.new_from_record(record)
31
- when 'MAP' then return MARC::MapRecord.new_from_record(record)
32
- when 'SCO' then return MARC::ScoreRecord.new_from_record(record)
33
- when 'REC' then return MARC::SoundRecord.new_from_record(record)
34
- when 'COM' then return MARC::ComputerRecord.new_from_record(record)
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.find_all {|f| ('006') === f.tag}.each { | fxd_fld |
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
- oh_four_ones = @fields.find_all {|fld| fld.tag == "041"}
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: 21
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 7
10
- version: 0.1.7
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-23 00:00:00 -04:00
18
+ date: 2010-09-24 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency