lib/engine2/action.rb in engine2-1.0.1 vs lib/engine2/action.rb in engine2-1.0.2

- old
+ new

@@ -1,12 +1,13 @@ # coding: utf-8 module Engine2 + class Action < BasicObject ACCESS_FORBIDDEN ||= ->h{false} attr_reader :parent, :name, :number, :actions, :recheck_access - attr_reader :meta_proc, :meta_proc_chained + attr_reader :meta_proc class << self attr_accessor :count end @@ -18,21 +19,11 @@ @meta = meta_class.new(self, assets) @actions = {} end def * &blk - if blk - @meta_proc = if meta_proc = @meta_proc - @meta_proc_chained = true - ::Kernel::lambda do |obj| - obj.instance_eval(&meta_proc) - obj.instance_eval(&blk) - end - else - blk - end - end + @meta_proc = @meta_proc ? @meta_proc.chain(&blk) : blk if blk @meta end alias :meta :* @@ -72,10 +63,16 @@ define_action name, meta_class, assets do self.* &blk end end + def define_action_invoke name, meta_class = DummyMeta, assets = {}, &blk + define_action name, meta_class, assets do + self.*.define_singleton_method(:invoke, &blk) + end + end + def undefine_action name ::Kernel.raise E2Error.new("No action #{name} defined") unless @actions[name] @actions.delete(name) end @@ -161,11 +158,11 @@ each_action do |action| if model = action.*.assets[:model] model_name = model.name.to_sym model.synchronize_type_info model_actions[model_name] = action.to_a_rec{|a| !a.*.assets[:assoc]} - action.run_scheme(model_name) if SCHEMES.schemes[model_name] + action.run_scheme(model_name) if SCHEMES[model_name, false] false else true end end @@ -213,9 +210,13 @@ true end end ::Kernel::puts "VERIFY #{::Time.now - t}" + end + + def p *args + ::Kernel::p *args end end class ActionBundle \ No newline at end of file