Module: Falcor::DefineDsl::ClassMethods
- Defined in:
- lib/falcor/define_dsl.rb
Instance Method Summary collapse
- #allow(attr) ⇒ Object
- #association(attr, model = nil) ⇒ Object
- #create_list(attr, count, model) ⇒ Object
- #field(attr, default) ⇒ Object
Instance Method Details
#allow(attr) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/falcor/define_dsl.rb', line 10 def allow(attr) self.fields = (self.fields || []).push(attr) default_blk = Proc.new { self.instance_variable_get("@#{attr}".to_sym) } self.send(:define_method, attr, default_blk) default_assignment_blk = Proc.new do |val| self.instance_variable_set("@#{attr}".to_sym, val) end self.send(:define_method, "#{attr}=", default_assignment_blk) end |
#association(attr, model = nil) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/falcor/define_dsl.rb', line 36 def association(attr, model=nil) self.associations = (self.associations || []).push(attr) unless model model = Factory attr end default_blk = Proc.new { self.instance_variable_get("@#{attr}".to_sym) || model } self.send(:define_method, attr, default_blk) default_assignment_blk = Proc.new do |val| if val.class == Hash association = self.send(attr) val.each do |k,v| association.send(:"#{k}=", v) end else self.instance_variable_set("@#{attr}".to_sym, val) end end self.send(:define_method, "#{attr}=", default_assignment_blk) end |
#create_list(attr, count, model) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/falcor/define_dsl.rb', line 59 def create_list(attr, count, model) self.lists = (self.lists || []).push(attr) models = [] count.times do models << model end default_blk = Proc.new { self.instance_variable_get("@#{attr}".to_sym) || models } self.send(:define_method, attr, default_blk) default_assignment_blk = Proc.new do |val| raise "Invalid association list" unless val.class == Array factory_name = ActiveSupport::Inflector.singularize(attr).to_sym overrides = val.map do |override| Factory(factory_name, override) end self.instance_variable_set("@#{attr}".to_sym, overrides) end self.send(:define_method, "#{attr}=", default_assignment_blk) end |
#field(attr, default) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/falcor/define_dsl.rb', line 23 def field(attr, default) self.fields = (self.fields || []).push(attr) default_blk = Proc.new { self.instance_variable_get("@#{attr}".to_sym) || default } self.send(:define_method, attr, default_blk) default_assignment_blk = Proc.new do |val| self.instance_variable_set("@#{attr}".to_sym, val) end self.send(:define_method, "#{attr}=", default_assignment_blk) end |