Sha256: 2437865450a86f47cff9e3f052fd2922e2cc256d227d8c1df96789f46974b0b6

Contents?: true

Size: 1.2 KB

Versions: 61

Compression:

Stored size: 1.2 KB

Contents

require 'protobuf/enum_value'

module Protobuf
  class Enum

    def self.define(name, value)
      enum_value = ::Protobuf::EnumValue.new(self, name, value)
      const_set(name, enum_value)
      @values ||= {}
      @names ||= {}
      @values[name] = enum_value
      @names[value] = name
    end

    # Fetch the given enum by a variety of type-checking
    # mechanisms. This is useful for the enum field setters
    # as well as repeated enum field construction.
    def self.fetch(value)
      case value
      when ::Protobuf::EnumValue then
        value
      when Numeric then
        enum_by_value(value.to_i)
      when String, Symbol then
        value_by_name(value.to_sym)
      else
        nil
      end
    end

    def self.enum_by_value(value)
      value_by_name(name_by_value(value))
    end

    def self.name_by_value(value)
      (!value.nil? && value.respond_to?(:to_i)) ? @names[value.to_i] : nil
    end

    def self.valid_tag?(tag)
      !! name_by_value(tag)
    end

    def self.value_by_name(name)
      @values[name]
    end

    def self.values
      @values
    end

    ##
    # Class Aliases
    #
    class << self
      alias_method :get_name_by_tag, :name_by_value
    end
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
protobuf-2.8.13 lib/protobuf/enum.rb
protobuf-2.8.12 lib/protobuf/enum.rb
protobuf-2.8.11 lib/protobuf/enum.rb
protobuf-2.8.10 lib/protobuf/enum.rb
protobuf-2.8.9 lib/protobuf/enum.rb
protobuf-2.8.8 lib/protobuf/enum.rb
protobuf-2.8.7 lib/protobuf/enum.rb
protobuf-2.8.6 lib/protobuf/enum.rb
protobuf-2.7.12 lib/protobuf/enum.rb
protobuf-2.8.5 lib/protobuf/enum.rb
protobuf-2.8.4 lib/protobuf/enum.rb
protobuf-2.8.3 lib/protobuf/enum.rb
protobuf-2.8.2 lib/protobuf/enum.rb
protobuf-2.8.1 lib/protobuf/enum.rb
protobuf-2.8.0 lib/protobuf/enum.rb
protobuf-2.8.0.beta9-java lib/protobuf/enum.rb
protobuf-2.8.0.beta9 lib/protobuf/enum.rb
protobuf-2.8.0.beta8-java lib/protobuf/enum.rb
protobuf-2.8.0.beta8 lib/protobuf/enum.rb
protobuf-2.8.0.beta6-java lib/protobuf/enum.rb