Skip to content
This repository has been archived by the owner on Apr 17, 2018. It is now read-only.

Move flags support module into Types::Support namespace #30

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 3 additions & 5 deletions lib/dm-types/enum.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module DataMapper
class Property
class Enum < Integer

include Flags
include Types::Support::Flags

def initialize(model, name, options = {})
super
Expand All @@ -19,10 +19,8 @@ def initialize(model, name, options = {})

if defined?(::DataMapper::Validations)
unless model.skip_auto_validation_for?(self)
if self.class.ancestors.include?(Property::Enum)
allowed = flag_map.values_at(*flag_map.keys.sort)
model.validates_within name, model.options_with_message({ :set => allowed }, self, :within)
end
allowed = flag_map.values_at(*flag_map.keys.sort)
model.validates_within name, model.options_with_message({ :set => allowed }, self, :within)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/dm-types/flag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module DataMapper
class Property
class Flag < Integer

include Flags
include Types::Support::Flags

def initialize(model, name, options = {})
super
Expand Down
67 changes: 35 additions & 32 deletions lib/dm-types/support/flags.rb
Original file line number Diff line number Diff line change
@@ -1,41 +1,44 @@
module DataMapper
class Property
module Flags
def self.included(base)
base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
extend DataMapper::Property::Flags::ClassMethods
module Types
module Support
module Flags
def self.included(base)
base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
extend DataMapper::Types::Support::Flags::ClassMethods

accept_options :flags
attr_reader :flag_map
accept_options :flags
attr_reader :flag_map

class << self
attr_accessor :generated_classes
end
class << self
attr_accessor :generated_classes
end

self.generated_classes = {}
RUBY
end
self.generated_classes = {}
RUBY
end

def custom?
true
end
def custom?
true
end

module ClassMethods
# TODO: document
# @api public
def [](*values)
if klass = generated_classes[values.flatten]
klass
else
klass = ::Class.new(self)
klass.flags(values)
module ClassMethods
# TODO: document
# @api public
def [](*values)
if klass = generated_classes[values.flatten]
klass
else
klass = ::Class.new(self)
klass.flags(values)

generated_classes[values.flatten] = klass
generated_classes[values.flatten] = klass

klass
klass
end
end
end
end
end
end
end
end # module ClassMethods

end # module Flags
end # module Support
end # module Types
end # module DataMapper