Class: Mab2::Document::Scope

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

Instance Method Summary collapse

Constructor Details

#initialize(document) ⇒ Scope

Returns a new instance of Scope.



3
4
5
# File 'lib/mab2/document/scope.rb', line 3

def initialize(document)
  @document = document
end

Instance Method Details

#controlfield(tag) ⇒ Object



7
8
9
# File 'lib/mab2/document/scope.rb', line 7

def controlfield(tag)
  @document.controlfields_by(tag: tag)
end

#datafield(tag, indicators = {}) ⇒ Object



11
12
13
14
# File 'lib/mab2/document/scope.rb', line 11

def datafield(tag, indicators = {})
  @scope_datafields = @document.datafields_by(tag: tag, indicators: indicators)
  self
end

#fieldsObject



48
49
50
# File 'lib/mab2/document/scope.rb', line 48

def fields
  @scope_datafields
end

#getObject

compatibility



44
45
46
# File 'lib/mab2/document/scope.rb', line 44

def get
  self
end

#subfield(subfield_codes) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/mab2/document/scope.rb', line 16

def subfield(subfield_codes)
  subfield_codes = subfield_codes.is_a?(Array) ? subfield_codes : [subfield_codes] # subfield_codes should be an array

  @scope_subfields = @scope_datafields.map do |datafield|
    datafield.subfields.select { |subfield| subfield_codes.include? subfield.name.to_s }
  end.flatten! || []

  self
end

#subfieldsObject



52
53
54
# File 'lib/mab2/document/scope.rb', line 52

def subfields
  @scope_subfields
end

#value(options = {}) ⇒ Object



26
27
28
# File 'lib/mab2/document/scope.rb', line 26

def value(options = {})
  values.first
end

#values(options = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/mab2/document/scope.rb', line 30

def values(options = {})
  unless @scope_values
    # if no subfields where specified so far, take all (e.g. doc.datafield('100').values))
    @scope_subfields ||= (@scope_datafields.map { |datafield| datafield.subfields }).flatten! || []
    subfield_values = @scope_subfields.map { |subfield| subfield.value }
    @scope_values = options[:join_subfields] ? subfield_values.join(options[:join_subfields]) : subfield_values
  else
    @scope_values
  end
end