Sha256: 4b0343949420d348ce0a7b6fae1e4e17f7eb6c168c4c059c22a73be7254efc87
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
require 'protobuf/field/varint_field' module Protobuf module Field class EnumField < VarintField ## # Public Instance Methods # def acceptable?(val) ! type_class.fetch(val).nil? end def encode(value) super(value.to_i) end def decode(value) if acceptable?(value) value end end def enum? true end private ## # Private Instance Methods # 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) raise TypeError, "Invalid Enum value: #{orig_value.inspect} for #{field.name}" unless value @values[field.name] = value end end end end def typed_default_value if default.is_a?(Symbol) type_class.const_get(default) else self.class.default end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
protobuf-3.2.0 | lib/protobuf/field/enum_field.rb |
protobuf-3.1.0 | lib/protobuf/field/enum_field.rb |