class MARC::Spec::Queries::Subfield
Attributes
code[R]
Attributes
index[R]
Attributes
Public Class Methods
new(code, index: nil)
click to toggle source
Initializer
# File lib/marc/spec/queries/subfield.rb, line 18 def initialize(code, index: nil) @code = parse_code(code) @index = ensure_type(index, PositionOrRange, allow_nil: true) end
Public Instance Methods
can_apply?(marc_obj)
click to toggle source
# File lib/marc/spec/queries/subfield.rb, line 37 def can_apply?(marc_obj) marc_obj.respond_to?(:subfields) end
to_s()
click to toggle source
Object overrides
# File lib/marc/spec/queries/subfield.rb, line 26 def to_s StringIO.new.tap do |out| out << '$' out << code out << "[#{index}]" if index end.string end
Protected Instance Methods
do_apply(data_field)
click to toggle source
# File lib/marc/spec/queries/subfield.rb, line 49 def do_apply(data_field) subfields = all_subfields(data_field) raw_result = index ? index.select_from(subfields) : subfields Array(raw_result) end
equality_attrs()
click to toggle source
# File lib/marc/spec/queries/subfield.rb, line 66 def equality_attrs %i[code index] end
to_s_inspect()
click to toggle source
Predicate
# File lib/marc/spec/queries/subfield.rb, line 58 def to_s_inspect StringIO.new.tap do |out| out << '$' out << code.inspect out << "[#{index.inspect}]" if index end.string end
Private Instance Methods
all_subfields(data_field)
click to toggle source
Private methods
# File lib/marc/spec/queries/subfield.rb, line 75 def all_subfields(data_field) data_field.subfields.select { |sf| code.include?(sf.code) } end
parse_code(code)
click to toggle source
# File lib/marc/spec/queries/subfield.rb, line 79 def parse_code(code) raise ArgumentError, 'Code cannot be nil' if code.nil? code.is_a?(AlNumRange) ? code : code.to_s end