godfat-pagify 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +11 -0
- data/README +36 -22
- data/Rakefile +28 -36
- data/TODO +9 -1
- data/lib/pagify.rb +7 -2
- data/lib/pagify/active_record.rb +3 -5
- data/lib/pagify/array.rb +2 -2
- data/lib/pagify/data_mapper.rb +3 -11
- data/lib/pagify/{helpers → helper}/abstract.rb +39 -19
- data/lib/pagify/{helpers/details → helper/detail}/setting.rb +5 -5
- data/lib/pagify/{helpers/details → helper/detail}/setup.rb +1 -1
- data/lib/pagify/{helpers → helper}/html.rb +10 -9
- data/lib/pagify/helper/rails.rb +23 -0
- data/lib/pagify/{pages → page}/basic.rb +2 -4
- data/lib/pagify/{pages → page}/null.rb +2 -3
- data/lib/pagify/{pagers → pager}/active_record.rb +2 -4
- data/lib/pagify/{pagers → pager}/array.rb +2 -3
- data/lib/pagify/{pagers → pager}/basic.rb +2 -2
- data/lib/pagify/{pagers → pager}/data_mapper.rb +2 -3
- data/lib/pagify/{pagers/details → pager/detail}/page_accept_string_or_blank.rb +2 -3
- data/lib/pagify/{pagers → pager}/null.rb +1 -3
- data/lib/pagify/pagifier/abstract.rb +10 -0
- data/lib/pagify/{pagifiers → pagifier}/active_record.rb +1 -1
- data/lib/pagify/{pagifiers → pagifier}/array.rb +1 -1
- data/lib/pagify/{pagifiers → pagifier}/data_mapper.rb +2 -2
- data/lib/pagify/version.rb +1 -1
- data/pagify.gemspec +19 -27
- data/test/helper.rb +14 -2
- data/test/{suite_for_model.rb → helper_model.rb} +1 -43
- data/test/{test_pagify.rb → helper_pagify.rb} +1 -3
- data/test/test_active_record.rb +9 -14
- data/test/test_array.rb +1 -1
- data/test/test_basic.rb +1 -1
- data/test/test_data_mapper.rb +3 -2
- data/test/test_html.rb +33 -7
- data/test/test_null.rb +19 -10
- data/test/test_rails.rb +32 -0
- metadata +39 -66
- data/lib/pagify/basic.rb +0 -3
- data/lib/pagify/null.rb +0 -5
- data/lib/pagify/pagifiers/abstract.rb +0 -34
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
require 'pagify/helper/html'
|
3
|
+
|
4
|
+
module Pagify::Helper::Rails
|
5
|
+
def default_attributes
|
6
|
+
super.merge(:query_name => :page, :wrapper_class => 'pagination')
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Pagify::Helper::HTML
|
11
|
+
extend Pagify::Helper::Rails
|
12
|
+
end
|
13
|
+
|
14
|
+
module ApplicationHelper
|
15
|
+
def would_paginate objs, &path
|
16
|
+
path = lambda{ request.path } unless block_given?
|
17
|
+
html = objs.pager.html
|
18
|
+
name = html.setting[:query_name]
|
19
|
+
"<div class=\"#{html.setting[:wrapper_class]}\">" +
|
20
|
+
html.links_full(params[name]){ |p| path.call + "?#{name}=#{p}" } +
|
21
|
+
'</div>'
|
22
|
+
end
|
23
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
|
-
require 'pagify/
|
2
|
+
require 'pagify/pagifier/abstract'
|
3
3
|
|
4
4
|
module DataMapper
|
5
5
|
module Model
|
6
6
|
include Pagify::Pagifier
|
7
7
|
def pagify_pager_create model, opts
|
8
|
-
Pagify::DataMapperPager.new
|
8
|
+
Pagify::DataMapperPager.new(model, opts, model.query)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/pagify/version.rb
CHANGED
data/pagify.gemspec
CHANGED
@@ -1,51 +1,43 @@
|
|
1
|
-
|
2
1
|
# -*- encoding: utf-8 -*-
|
3
2
|
|
4
3
|
Gem::Specification.new do |s|
|
5
4
|
s.name = %q{pagify}
|
6
|
-
s.version = "0.
|
5
|
+
s.version = "0.6.1"
|
7
6
|
|
8
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.authors = ["Lin Jen-Shin (
|
10
|
-
s.date = %q{
|
11
|
-
s.description = %q{
|
8
|
+
s.authors = ["Lin Jen-Shin (aka godfat \347\234\237\345\270\270)"]
|
9
|
+
s.date = %q{2009-07-30}
|
10
|
+
s.description = %q{ Pagination tools for Array(or custom class), DataMapper and ActiveRecord}
|
12
11
|
s.email = %q{godfat (XD) godfat.org}
|
13
12
|
s.extra_rdoc_files = ["CHANGES", "LICENSE", "NOTICE", "README", "TODO", "pagify.gemspec"]
|
14
|
-
s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "lib/pagify.rb", "lib/pagify/active_record.rb", "lib/pagify/array.rb", "lib/pagify/
|
15
|
-
s.has_rdoc = true
|
13
|
+
s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "lib/pagify.rb", "lib/pagify/active_record.rb", "lib/pagify/array.rb", "lib/pagify/data_mapper.rb", "lib/pagify/helper/abstract.rb", "lib/pagify/helper/detail/setting.rb", "lib/pagify/helper/detail/setup.rb", "lib/pagify/helper/html.rb", "lib/pagify/helper/rails.rb", "lib/pagify/page/basic.rb", "lib/pagify/page/null.rb", "lib/pagify/pager/active_record.rb", "lib/pagify/pager/array.rb", "lib/pagify/pager/basic.rb", "lib/pagify/pager/data_mapper.rb", "lib/pagify/pager/detail/page_accept_string_or_blank.rb", "lib/pagify/pager/null.rb", "lib/pagify/pagifier/abstract.rb", "lib/pagify/pagifier/active_record.rb", "lib/pagify/pagifier/array.rb", "lib/pagify/pagifier/data_mapper.rb", "lib/pagify/version.rb", "pagify.gemspec", "spec/pagify_spec.rb", "spec/spec_helper.rb", "test/helper.rb", "test/helper_model.rb", "test/helper_pagify.rb", "test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_rails.rb"]
|
16
14
|
s.homepage = %q{http://github.com/godfat/pagify}
|
17
|
-
s.rdoc_options = ["--
|
15
|
+
s.rdoc_options = ["--charset=utf-8", "--inline-source", "--line-numbers", "--promiscuous", "--main", "README"]
|
18
16
|
s.require_paths = ["lib"]
|
19
17
|
s.rubyforge_project = %q{ludy}
|
20
|
-
s.rubygems_version = %q{1.3.
|
21
|
-
s.summary = %q{
|
22
|
-
s.test_files = ["test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/
|
18
|
+
s.rubygems_version = %q{1.3.4}
|
19
|
+
s.summary = %q{Pagination tools for Array(or custom class), DataMapper and ActiveRecord}
|
20
|
+
s.test_files = ["test/test_active_record.rb", "test/test_array.rb", "test/test_basic.rb", "test/test_data_mapper.rb", "test/test_html.rb", "test/test_null.rb", "test/test_rails.rb"]
|
23
21
|
|
24
22
|
if s.respond_to? :specification_version then
|
25
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
26
|
-
s.specification_version =
|
24
|
+
s.specification_version = 3
|
27
25
|
|
28
26
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
29
|
-
s.add_development_dependency(%q<bones>, [">= 2.1
|
30
|
-
s.add_development_dependency(%q<
|
31
|
-
s.add_development_dependency(%q<dm-
|
32
|
-
s.add_development_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
|
27
|
+
s.add_development_dependency(%q<bones>, [">= 2.5.1"])
|
28
|
+
s.add_development_dependency(%q<dm-core>, [">= 0.9.9"])
|
29
|
+
s.add_development_dependency(%q<dm-aggregates>, [">= 0.9.9"])
|
33
30
|
s.add_development_dependency(%q<activerecord>, [">= 2.0.0"])
|
34
|
-
s.add_development_dependency(%q<minitest>, [">= 1.3.0"])
|
35
31
|
else
|
36
|
-
s.add_dependency(%q<bones>, [">= 2.1
|
37
|
-
s.add_dependency(%q<
|
38
|
-
s.add_dependency(%q<dm-
|
39
|
-
s.add_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
|
32
|
+
s.add_dependency(%q<bones>, [">= 2.5.1"])
|
33
|
+
s.add_dependency(%q<dm-core>, [">= 0.9.9"])
|
34
|
+
s.add_dependency(%q<dm-aggregates>, [">= 0.9.9"])
|
40
35
|
s.add_dependency(%q<activerecord>, [">= 2.0.0"])
|
41
|
-
s.add_dependency(%q<minitest>, [">= 1.3.0"])
|
42
36
|
end
|
43
37
|
else
|
44
|
-
s.add_dependency(%q<bones>, [">= 2.1
|
45
|
-
s.add_dependency(%q<
|
46
|
-
s.add_dependency(%q<dm-
|
47
|
-
s.add_dependency(%q<dm-aggregates>, ["<= 0.9.7"])
|
38
|
+
s.add_dependency(%q<bones>, [">= 2.5.1"])
|
39
|
+
s.add_dependency(%q<dm-core>, [">= 0.9.9"])
|
40
|
+
s.add_dependency(%q<dm-aggregates>, [">= 0.9.9"])
|
48
41
|
s.add_dependency(%q<activerecord>, [">= 2.0.0"])
|
49
|
-
s.add_dependency(%q<minitest>, [">= 1.3.0"])
|
50
42
|
end
|
51
43
|
end
|
data/test/helper.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
|
2
2
|
require 'rubygems'
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
TestCase = begin
|
5
|
+
require 'minitest/unit'
|
6
|
+
MiniTest::Unit.autorun
|
7
|
+
MiniTest::Unit::TestCase
|
8
|
+
rescue LoadError
|
9
|
+
require 'test/unit'
|
10
|
+
Test::Unit::TestCase
|
11
|
+
end
|
5
12
|
|
6
13
|
require 'pagify'
|
14
|
+
#gem 'dm-core', '<0.10'
|
15
|
+
#gem 'dm-aggregates', '<0.10'
|
16
|
+
require 'dm-core'
|
17
|
+
require 'dm-aggregates'
|
18
|
+
require 'active_record'
|
7
19
|
|
8
20
|
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.8.7')
|
9
21
|
class Symbol
|
@@ -1,48 +1,6 @@
|
|
1
1
|
|
2
|
-
# require 'extlib'
|
3
|
-
require 'test/test_pagify'
|
4
|
-
|
5
2
|
module SuiteForModel
|
6
3
|
|
7
|
-
def test_cache_for_pager
|
8
|
-
send(:User).pagify_cache = true
|
9
|
-
|
10
|
-
users1 = send(:User).pagify :page => 1, :per_page => 2
|
11
|
-
pager = send(:User).pagify_pager
|
12
|
-
|
13
|
-
users2 = send(:User).pagify :page => 2, :per_page => 2
|
14
|
-
|
15
|
-
# same pager
|
16
|
-
assert_equal users1.pager.object_id, send(:User).pagify_pager.object_id
|
17
|
-
assert_equal users2.pager.object_id, send(:User).pagify_pager.object_id
|
18
|
-
assert_equal send(:User).pagify(:per_page => 1).pager.object_id, users1.pager.object_id
|
19
|
-
|
20
|
-
# there's cache
|
21
|
-
assert send(:User).pagify_pager != nil
|
22
|
-
|
23
|
-
# cleanup cache
|
24
|
-
send(:User).pagify_cache = false
|
25
|
-
assert_nil send(:User).pagify_pager
|
26
|
-
ensure
|
27
|
-
# ensure we cleanup the cache.
|
28
|
-
send(:User).pagify_cache = false
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_no_cache_for_pager
|
32
|
-
assert_nil send(:User).pagify_pager
|
33
|
-
|
34
|
-
users1 = send(:User).pagify :page => 1, :per_page => 2
|
35
|
-
pager = send(:User).pagify_pager
|
36
|
-
|
37
|
-
users2 = send(:User).pagify :page => 2, :per_page => 2
|
38
|
-
|
39
|
-
assert_nil send(:User).pagify_pager
|
40
|
-
|
41
|
-
# not same pager for same opts
|
42
|
-
assert users1.pager.object_id != send(:User).pagify_pager.object_id
|
43
|
-
assert users2.pager.object_id != send(:User).pagify_pager.object_id
|
44
|
-
end
|
45
|
-
|
46
4
|
def test_page_correctness_fixnum
|
47
5
|
page_correctness 1
|
48
6
|
end
|
@@ -64,7 +22,7 @@ module SuiteForModel
|
|
64
22
|
assert_equal 1, users.page
|
65
23
|
assert_equal send(:User).first, users.first
|
66
24
|
assert_equal 2, users.size
|
67
|
-
assert_equal send(:User).first(:offset => 2), users.next.first
|
25
|
+
assert_equal send(:User).first(:offset => 2, :limit => 1), users.next.first
|
68
26
|
assert_equal 1, users.next.size
|
69
27
|
assert_equal Pagify::NullPage.new(users.pager), users.next.next
|
70
28
|
end
|
data/test/test_active_record.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
|
2
2
|
require 'test/helper'
|
3
|
-
require 'test/
|
3
|
+
require 'test/helper_pagify'
|
4
|
+
require 'test/helper_model'
|
4
5
|
|
5
6
|
require 'pagify/active_record'
|
6
7
|
|
7
|
-
gem 'dm-core', '<=0.9.7'
|
8
|
-
require 'dm-core' # to help with active record to create database
|
9
|
-
|
10
8
|
class TestActiveRecord < TestPagify
|
11
9
|
def test_for_active_record
|
12
10
|
for_pager Pagify::ActiveRecordPager.new(Topic)
|
@@ -23,30 +21,27 @@ class TestActiveRecord < TestPagify
|
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
26
|
-
|
27
|
-
|
24
|
+
DataMapper.setup(:active_record, 'sqlite3:tmp/active_record.sqlite3')
|
25
|
+
|
28
26
|
class UserForActiveRecord
|
29
27
|
include DataMapper::Resource
|
30
|
-
property :id, Serial
|
31
|
-
property :name, String
|
32
28
|
def self.default_repository_name
|
33
29
|
:active_record
|
34
30
|
end
|
35
|
-
|
36
|
-
|
37
|
-
# end why
|
31
|
+
property :id, Serial
|
32
|
+
property :name, String
|
38
33
|
storage_names[default_repository_name] = 'users'
|
39
34
|
auto_migrate!
|
40
35
|
end
|
41
36
|
|
42
37
|
class PetForActiveRecord
|
43
38
|
include DataMapper::Resource
|
44
|
-
property :id, Serial
|
45
|
-
property :name, String
|
46
|
-
property :user_id, Integer
|
47
39
|
def self.default_repository_name
|
48
40
|
:active_record
|
49
41
|
end
|
42
|
+
property :id, Serial
|
43
|
+
property :name, String
|
44
|
+
property :user_id, Integer, :nullable => true
|
50
45
|
storage_names[default_repository_name] = 'pets'
|
51
46
|
auto_migrate!
|
52
47
|
end
|
data/test/test_array.rb
CHANGED
data/test/test_basic.rb
CHANGED
data/test/test_data_mapper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'test/helper'
|
3
|
-
require 'test/
|
3
|
+
require 'test/helper_pagify'
|
4
|
+
require 'test/helper_model'
|
4
5
|
|
5
6
|
require 'pagify/data_mapper'
|
6
7
|
|
@@ -40,7 +41,7 @@ class TestDataMapper < TestPagify
|
|
40
41
|
include DataMapper::Resource
|
41
42
|
property :id, Serial
|
42
43
|
property :name, String
|
43
|
-
belongs_to :user
|
44
|
+
belongs_to :user, :nullable => true
|
44
45
|
end
|
45
46
|
|
46
47
|
User.auto_migrate!
|
data/test/test_html.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
|
2
2
|
require 'test/helper'
|
3
3
|
|
4
|
-
require 'pagify/
|
4
|
+
require 'pagify/helper/html'
|
5
5
|
|
6
|
-
class TestHTML <
|
6
|
+
class TestHTML < TestCase
|
7
7
|
# def test_page_and_pager_has_same_html
|
8
8
|
# pager = Pagify::ArrayPager.new [1]
|
9
9
|
# assert_equal pager.html.object_id, pager[1].html.object_id
|
@@ -12,7 +12,7 @@ class TestHTML < MiniTest::Unit::TestCase
|
|
12
12
|
def test_html
|
13
13
|
pager1 = Pagify::ArrayPager.new []
|
14
14
|
assert_equal ' ', pager1.html.setting[:separator]
|
15
|
-
assert_equal Pagify::
|
15
|
+
assert_equal Pagify::Helper::HTML.object_id, pager1.html.class.object_id
|
16
16
|
|
17
17
|
pager1.html.setting[:separator] = 'XD'
|
18
18
|
assert_equal 'XD', pager1.html.setting[:separator]
|
@@ -148,13 +148,39 @@ class TestHTML < MiniTest::Unit::TestCase
|
|
148
148
|
|
149
149
|
def test_3_pages
|
150
150
|
pager = Pagify::ArrayPager.new([1,2,3,4,5], :per_page => 2)
|
151
|
-
|
152
|
-
assert_equal '<a href="
|
153
|
-
|
151
|
+
|
152
|
+
assert_equal '« First <a href="2">2</a> <a href="3">Last »</a>',
|
153
|
+
pager.html.links(1, &:to_s)
|
154
|
+
|
155
|
+
assert_equal '<a href="1">« First</a> 2 <a href="3">Last »</a>',
|
156
|
+
pager.html.links(2, &:to_s)
|
157
|
+
|
158
|
+
assert_equal '<a href="1">« First</a> <a href="2">2</a> Last »',
|
159
|
+
pager.html.links(3, &:to_s)
|
154
160
|
|
155
161
|
assert_equal '<a href="2">Next ></a>', pager.html.links_navigate(1, &:to_s)
|
156
|
-
|
162
|
+
|
163
|
+
assert_equal '<a href="1">< Previous</a> <a href="3">Next ></a>',
|
164
|
+
pager.html.links_navigate(2, &:to_s)
|
165
|
+
|
157
166
|
assert_equal '<a href="2">< Previous</a>', pager.html.links_navigate(3, &:to_s)
|
158
167
|
end
|
159
168
|
|
169
|
+
def test_more_pages_to_left_or_right
|
170
|
+
pager = Pagify::ArrayPager.new((1..33).to_a, :per_page => 3)
|
171
|
+
|
172
|
+
first = ['« First', '<a href="1">« First</a>']
|
173
|
+
last = ['Last »', '<a href="11">Last »</a>']
|
174
|
+
|
175
|
+
(1..11).each{ |page|
|
176
|
+
expected = (2..10).map{ |i| i == page ? i.to_s : "<a href=\"#{i}\">#{i}</a>" }
|
177
|
+
|
178
|
+
expected.unshift( page == 1 ? first.first : first.last )
|
179
|
+
expected.push( page == 11 ? last.first : last.last )
|
180
|
+
|
181
|
+
assert_equal expected.join(' '), pager.html.links(page, &:to_s)
|
182
|
+
}
|
183
|
+
|
184
|
+
end
|
185
|
+
|
160
186
|
end
|