Class: Mab2::Document::Scope

Inherits:
Object
  • Object
show all
Defined in:
lib/mab2/document/scope.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_subfieldsObject

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

#fieldsObject



42
43
44
# File 'lib/mab2/document/scope.rb', line 42

def fields
  @scope_datafields
end

#getObject



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

#subfieldsObject



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(options = {})
  if !(_values = values(options)).nil?
    _values.first
  end
end

#values(options = {}) ⇒ Object



75
76
77
78
79
80
# File 'lib/mab2/document/scope.rb', line 75

def values(options = {})
  if !scope_subfields.nil?
    subfield_values = scope_subfields.map { |subfield| subfield.value }
    @scope_values = (join_string = options[:join_subfields]) ? subfield_values.join(join_string == true ? '' : join_string) : subfield_values
  end
end