layouts in dsl
[sinatra.git] / lib / sinatra / dsl.rb
blobcdc29c5eef6d9e65ee40f16a9bc2558d1dad00d6
1 module Kernel
3   %w( get post put delete ).each do |verb|
4     eval <<-end_eval
5       def #{verb}(path, &block)
6         Sinatra::Event.new(:#{verb}, path, &block)
7       end
8     end_eval
9   end
10   
11   def after_attend(filter_name = nil, &block)
12     Sinatra::Event.after_attend(filter_name, &block)
13   end
14   
15   def helpers(&block)
16     Sinatra::EventContext.class_eval(&block)
17   end
19   def static(path, root)
20     Sinatra::StaticEvent.new(path, root)
21   end
22     
23   %w(test development production).each do |env|
24     module_eval <<-end_eval
25       def #{env}
26         yield if Sinatra::Options.environment == :#{env}
27       end
28     end_eval
29   end
30   
31   def layout(name = :layout, options = {})
32     Layouts[name] = unless block_given?
33       File.read("%s/%s" % [options[:views_directory] || 'views', name])
34     else
35       yield
36     end
37   end
38   
39 end