class MARC::Spec::Queries::IndicatorValue

Constants

VALID_INDICATORS

Constants

Attributes

ind[R]

Attributes

tag[R]

Attributes

Public Class Methods

new(ind) click to toggle source

Initializer

# File lib/marc/spec/queries/indicator_value.rb, line 22
def initialize(ind)
  @ind = valid_indicator(ind)
end

Public Instance Methods

can_apply?(marc_obj) click to toggle source

Applicable

# File lib/marc/spec/queries/indicator_value.rb, line 36
def can_apply?(marc_obj)
  %i[indicator1 indicator2].all? { |m| marc_obj.respond_to?(m) }
end
to_s() click to toggle source

Object overrides

# File lib/marc/spec/queries/indicator_value.rb, line 29
def to_s
  "^#{ind}"
end

Protected Instance Methods

do_apply(marc_obj) click to toggle source

Applicable

# File lib/marc/spec/queries/indicator_value.rb, line 48
def do_apply(marc_obj)
  ind_val = ind_val_for(marc_obj)
  ind_val ? [ind_val] : []
end
equality_attrs() click to toggle source
# File lib/marc/spec/queries/indicator_value.rb, line 53
def equality_attrs
  %i[ind]
end

Private Instance Methods

ind_val_for(data_field) click to toggle source
# File lib/marc/spec/queries/indicator_value.rb, line 59
def ind_val_for(data_field)
  case ind
  when 1
    data_field.indicator1
  when 2
    data_field.indicator2
  end
end
valid_indicator(ind_val) click to toggle source
# File lib/marc/spec/queries/indicator_value.rb, line 68
def valid_indicator(ind_val)
  ind = int_or_nil(ind_val)
  return ind if VALID_INDICATORS.include?(ind)

  raise ArgumentError, "Not a valid indicator: #{ind_val.inspect}"
end