Class: Node::Path

Inherits:
Object
  • Object
show all
Defined in:
lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/routing.rb

Instance Method Summary collapse

Instance Method Details

#to_codeObject



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/routing.rb', line 118

def to_code
  path_ivar = inject_root_ivar(self)
  "#{"if !callback && request.path.size == 1 && request.path.first == '' && (request.rack_request.head? || request.rack_request.get?) && request.rack_request.path_info[-1] == ?/
    catch(:pass) do
      response = ::Rack::Response.new
      response.redirect(request.rack_request.path_info[0, request.rack_request.path_info.size - 1], 302)
      return response.finish
    end
  end" if router.redirect_trailing_slash?}

  #{"if request.#{router.ignore_trailing_slash? ? 'path_finished?' : 'path.empty?'}" unless route.match_partially}
    catch(:pass) do
      if callback
        request.called = true
        callback.call(Response.new(request, #{path_ivar}))
      else
        env = request.rack_request.dup.env
        env['router.request'] = request
        env['router.params'] ||= {}
        #{"env['router.params'].merge!(Hash[#{param_names.inspect}.zip(request.params)])" if dynamic?}
        @router.rewrite#{"_partial" if route.match_partially}_path_info(env, request)
        response = @router.process_destination_path(#{path_ivar}, env)
        return response unless router.pass_on_response(response)
      end
    end
  #{"end" unless route.match_partially}"
end