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
# File lib/protobuf/field/enum_field.rb, line 28 def acceptable?(val) !type_class.fetch(val).nil? end
coerce!(value)
click to toggle source
# File lib/protobuf/field/enum_field.rb, line 36 def coerce!(value) type_class.fetch(value) || fail(TypeError, "Invalid Enum value: #{value.inspect} for #{name}") end
decode(value)
click to toggle source
# File lib/protobuf/field/enum_field.rb, line 23 def decode(value) value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000).nonzero? value if acceptable?(value) end
encode(value)
click to toggle source
Public Instance Methods
# File lib/protobuf/field/enum_field.rb, line 18 def encode(value) # original Google's library uses 64bits integer for negative value ::Protobuf::Field::VarintField.encode(value.to_i & 0xffff_ffff_ffff_ffff) end
enum?()
click to toggle source
# File lib/protobuf/field/enum_field.rb, line 32 def enum? true end
json_encode(value, options={})
click to toggle source
# File lib/protobuf/field/enum_field.rb, line 40 def json_encode(value, options={}) enum = type_class.enums.find { |e| e.to_i == value } enum.to_s(:name) end
Private Instance Methods
typed_default_value()
click to toggle source
Private Instance Methods
# File lib/protobuf/field/enum_field.rb, line 51 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