Skip to content

Commit

Permalink
Moving enum_options to ClassyEnum::Collection
Browse files Browse the repository at this point in the history
  • Loading branch information
beerlington committed Jul 14, 2012
1 parent 54c66d8 commit 2fd0c4e
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
2 changes: 1 addition & 1 deletion lib/classy_enum.rb
@@ -1,4 +1,4 @@
require 'classy_enum/conversion'
require 'classy_enum/collection'
require 'classy_enum/conversion'
require 'classy_enum/base'
require 'classy_enum/attributes'
10 changes: 4 additions & 6 deletions lib/classy_enum/base.rb
Expand Up @@ -6,14 +6,13 @@ class Base
include Conversion
extend Collection

class_attribute :enum_options, :base_class
class_attribute :base_class
attr_accessor :owner, :serialize_as_json

class << self
def inherited(klass)
if self == ClassyEnum::Base
klass.enum_options = []
klass.base_class = klass
klass.base_class = klass
else

# Ensure subclasses follow expected naming conventions
Expand All @@ -29,18 +28,17 @@ def inherited(klass)
# Convert from MyEnumClassNumberTwo to :number_two
enum = klass.name.gsub(klass.base_class.name, '').underscore.to_sym

enum_options << klass

# Define attribute methods like two?
base_class.class_eval do
define_method "#{enum}?", lambda { attribute?(enum.to_s) }
end

klass.class_eval do
@index = enum_options.size
@option = enum
end
end

super
end

# Build a new ClassyEnum child instance
Expand Down
11 changes: 11 additions & 0 deletions lib/classy_enum/collection.rb
@@ -1,5 +1,16 @@
module ClassyEnum
module Collection
def inherited(klass)
if self == ClassyEnum::Base
klass.class_attribute :enum_options
klass.enum_options = []
else
enum_options << klass
klass.instance_variable_set('@index', enum_options.size)
end

super
end

# Returns an array of all instantiated enums
#
Expand Down

0 comments on commit 2fd0c4e

Please sign in to comment.