class Metacrunch::Mab2::Document::Datafield

Attributes

ind1[RW]
ind2[RW]
tag[RW]

Public Class Methods

new(tag = nil, ind1:nil, ind2:nil) click to toggle source
# File lib/metacrunch/mab2/document/datafield.rb, line 9
def initialize(tag = nil, ind1:nil, ind2:nil)
  @tag  = tag
  @ind1 = ind1
  @ind2 = ind2
  @subfields = {}
end

Public Instance Methods

add_subfield(subfield) click to toggle source

Adds a new sub field.

@param [Metacrunch::Mab2::Document::Subfield] subfield

# File lib/metacrunch/mab2/document/datafield.rb, line 50
def add_subfield(subfield)
  (@subfields[subfield.code] ||= []) << subfield
end
subfields(code = nil) click to toggle source

Returns the sub field matching the given code.

@param [String] code of the sub field @return [Metacrunch::Mab2::Document::SubfieldSet] sub field with the given code. The set

is empty if the sub field doesn't exists.
# File lib/metacrunch/mab2/document/datafield.rb, line 31
def subfields(code = nil)
  result =  Metacrunch::Mab2::Document::SubfieldSet.new

  if code.nil?
    result.concat(@subfields.values.flatten(1))
  elsif _subfields = @subfields[code]
    result.concat(_subfields)
  elsif (codes = code).is_a?(Array)
    result.concat(codes.map { |_code| @subfields[_code] }.compact.flatten(1))
  end

  result
end
to_xml(builder) click to toggle source

Serialization


# File lib/metacrunch/mab2/document/datafield.rb, line 58
def to_xml(builder)
  builder.datafield(tag: tag, ind1: ind1, ind2: ind2) do
    @subfields.values.each do |_subfield_set|
      _subfield_set.to_xml(builder)
    end
  end
end
value() click to toggle source
# File lib/metacrunch/mab2/document/datafield.rb, line 16
def value
  subfields.value
end