Module: ScopedEnum::ClassMethods

Defined in:
lib/scoped_enum.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



10
11
12
13
# File 'lib/scoped_enum.rb', line 10

def self.extended(base)
  base.class_attribute(:defined_enum_scopes)
  base.defined_enum_scopes = HashWithIndifferentAccess.new
end

Instance Method Details

#scoped_enum(enum_name, enum_entries, scopes = {}) {|scope_creator| ... } ⇒ Object

Yields:

  • (scope_creator)


15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/scoped_enum.rb', line 15

def scoped_enum(enum_name, enum_entries, scopes = {})
  enum(enum_name => enum_entries)
  scopes = HashWithIndifferentAccess.new_from_hash_copying_default(scopes)

  scope_creator = ScopeCreator.new(self, enum_name)
  scopes.each do |scope_name, scope_enum_keys|
    scope_creator.scope scope_name, scope_enum_keys
  end

  yield scope_creator if block_given?
  scope_creator.generate_enum_scopes_method
end