Module: Sinatra::Extension
- Includes:
- Delegator
- Defined in:
- lib/sinatra/extension.rb
Defined Under Namespace
Classes: MethodRecorder
Constant Summary collapse
- BasicObject =
Object
Instance Method Summary collapse
- #configure(*args, &block) ⇒ Object
- #method_calls ⇒ Object
- #on_disable(option, &block) ⇒ Object
- #on_enable(option, &block) ⇒ Object
- #on_register(&block) ⇒ Object
- #on_set(option, default_value = nil, &block) ⇒ Object
- #register(*extensions) ⇒ Object
- #register_hooks ⇒ Object
- #registered(klass) ⇒ Object
- #sinatra_application ⇒ Object
Methods included from Delegator
Instance Method Details
#configure(*args, &block) ⇒ Object
68 69 70 71 72 |
# File 'lib/sinatra/extension.rb', line 68 def configure(*args, &block) on_register do configure(*args) { |klass| klass.instance_yield block } end end |
#method_calls ⇒ Object
32 33 34 |
# File 'lib/sinatra/extension.rb', line 32 def method_calls @method_calls ||= [] end |
#on_disable(option, &block) ⇒ Object
56 57 58 |
# File 'lib/sinatra/extension.rb', line 56 def on_disable(option, &block) on_set(option, true) { instance_yield block unless __send__ option } end |
#on_enable(option, &block) ⇒ Object
60 61 62 |
# File 'lib/sinatra/extension.rb', line 60 def on_enable(option, &block) on_set(option, false) { instance_yield block if __send__ option } end |
#on_register(&block) ⇒ Object
40 41 42 |
# File 'lib/sinatra/extension.rb', line 40 def on_register(&block) register_hooks << block end |
#on_set(option, default_value = nil, &block) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/sinatra/extension.rb', line 44 def on_set(option, default_value = nil, &block) mod = Module.new mod.extend Sinatra::Extension define_method(option) { default_value } define_method("#{option}?") { !!__send__(option) } define_method("#{option}=") do |value| (option) { value } ("#{option}?") { !!value } instance_yield block end end |
#register(*extensions) ⇒ Object
64 65 66 |
# File 'lib/sinatra/extension.rb', line 64 def register(*extensions) on_register { register(*extensions) } end |
#register_hooks ⇒ Object
36 37 38 |
# File 'lib/sinatra/extension.rb', line 36 def register_hooks @register_hooks ||= [] end |
#registered(klass) ⇒ Object
74 75 76 77 78 |
# File 'lib/sinatra/extension.rb', line 74 def registered(klass) register Sinatra::Sugar method_calls.each { |a,b| klass.__send__(*a, &b) } register_hooks.each { |hook| klass.instance_yield hook } end |
#sinatra_application ⇒ Object
80 81 82 |
# File 'lib/sinatra/extension.rb', line 80 def sinatra_application @sinatra_application ||= MethodRecorder.new method_calls end |