Module: Enumerative::Enumeration

Defined in:
lib/enumerative/enumeration.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(other_module) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/enumerative/enumeration.rb', line 5

def self.included( other_module )
  other_module.module_eval do
    valid_keys.each do |k|
      const_set k.gsub( /\s/, '_' ).upcase, other_module.new( k )
    end

    extend ClassMethods

    attr_reader :key
  end
end

Instance Method Details

#==(other) ⇒ Object



48
49
50
# File 'lib/enumerative/enumeration.rb', line 48

def ==( other )
  other.is_a?( self.class ) && (other.key == key)
end

#blank?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/enumerative/enumeration.rb', line 64

def blank?
  key.blank?
end

#initialize(key_hash_or_enum) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/enumerative/enumeration.rb', line 33

def initialize( key_hash_or_enum )
  key = nil
  if key_hash_or_enum.is_a?( Hash )
    key = key_hash_or_enum['key'] || key_hash_or_enum[:key]
  elsif key_hash_or_enum.is_a?( Enumerative::Enumeration )
    key = key_hash_or_enum.key
  else
    key = key_hash_or_enum
  end

  @key = (key.nil? || key.empty?) ?
           nil :
           key.to_s.try( :dup ).try( :freeze )
end

#marked_for_destruction?Boolean

Method is required for Rails > 3.2.x due to ActiveRecord’s autosave functionality.

Returns:

  • (Boolean)


71
72
73
# File 'lib/enumerative/enumeration.rb', line 71

def marked_for_destruction?
  false
end

#to_sObject



52
53
54
# File 'lib/enumerative/enumeration.rb', line 52

def to_s
  key
end

#valid?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/enumerative/enumeration.rb', line 56

def valid?
  key.blank? || self.class.valid_keys.include?( key )
end

#valueObject



60
61
62
# File 'lib/enumerative/enumeration.rb', line 60

def value
  key.blank? ? nil : self.class.translate( key )
end