Sha256: f0cf02ce61e5a93b6232660389ee9b6444be3f2d7bde012b715d5606539dcc65
Contents?: true
Size: 1.75 KB
Versions: 1
Compression:
Stored size: 1.75 KB
Contents
module Puffer module Controller module Dsl def self.included base base.class_eval do extend ClassMethods class_attribute :_members self._members = Puffer::Controller::Actions.new class_attribute :_collections self._collections = Puffer::Controller::Actions.new end end module ClassMethods def inherited klass klass._members = _members.dup klass._collections = _collections.dup super end def member &block block.bind(_members).call if block_given? end def collection &block block.bind(_collections).call if block_given? end def define_fields *actions actions.each do |action| class_attribute "_#{action}_fields" send "_#{action}_fields=", Puffer::Fields.new unless send("_#{action}_fields?") helper_method "#{action}_fields" self.class.instance_eval do define_method action do |&block| @_fields = send("_#{action}_fields=", Puffer::Fields.new) block.call if block remove_instance_variable :@_fields end define_method "#{action}_fields" do send "_#{action}_fields" end end define_method "#{action}_fields" do self.class.send "#{action}_fields" end end end def field name, options = {}, &block field = @_fields.field(name, model, options, &block) if @_fields generate_association_actions field if field.reflection #generate_change_actions field if field.toggable? end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
puffer-0.0.20 | lib/puffer/controller/dsl.rb |