33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/hammock/callbacks.rb', line 33
def define_hammock_callbacks *callbacks
callbacks.each do |callback|
class_eval " def self.\#{callback}(*methods, &block)\n callbacks = if !block_given? || methods.length > 1\n CallbackChain.build(:\#{callback}, *methods, &block)\n else # hammock-style callback\n if methods.empty?\n log \"<-- you should give this callback a description\", :skip => 1\n elsif !methods.first.is_a?(String)\n raise ArgumentError, \"Inline callback definitions require a description as their sole argument.\"\n else\n # logger.info \"defining \\\#{methods.first} on \\\#{name} with method \\\#{block.inspect}.\"\n [Hammock::Callback.new(:\#{callback}, block, :identifier => methods.first)]\n end || []\n end\n # log callbacks\n (@\#{callback}_callbacks ||= CallbackChain.new).concat callbacks\n end\n\n def self.\#{callback}_callback_chain\n @\#{callback}_callbacks ||= CallbackChain.new\n\n if superclass.respond_to?(:\#{callback}_callback_chain)\n CallbackChain.new(superclass.\#{callback}_callback_chain + @\#{callback}_callbacks)\n else\n @\#{callback}_callbacks\n end\n end\n end_eval\n end\nend\n"
|