class AutoForme::Frameworks::Sinatra

  1. lib/autoforme/frameworks/sinatra.rb
Superclass: Framework

Methods

Public Class

  1. new

Public Class methods

new (*)

Add get and post routes when creating the framework. These routes can potentially match other routes, but in that case use pass to try the next route.

[show source]
   # File lib/autoforme/frameworks/sinatra.rb
39 def initialize(*)
40   super
41   framework = self
42   block = lambda do
43     if @autoforme_action = framework.action_for(Request.new(self))
44       @autoforme_text = @autoforme_action.handle
45 
46       if @autoforme_action.output_type == 'csv'
47         response['Content-Type'] = 'text/csv'
48         response['Content-Disposition'] = "attachment; filename=#{@autoforme_action.output_filename}"
49         @autoforme_text
50       elsif @autoforme_action.request.xhr?
51         @autoforme_text
52       else
53         erb "<%= @autoforme_text %>".dup
54       end
55     else
56       pass
57     end
58   end
59 
60   prefix = Regexp.escape(framework.prefix) if framework.prefix
61   if ::Sinatra::VERSION < '2'
62     prefix = "\\A#{prefix}"
63     suffix = "\\z"
64   end
65   regexp = %r{#{prefix}/([\w:]+)/(\w+)(?:/([\w-]+))?#{suffix}}
66   @controller.get regexp, &block
67   @controller.post regexp, &block
68 end