Sha256: 684b23af7364c7f5703145218cb0a161d7061ffd7a6d2e73ba05a9df2fe14e34

Contents?: true

Size: 574 Bytes

Versions: 3

Compression:

Stored size: 574 Bytes

Contents

require 'active_support/inflector'

module Enum
  def self.included(base)
    base.extend ClassMethods
  end

  module ClassMethods
    def values
      self.constants.map{|sym| self.const_get(sym)}
    end

    def name_for(value)
      self.constants.detect{|sym| self.const_get(sym) == value}
    end

    def from_symbol(sym)
      safe_constantize("#{self.name}::#{sym.to_s.upcase}")
    end

    def safe_constantize(str)
      begin
        str.constantize
      rescue NameError
        fail "'#{str}' has not been defined as a constant"
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
abstractivator-0.0.19 lib/abstractivator/enum.rb
abstractivator-0.0.18 lib/abstractivator/enum.rb
abstractivator-0.0.16 lib/abstractivator/enum.rb