class BerkeleyLibrary::Marc::FieldInfo::VarFields::SubfieldDef

TODO: destructure range codes in some useful way (e.g. 886a-z, 0-9)

Constants

INDENT

Attributes

code[R]
desc[R]
values[R]

Public Class Methods

new(code:, desc:, values: []) click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb, line 14
def initialize(code:, desc:, values: [])
  @code = code
  @desc = desc
  @values = values
end

Public Instance Methods

each_value(&block) click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb, line 24
def each_value(&block)
  return to_enum(:each_value) unless block_given?

  values.each(&block)
end
reject_obsoletes() click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb, line 20
def reject_obsoletes
  SubfieldDef.new(code: code, desc: desc, values: _reject_obsolete(values))
end
to_s() click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb, line 33
def to_s
  lines = ["$#{code_str} - #{desc}"]
  values.each { |v| lines << INDENT + v.to_s }
  lines.join("\n")
end

Private Instance Methods

code_str() click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb, line 41
def code_str
  return code.to_s unless code.is_a?(Range)

  "#{code.first}-#{code.last}"
end