Class: Mab2::Document::Scope
- Inherits:
-
Object
- Object
- Mab2::Document::Scope
- Defined in:
- lib/mab2/document/scope.rb
Instance Method Summary collapse
- #controlfield(tag) ⇒ Object
- #datafield(tag, indicators = {}) ⇒ Object
- #fields ⇒ Object
-
#get ⇒ Object
compatibility.
-
#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.
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 |
#fields ⇒ Object
48 49 50 |
# File 'lib/mab2/document/scope.rb', line 48 def fields @scope_datafields end |
#get ⇒ Object
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 |
#subfields ⇒ Object
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( = {}) 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( = {}) 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 = [:join_subfields] ? subfield_values.join([:join_subfields]) : subfield_values else @scope_values end end |