Skip to content

Commit

Permalink
Sinatra has taken the stage
Browse files Browse the repository at this point in the history
  • Loading branch information
mislav committed Aug 2, 2011
1 parent 095dbb0 commit e8205b5
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/will_paginate.rb
Expand Up @@ -17,3 +17,7 @@ module WillPaginate
end
end
end

if defined?(Sinatra) and Sinatra.respond_to? :register
require 'will_paginate/view_helpers/sinatra'
end
41 changes: 41 additions & 0 deletions lib/will_paginate/view_helpers/sinatra.rb
@@ -0,0 +1,41 @@
require 'sinatra/base'
require 'will_paginate/view_helpers'
require 'will_paginate/view_helpers/link_renderer'

module WillPaginate
module Sinatra
module Helpers
include ViewHelpers

def will_paginate(collection, options = {}) #:nodoc:
options = options.merge(:renderer => LinkRenderer) unless options[:renderer]
super(collection, options)
end
end

class LinkRenderer < ViewHelpers::LinkRenderer
protected

def url(page)
str = File.join(request.script_name.to_s, request.path_info)
params = request.GET.merge(param_name.to_s => page.to_s)
params.update @options[:params] if @options[:params]
str << '?' << build_query(params)
end

def request
@template.request
end

def build_query(params)
Rack::Utils.build_nested_query params
end
end

def self.registered(app)
app.helpers Helpers
end

::Sinatra.register self
end
end

0 comments on commit e8205b5

Please sign in to comment.