class Metacrunch::Mab2::Document::Controlfield
Attributes
tag[RW]
Public Class Methods
new(tag = nil, values = [])
click to toggle source
# File lib/metacrunch/mab2/document/controlfield.rb, line 8 def initialize(tag = nil, values = []) self.tag = tag self.values = values end
Public Instance Methods
at(index)
click to toggle source
@param [int] index @return [Array<String>] value at given index
# File lib/metacrunch/mab2/document/controlfield.rb, line 54 def at(index) @values.at(index) end
tag=(value)
click to toggle source
# File lib/metacrunch/mab2/document/controlfield.rb, line 13 def tag=(value) @tag = value.to_s if value end
to_xml(builder)
click to toggle source
Serialization
# File lib/metacrunch/mab2/document/controlfield.rb, line 62 def to_xml(builder) builder.controlfield(values2string, tag: tag) end
values()
click to toggle source
@return [Array<String>]
# File lib/metacrunch/mab2/document/controlfield.rb, line 46 def values @values end
values=(values)
click to toggle source
Setter for the control field values. Values can be given as String or as an Array.
@param [String, Array] values for the control field as a String or Array.
In case of String the MAB2 delimiter/placeholder | is respected. In case of an Array every element is converted into a String. Empty strings are converted into nil. Array values that are longer than one character will raise an ArgumentError.
@example Add control field using String values
add_control_field("050", "a|b||")
@example Add control field using Array
add_control_field("050", ["a", nil, "b", nil, nil])
# File lib/metacrunch/mab2/document/controlfield.rb, line 33 def values=(values) @values = case values when String then string2values(values) when Array then array2values(values) when nil then [] else raise ArgumentError, "expecting a String or Array, but got #{values}" end end
Private Instance Methods
array2values(array)
click to toggle source
# File lib/metacrunch/mab2/document/controlfield.rb, line 72 def array2values(array) array.map do |v| if v.present? v = v.to_s raise ArgumentError, "invalid value of controlfield #{tag}: #{array}" if v.length > 1 v else nil end end end
string2values(string)
click to toggle source
# File lib/metacrunch/mab2/document/controlfield.rb, line 68 def string2values(string) string.chars.to_a.map{ |e| (e=="|") ? nil : e } end
values2string()
click to toggle source
# File lib/metacrunch/mab2/document/controlfield.rb, line 84 def values2string values.map{|c| c.blank? ? "|" : c}.join end