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