class Marc4R::Fields::DataField

Attributes

indicator1[RW]
indicator2[RW]

Public Class Methods

new(tag=nil, ind1=nil, ind2=nil, *args) click to toggle source
# File lib/marc4r/fields/data_field.rb, line 5
def initialize(tag=nil, ind1=nil, ind2=nil, *args)
  self.tag= tag if tag
  self.indicator1 = ind1 if ind1
  self.indicator2 = ind2 if ind2
  @subfields = []
  args.each_slice(2) do |slice|
    if (slice[0].size != 1)
      raise Marc4R::MarcException.new("subfield code must be a single character #{slice.inspect}")
    end
    @subfields << Marc4R::Fields::Subfield.new(*slice)
  end
end

Public Instance Methods

=~(pattern) click to toggle source
# File lib/marc4r/fields/data_field.rb, line 26
def =~ pattern
  subfields.detect {|f| f =~ pattern}
end
eql?(other) click to toggle source
# File lib/marc4r/fields/data_field.rb, line 30
def eql? other
  if other.is_a? Marc4R::Fields::DataField
    r = self.tag.eql? other.tag
    r &= self.indicator1.eql? other.indicator1
    r &= self.indicator2.eql? other.indicator2
    r &= self.subfields.size.eql? other.subfields.size
    if r
      self.subfields.each do |sf|
        r &= other.subfields.detect {|osf| (osf.code.eql? sf.code) && (osf.data.eql? sf.data)}
      end
    end
    r
  else
    false
  end
end
subfield(code=nil) click to toggle source
# File lib/marc4r/fields/data_field.rb, line 22
def subfield(code=nil)
      subfields(code).first
end
subfields(code=nil) click to toggle source
# File lib/marc4r/fields/data_field.rb, line 18
def subfields(code=nil)
      code ? @subfields.select {|sf| sf.code == code} : @subfields
end