Class: BerkeleyLibrary::Marc::FieldInfo::VarFields::SubfieldDef

Inherits:
Object
  • Object
show all
Includes:
Obsolescible
Defined in:
lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb

Overview

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

Constant Summary

Constants included from Obsolescible

Obsolescible::OBSOLETE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Obsolescible

#_reject_obsolete, #empty?, #obsolete?

Constructor Details

#initialize(code:, desc:, values: []) ⇒ SubfieldDef

Returns a new instance of SubfieldDef.



14
15
16
17
18
# 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

Instance Attribute Details

#codeObject (readonly)

Returns the value of attribute code.



12
13
14
# File 'lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb', line 12

def code
  @code
end

#descObject (readonly)

Returns the value of attribute desc.



12
13
14
# File 'lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb', line 12

def desc
  @desc
end

#valuesObject (readonly)

Returns the value of attribute values.



12
13
14
# File 'lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb', line 12

def values
  @values
end

Instance Method Details

#each_value(&block) ⇒ Object



24
25
26
27
28
# 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_obsoletesObject



20
21
22
# 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_sObject



33
34
35
36
37
# 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