From 09f799e5814e3ae77fea2ac47cca374b60b2e446 Mon Sep 17 00:00:00 2001 From: Akira Matsuda Date: Fri, 11 Feb 2011 03:45:43 +0900 Subject: [PATCH] move tags into another file --- lib/kaminari/helpers.rb | 88 +--------------------------------------- lib/kaminari/tags.rb | 89 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 86 deletions(-) create mode 100644 lib/kaminari/tags.rb diff --git a/lib/kaminari/helpers.rb b/lib/kaminari/helpers.rb index 0bec0ef..5c5e7bd 100644 --- a/lib/kaminari/helpers.rb +++ b/lib/kaminari/helpers.rb @@ -1,91 +1,7 @@ +require File.join(File.dirname(__FILE__), 'tags') + module Kaminari module Helpers - class Tag - def self.template_filename - name.demodulize.underscore - end - - def initialize(renderer, options = {}) - @renderer, @options = renderer, renderer.options.merge(options) - end - - def to_s(locals = {}) - @renderer.render :partial => find_template, :locals => @options.merge(locals) - end - - private - # OMG yet another super dirty hack - # this method finds - # 1. a template for the given class from app/views - # 2. a template for its parent class from app/views - # 3. the default one inside the engine - def find_template(klass = self.class) - if @renderer.resolver.find_all(*args_for_lookup(klass)).present? - "kaminari/#{klass.template_filename}" - elsif (parent = klass.ancestors[1]) == Tag - "kaminari/#{self.class.template_filename}" - else - find_template parent - end - end - - def args_for_lookup(klass) - if (method = @renderer.context.method :args_for_lookup).arity == 3 - # 3.0 - method.call klass.template_filename, 'kaminari', true - else - # 3.1 - method.call klass.template_filename, 'kaminari', true, [] - end - end - - def page_url_for(page) - @renderer.url_for @renderer.params.merge(:page => (page <= 1 ? nil : page)) - end - end - - class PrevSpan < Tag - end - - class PrevLink < Tag - def to_s - super :prev_url => page_url_for(@options[:current_page] - 1) - end - end - - class NextSpan < Tag - end - - class NextLink < Tag - def to_s - super :next_url => page_url_for(@options[:current_page] + 1) - end - end - - class PageLink < Tag - def to_s - super :page_url => page_url_for(@options[:page]) - end - end - - class CurrentPage < Tag - def to_s - super :page_url => page_url_for(@options[:page]) - end - end - - class FirstPageLink < PageLink - end - - class LastPageLink < PageLink - end - - class TruncatedSpan < Tag - end - - class Paginator < Tag - end - class PaginationRenderer attr_reader :options diff --git a/lib/kaminari/tags.rb b/lib/kaminari/tags.rb new file mode 100644 index 0000000..16a888f --- /dev/null +++ b/lib/kaminari/tags.rb @@ -0,0 +1,89 @@ +module Kaminari + module Helpers + class Tag + def self.template_filename + name.demodulize.underscore + end + + def initialize(renderer, options = {}) + @renderer, @options = renderer, renderer.options.merge(options) + end + + def to_s(locals = {}) + @renderer.render :partial => find_template, :locals => @options.merge(locals) + end + + private + # OMG yet another super dirty hack + # this method finds + # 1. a template for the given class from app/views + # 2. a template for its parent class from app/views + # 3. the default one inside the engine + def find_template(klass = self.class) + if @renderer.resolver.find_all(*args_for_lookup(klass)).present? + "kaminari/#{klass.template_filename}" + elsif (parent = klass.ancestors[1]) == Tag + "kaminari/#{self.class.template_filename}" + else + find_template parent + end + end + + def args_for_lookup(klass) + if (method = @renderer.context.method :args_for_lookup).arity == 3 + # 3.0 + method.call klass.template_filename, 'kaminari', true + else + # 3.1 + method.call klass.template_filename, 'kaminari', true, [] + end + end + + def page_url_for(page) + @renderer.url_for @renderer.params.merge(:page => (page <= 1 ? nil : page)) + end + end + + class PrevSpan < Tag + end + + class PrevLink < Tag + def to_s + super :prev_url => page_url_for(@options[:current_page] - 1) + end + end + + class NextSpan < Tag + end + + class NextLink < Tag + def to_s + super :next_url => page_url_for(@options[:current_page] + 1) + end + end + + class PageLink < Tag + def to_s + super :page_url => page_url_for(@options[:page]) + end + end + + class CurrentPage < Tag + def to_s + super :page_url => page_url_for(@options[:page]) + end + end + + class FirstPageLink < PageLink + end + + class LastPageLink < PageLink + end + + class TruncatedSpan < Tag + end + + class Paginator < Tag + end + end +end