class BerkeleyLibrary::Marc::FieldInfo::VarFields::VarFieldDef

Constants

INDENT

Attributes

desc[R]
indicators[R]
inst_or_voices_codes[R]
subfield_codes[R]
tag[R]

Public Class Methods

new(tag:, desc:, indicators: [], subfield_codes: [], inst_or_voices_codes: []) click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/var_field_def.rb, line 15
def initialize(tag:, desc:, indicators: [], subfield_codes: [], inst_or_voices_codes: [])
  @tag = tag
  @desc = desc
  @indicators = indicators # TODO: split out ind1/ind2 (but what about obsolete?)
  @subfield_codes = subfield_codes
  @inst_or_voices_codes = inst_or_voices_codes
end

Public Instance Methods

reject_obsoletes() click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/var_field_def.rb, line 33
def reject_obsoletes
  VarFieldDef.new(
    tag: tag,
    desc: desc,
    indicators: _reject_obsolete(indicators),
    subfield_codes: _reject_obsolete(subfield_codes),
    inst_or_voices_codes: _reject_obsolete(inst_or_voices_codes)
  )
end
to_s() click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/var_field_def.rb, line 23
def to_s
  blocks = ["#{tag} - #{desc}"]

  concat_indented(blocks, indicators, 'Indicators')
  concat_indented(blocks, subfield_codes, 'Subfield Codes')
  concat_indented(blocks, inst_or_voices_codes, 'Instrument or Voices Codes')

  blocks.join("\n")
end

Private Instance Methods

concat_indented(blocks, values, header) click to toggle source
# File lib/berkeley_library/marc/field_info/var_fields/var_field_def.rb, line 48
def concat_indented(blocks, values, header)
  return if values.empty?

  blocks << INDENT + header
  values.each do |v|
    lines = v.to_s.lines(chomp: true)
    lines.each { |line| blocks << INDENT + INDENT + line }
  end
end