Class: Traject::MarcExtractor::SpecSet
- Inherits:
-
Object
- Object
- Traject::MarcExtractor::SpecSet
- Defined in:
- lib/traject/marc_extractor_spec.rb
Overview
A set of specs
Instance Attribute Summary collapse
-
#hash ⇒ Object
Returns the value of attribute hash.
Class Method Summary collapse
Instance Method Summary collapse
- #add(spec) ⇒ Object
- #effective_tag(field) ⇒ Object
- #specs_for_tag(tag) ⇒ Object
- #specs_matching_field(field, use_alternate_script = false) ⇒ Object
- #tags ⇒ Object
Instance Attribute Details
#hash ⇒ Object
Returns the value of attribute hash.
15 16 17 |
# File 'lib/traject/marc_extractor_spec.rb', line 15 def hash @hash end |
Class Method Details
.new(seedset = {}) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/traject/marc_extractor_spec.rb', line 17 def self.new(seedset = {}) case seedset when String, Array s = allocate s.hash = Spec.hash_from_string(seedset) s when Hash s = allocate hash = Hash.new seedset.each_pair do |k, v| hash[k] = Array(v) end s.hash = hash s when SpecSet seedset else raise ArgumentError.new, "SpecSet can only be constructed from a string, a hash, or another SpecSet" end end |
Instance Method Details
#add(spec) ⇒ Object
39 40 41 |
# File 'lib/traject/marc_extractor_spec.rb', line 39 def add(spec) @hash[spec.tag] << spec end |
#effective_tag(field) ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/traject/marc_extractor_spec.rb', line 60 def effective_tag(field) six = field[SUBFIELD_6] if six six.encode(six.encoding).byteslice(0, 3) else ALTERNATE_SCRIPT_TAG end end |
#specs_for_tag(tag) ⇒ Object
47 48 49 |
# File 'lib/traject/marc_extractor_spec.rb', line 47 def specs_for_tag(tag) @hash[tag] || [] end |
#specs_matching_field(field, use_alternate_script = false) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/traject/marc_extractor_spec.rb', line 51 def specs_matching_field(field, use_alternate_script = false) field_tag = field.tag if use_alternate_script and (field_tag == ALTERNATE_SCRIPT_TAG) field_tag = effective_tag(field) end specs_for_tag(field_tag).select { |s| s.matches_indicators?(field) } end |
#tags ⇒ Object
43 44 45 |
# File 'lib/traject/marc_extractor_spec.rb', line 43 def @hash.keys end |