class Protobuf::Field::EnumField

Public Class Methods

default() click to toggle source

Class Methods

# File lib/protobuf/field/enum_field.rb, line 11
def self.default
  fail NoMethodError, "#{self}.#{__method__} must be called on an instance"
end

Public Instance Methods

acceptable?(val) click to toggle source

Public Instance Methods

# File lib/protobuf/field/enum_field.rb, line 19
def acceptable?(val)
  !type_class.fetch(val).nil?
end
decode(value) click to toggle source
# File lib/protobuf/field/enum_field.rb, line 27
def decode(value)
  value if acceptable?(value)
end
encode(value) click to toggle source
Calls superclass method
# File lib/protobuf/field/enum_field.rb, line 23
def encode(value)
  super(value.to_i)
end
enum?() click to toggle source
# File lib/protobuf/field/enum_field.rb, line 31
def enum?
  true
end

Private Instance Methods

define_setter() click to toggle source

Private Instance Methods

# File lib/protobuf/field/enum_field.rb, line 41
def define_setter
  field = self
  message_class.class_eval do
    define_method("#{field.name}=") do |value|
      orig_value = value
      if value.nil?
        @values.delete(field.name)
      else
        value = field.type_class.fetch(value)
        fail TypeError, "Invalid Enum value: #{orig_value.inspect} for #{field.name}" unless value

        @values[field.name] = value
      end
    end
  end
end
typed_default_value() click to toggle source
# File lib/protobuf/field/enum_field.rb, line 58
def typed_default_value
  if default.is_a?(Symbol)
    type_class.const_get(default)
  else
    type_class.fetch(default) || type_class.enums.first
  end
end