class MARC::Spec::Queries::SubfieldValue

Attributes

character_spec[R]

Attributes

subfield[R]

Attributes

Public Class Methods

new(subfield, character_spec = nil) click to toggle source

Initializer

# File lib/marc/spec/queries/subfield_value.rb, line 19
def initialize(subfield, character_spec = nil)
  @subfield = ensure_type(subfield, Subfield)
  @character_spec = ensure_type(character_spec, CharacterSpec, allow_nil: true)
end

Public Instance Methods

to_s() click to toggle source

Object overrides

# File lib/marc/spec/queries/subfield_value.rb, line 27
def to_s
  StringIO.new.tap do |out|
    out << subfield
    out << "/#{character_spec}" if character_spec
  end.string
end

Protected Instance Methods

can_apply?(marc_obj) click to toggle source

Protected

# File lib/marc/spec/queries/subfield_value.rb, line 39
def can_apply?(marc_obj)
  subfield.send(:can_apply?, marc_obj)
end
do_apply(data_field) click to toggle source
# File lib/marc/spec/queries/subfield_value.rb, line 43
def do_apply(data_field)
  subfields = subfield.apply(data_field)
  return subfields.map(&:value) unless character_spec

  subfields.flat_map { |sf| character_spec.apply(sf.value) }
end
equality_attrs() click to toggle source
# File lib/marc/spec/queries/subfield_value.rb, line 57
def equality_attrs
  %i[subfield character_spec]
end
to_s_inspect() click to toggle source
# File lib/marc/spec/queries/subfield_value.rb, line 50
def to_s_inspect
  StringIO.new.tap do |out|
    out << subfield.inspect
    out << "/#{character_spec.inspect}" if character_spec
  end.string
end