class Protobuf::Field::FieldArray
def <<(val)
def <<(val) super(normalize(val)) unless val.nil? end
def []=(nth, val)
Public Instance Methods
#
def []=(nth, val) super(nth, normalize(val)) unless val.nil? end
def initialize(field)
Constructor
#
def initialize(field) @field = field end
def normalize(value)
Private Instance Methods
#
def normalize(value) value = value.to_proto if value.respond_to?(:to_proto) raise TypeError unless @field.acceptable?(value) if @field.is_a?(::Protobuf::Field::EnumField) @field.type.fetch(value) elsif @field.is_a?(::Protobuf::Field::MessageField) && value.respond_to?(:to_hash) @field.type.new(value.to_hash) else value end end
def push(val)
def push(val) super(normalize(val)) unless val.nil? end
def raise_type_error(val)
def raise_type_error(val) error_text = <<-TYPE_ERROR Expected value of type '#{@field.type}' Got '#{val.class}' for protobuf field #{@field.name} TYPE_ERROR raise TypeError, error_text end
def replace(val)
def replace(val) raise_type_error(val) unless val.is_a?(Array) val = val.map! { |v| normalize(v) } super(val) end
def to_hash_value
Return a hash-representation of the given values for this field type.
def to_hash_value self.map do |value| value.respond_to?(:to_hash_value) ? value.to_hash_value : value end end
def to_s
def to_s "[#{@field.name}]" end
def unshift(val)
def unshift(val) super(normalize(val)) unless val.nil? end