Class: Mab2::Document::Scope
- Inherits:
-
Object
- Object
- Mab2::Document::Scope
- Defined in:
- lib/mab2/document/scope.rb
Instance Attribute Summary collapse
-
#scope_subfields ⇒ Object
Returns the value of attribute scope_subfields.
Instance Method Summary collapse
- #controlfield(tag) ⇒ Object
- #datafield(tag, indicators) ⇒ Object
- #fields ⇒ Object
- #get ⇒ Object
-
#initialize(document) ⇒ Scope
constructor
A new instance of Scope.
- #subfield(subfield_codes) ⇒ Object
- #subfields ⇒ Object
- #value(options = {}) ⇒ Object
- #values(options = {}) ⇒ Object
Constructor Details
#initialize(document) ⇒ Scope
Returns a new instance of Scope.
5 6 7 |
# File 'lib/mab2/document/scope.rb', line 5 def initialize(document) @document = document end |
Instance Attribute Details
#scope_subfields ⇒ Object
Returns the value of attribute scope_subfields.
3 4 5 |
# File 'lib/mab2/document/scope.rb', line 3 def scope_subfields @scope_subfields end |
Instance Method Details
#controlfield(tag) ⇒ Object
9 10 11 |
# File 'lib/mab2/document/scope.rb', line 9 def controlfield(tag) @document.controlfields[tag.to_sym].try(:chars) || [] end |
#datafield(tag, indicators) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/mab2/document/scope.rb', line 13 def datafield(tag, indicators) @scope_datafields = [] indicators = sanitize_indicators(indicators) selected_datafields = if !(datafields_by_tag = @document.datafields[tag.to_sym]).nil? datafields_by_tag.select do |indicator_one_key, indicator_one_value| indicators[:ind1].nil? || (indicators[:ind1].any? { |ind1| ind1.length > 1 && ind1.to_s.starts_with?('-') } ^ indicators[:ind1].include?(indicator_one_key)) && indicator_one_value.any? do |indicator_two_key, indicator_two_value| indicators[:ind2].nil? || indicators[:ind2].include?(indicator_two_key) end end end if !selected_datafields.nil? selected_datafields.each_pair do |indicator_one_key, indicator_one_value| indicator_one_value.each_pair do |indicator_two_key, indicator_two_value| indicator_two_value.each do |subfields| @scope_datafields.push Mab2::Document::Datafield.new(tag, indicators, subfields) end end end end self end |
#fields ⇒ Object
42 43 44 |
# File 'lib/mab2/document/scope.rb', line 42 def fields @scope_datafields end |
#get ⇒ Object
38 39 40 |
# File 'lib/mab2/document/scope.rb', line 38 def get self end |
#subfield(subfield_codes) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/mab2/document/scope.rb', line 50 def subfield(subfield_codes) # make subfield_codes an array (always) subfield_codes = subfield_codes.is_a?(Array) ? subfield_codes : [subfield_codes] @scope_subfields = [] @scope_datafields.each do |datafield| @scope_subfields.push datafield.subfields.select { |subfield| subfield_codes.include? subfield.name.to_s } end @scope_subfields.flatten! self end |
#subfields ⇒ Object
65 66 67 |
# File 'lib/mab2/document/scope.rb', line 65 def subfields scope_subfields end |
#value(options = {}) ⇒ Object
69 70 71 72 73 |
# File 'lib/mab2/document/scope.rb', line 69 def value( = {}) if !(_values = values()).nil? _values.first end end |
#values(options = {}) ⇒ Object
75 76 77 78 79 80 |
# File 'lib/mab2/document/scope.rb', line 75 def values( = {}) if !scope_subfields.nil? subfield_values = scope_subfields.map { |subfield| subfield.value } @scope_values = (join_string = [:join_subfields]) ? subfield_values.join(join_string == true ? '' : join_string) : subfield_values end end |