pagify 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 +42 -0
- data/LICENSE +201 -0
- data/NOTICE +5 -0
- data/README +135 -0
- data/Rakefile +54 -0
- data/TODO +12 -0
- data/lib/pagify.rb +14 -0
- data/lib/pagify/active_record.rb +17 -0
- data/lib/pagify/array.rb +6 -0
- data/lib/pagify/data_mapper.rb +8 -0
- data/lib/pagify/helper/abstract.rb +112 -0
- data/lib/pagify/helper/detail/setting.rb +54 -0
- data/lib/pagify/helper/detail/setup.rb +23 -0
- data/lib/pagify/helper/html.rb +86 -0
- data/lib/pagify/helper/rails.rb +23 -0
- data/lib/pagify/page/basic.rb +56 -0
- data/lib/pagify/page/null.rb +10 -0
- data/lib/pagify/pager/active_record.rb +30 -0
- data/lib/pagify/pager/array.rb +21 -0
- data/lib/pagify/pager/basic.rb +114 -0
- data/lib/pagify/pager/data_mapper.rb +29 -0
- data/lib/pagify/pager/detail/page_accept_string_or_blank.rb +13 -0
- data/lib/pagify/pager/null.rb +15 -0
- data/lib/pagify/pagifier/abstract.rb +10 -0
- data/lib/pagify/pagifier/active_record.rb +11 -0
- data/lib/pagify/pagifier/array.rb +9 -0
- data/lib/pagify/pagifier/data_mapper.rb +11 -0
- data/lib/pagify/version.rb +4 -0
- data/pagify.gemspec +43 -0
- data/spec/pagify_spec.rb +8 -0
- data/spec/spec_helper.rb +17 -0
- data/tasks/ann.rake +80 -0
- data/tasks/bones.rake +20 -0
- data/tasks/gem.rake +201 -0
- data/tasks/git.rake +40 -0
- data/tasks/notes.rake +27 -0
- data/tasks/post_load.rake +34 -0
- data/tasks/rdoc.rake +51 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +292 -0
- data/tasks/spec.rake +54 -0
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- data/tasks/zentest.rake +36 -0
- data/test/helper.rb +26 -0
- data/test/helper_model.rb +83 -0
- data/test/helper_pagify.rb +39 -0
- data/test/test_active_record.rb +66 -0
- data/test/test_array.rb +19 -0
- data/test/test_basic.rb +22 -0
- data/test/test_data_mapper.rb +56 -0
- data/test/test_html.rb +186 -0
- data/test/test_null.rb +31 -0
- data/test/test_rails.rb +32 -0
- metadata +163 -0
data/test/test_html.rb
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
|
2
|
+
require 'test/helper'
|
3
|
+
|
4
|
+
require 'pagify/helper/html'
|
5
|
+
|
6
|
+
class TestHTML < TestCase
|
7
|
+
# def test_page_and_pager_has_same_html
|
8
|
+
# pager = Pagify::ArrayPager.new [1]
|
9
|
+
# assert_equal pager.html.object_id, pager[1].html.object_id
|
10
|
+
# end
|
11
|
+
|
12
|
+
def test_html
|
13
|
+
pager1 = Pagify::ArrayPager.new []
|
14
|
+
assert_equal ' ', pager1.html.setting[:separator]
|
15
|
+
assert_equal Pagify::Helper::HTML.object_id, pager1.html.class.object_id
|
16
|
+
|
17
|
+
pager1.html.setting[:separator] = 'XD'
|
18
|
+
assert_equal 'XD', pager1.html.setting[:separator]
|
19
|
+
assert_equal ' ', pager1.html.class.setting[:separator]
|
20
|
+
|
21
|
+
pager2 = Pagify::ArrayPager.new []
|
22
|
+
assert_equal ' ', pager2.html.setting[:separator]
|
23
|
+
|
24
|
+
pager2.html.setting[:inner_links] = 6
|
25
|
+
assert_equal 6, pager2.html.setting[:inner_links]
|
26
|
+
assert_equal 4, pager1.html.setting[:inner_links]
|
27
|
+
assert_equal 4, pager2.html.class.setting[:inner_links]
|
28
|
+
|
29
|
+
pager2.html.class.setting[:outer_links] = 3
|
30
|
+
assert_equal 3, pager1.html.setting[:outer_links]
|
31
|
+
assert_equal 3, pager2.html.setting[:outer_links]
|
32
|
+
|
33
|
+
pager1.html.setting[:outer_links] = 4
|
34
|
+
assert_equal 4, pager1.html.setting[:outer_links]
|
35
|
+
assert_equal 3, pager2.html.setting[:outer_links]
|
36
|
+
|
37
|
+
pager1.html.setting.restore_default!
|
38
|
+
assert_equal ' ', pager1.html.setting[:separator]
|
39
|
+
assert_equal 4, pager1.html.setting[:inner_links]
|
40
|
+
assert_equal 6, pager2.html.setting[:inner_links]
|
41
|
+
assert_equal 3, pager1.html.setting[:outer_links]
|
42
|
+
assert_equal 3, pager2.html.setting[:outer_links]
|
43
|
+
|
44
|
+
pager2.html.class.setting.restore_default!
|
45
|
+
assert_equal 6, pager2.html.setting[:inner_links]
|
46
|
+
assert_equal 2, pager1.html.setting[:outer_links]
|
47
|
+
assert_equal 2, pager2.html.setting[:outer_links]
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_generate_html
|
51
|
+
# skip 'not implemented'
|
52
|
+
|
53
|
+
pager = Pagify::ArrayPager.new((1..1000).to_a, :per_page => 10)
|
54
|
+
users = pager[50]
|
55
|
+
|
56
|
+
assert_equal(#'<a href="49">< Previous</a> 50 <a href="51">Next ></a><br />'+
|
57
|
+
'<a href="1">« First</a> ' +
|
58
|
+
'<a href="2">2</a> ' + # outer links
|
59
|
+
# '... ' +
|
60
|
+
# '<a href="31">31</a> ' + # step links, offset = step * step
|
61
|
+
# '... ' +
|
62
|
+
# '<a href="40">40</a> ' + # step links, amount = inner / 2
|
63
|
+
# '<a href="43">43</a> ' +
|
64
|
+
'... ' +
|
65
|
+
'<a href="46">46</a> ' + # inner links
|
66
|
+
'<a href="47">47</a> ' +
|
67
|
+
'<a href="48">48</a> ' +
|
68
|
+
'<a href="49">49</a> ' +
|
69
|
+
'50 ' +
|
70
|
+
'<a href="51">51</a> ' +
|
71
|
+
'<a href="52">52</a> ' +
|
72
|
+
'<a href="53">53</a> ' +
|
73
|
+
'<a href="54">54</a> ' + # inner links
|
74
|
+
'... ' +
|
75
|
+
# '<a href="57">57</a> ' +
|
76
|
+
# '<a href="60">60</a> ' + # step links, amount = inner / 2
|
77
|
+
# '... ' +
|
78
|
+
# '<a href="69">69</a> ' + # step links, offset = step * step
|
79
|
+
# '... ' +
|
80
|
+
'<a href="99">99</a> ' + # outer links
|
81
|
+
'<a href="100">Last »</a>',
|
82
|
+
users.pager.html.links(50, &:to_s) )
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_with_class
|
86
|
+
pager = Pagify::ArrayPager.new((1..1000).to_a, :per_page => 10)
|
87
|
+
pager.html.setting[:class] = 'pagify'
|
88
|
+
pager.html.setting[:separator] = ',,'
|
89
|
+
pager.html.setting[:ellipsis] = 'zzz'
|
90
|
+
users = pager[50]
|
91
|
+
|
92
|
+
assert_equal(#'<a href="49">< Previous</a> 50 <a href="51">Next ></a><br />'+
|
93
|
+
'<a href="1" class="pagify">« First</a>,,' +
|
94
|
+
'<a href="2" class="pagify">2</a>,,' + # outer links
|
95
|
+
'zzz,,' +
|
96
|
+
'<a href="46" class="pagify">46</a>,,' + # inner links
|
97
|
+
'<a href="47" class="pagify">47</a>,,' +
|
98
|
+
'<a href="48" class="pagify">48</a>,,' +
|
99
|
+
'<a href="49" class="pagify">49</a>,,' +
|
100
|
+
'50,,' +
|
101
|
+
'<a href="51" class="pagify">51</a>,,' +
|
102
|
+
'<a href="52" class="pagify">52</a>,,' +
|
103
|
+
'<a href="53" class="pagify">53</a>,,' +
|
104
|
+
'<a href="54" class="pagify">54</a>,,' + # inner links
|
105
|
+
'zzz,,' +
|
106
|
+
'<a href="99" class="pagify">99</a>,,' + # outer links
|
107
|
+
'<a href="100" class="pagify">Last »</a>',
|
108
|
+
users.pager.html.links(50, &:to_s) )
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_no_page
|
112
|
+
pager = Pagify::ArrayPager.new([1], :per_page => 10)
|
113
|
+
nothing_there pager
|
114
|
+
pager.html.setting[:outer_links] = 10
|
115
|
+
nothing_there pager
|
116
|
+
pager.html.setting[:inner_links] = 1
|
117
|
+
nothing_there pager
|
118
|
+
pager.html.setting[:inner_links] = 5
|
119
|
+
nothing_there pager
|
120
|
+
end
|
121
|
+
|
122
|
+
def nothing_there pager
|
123
|
+
assert_equal('', pager.html.links(1, &:to_s))
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_nothing
|
127
|
+
pager = Pagify::ArrayPager.new([1,2,3])
|
128
|
+
assert_equal '', pager.html.links_navigate(1, &:to_s)
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_null_pager
|
132
|
+
pager = Pagify::NullPager.instance
|
133
|
+
assert_equal '', pager.html.links(1)
|
134
|
+
assert_equal '', pager.html.links(nil)
|
135
|
+
assert_equal '', pager.html.links('')
|
136
|
+
assert_equal '', pager.html.links(2)
|
137
|
+
assert_equal '', pager.html.links(-1)
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_2_pages
|
141
|
+
pager = Pagify::ArrayPager.new([1,2,3], :per_page => 2)
|
142
|
+
assert_equal '« First <a href="2">Last »</a>', pager.html.links(1, &:to_s)
|
143
|
+
assert_equal '<a href="1">« First</a> Last »', pager.html.links(2, &:to_s)
|
144
|
+
|
145
|
+
assert_equal '<a href="2">Next ></a>', pager.html.links_navigate(1, &:to_s)
|
146
|
+
assert_equal '<a href="1">< Previous</a>', pager.html.links_navigate(2, &:to_s)
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_3_pages
|
150
|
+
pager = Pagify::ArrayPager.new([1,2,3,4,5], :per_page => 2)
|
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)
|
160
|
+
|
161
|
+
assert_equal '<a href="2">Next ></a>', pager.html.links_navigate(1, &:to_s)
|
162
|
+
|
163
|
+
assert_equal '<a href="1">< Previous</a> <a href="3">Next ></a>',
|
164
|
+
pager.html.links_navigate(2, &:to_s)
|
165
|
+
|
166
|
+
assert_equal '<a href="2">< Previous</a>', pager.html.links_navigate(3, &:to_s)
|
167
|
+
end
|
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
|
+
|
186
|
+
end
|
data/test/test_null.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
require 'test/helper'
|
3
|
+
|
4
|
+
class TestNull < TestCase
|
5
|
+
def test_null_pager
|
6
|
+
null = Pagify::NullPager.instance.page(0)
|
7
|
+
for_null_page(null)
|
8
|
+
|
9
|
+
assert_equal(null.object_id, Pagify::NullPager.instance.page(1).object_id)
|
10
|
+
assert_equal(null.pager.object_id, Pagify::NullPage.new.pager.object_id)
|
11
|
+
|
12
|
+
dummy_pager = Pagify::BasicPager.new(:null_page => true,
|
13
|
+
:fetcher => lambda{|*a|[]}, :counter => lambda{0})
|
14
|
+
|
15
|
+
assert_equal(Pagify::NullPage.new(dummy_pager), dummy_pager.page(1))
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_null_page_from_array_pager
|
19
|
+
for_null_page(Pagify::ArrayPager.new([]).page(2))
|
20
|
+
end
|
21
|
+
|
22
|
+
def for_null_page null
|
23
|
+
assert_equal(0, null.page)
|
24
|
+
assert_equal(null.object_id, null.next.object_id)
|
25
|
+
assert_equal(0, null.size)
|
26
|
+
assert_equal([], null.data)
|
27
|
+
assert_equal(null.object_id, null.pager.page(0).object_id)
|
28
|
+
assert_equal(true, null.empty?)
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
data/test/test_rails.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
require 'test/helper'
|
3
|
+
require 'pagify/array'
|
4
|
+
require 'pagify/helper/rails'
|
5
|
+
|
6
|
+
class TestRails < TestCase
|
7
|
+
include ApplicationHelper
|
8
|
+
# fake
|
9
|
+
def request
|
10
|
+
Struct.new(:path).new('/a/b')
|
11
|
+
end
|
12
|
+
def params
|
13
|
+
{:page => 3}
|
14
|
+
end
|
15
|
+
|
16
|
+
def setup
|
17
|
+
@data = (0..9).to_a.pagify(:per_page => 2, :page => 3)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_query_name
|
21
|
+
assert_equal(:page, Pagify::Helper::HTML.setting[:query_name])
|
22
|
+
assert_equal(:page, Pagify::ArrayPager.new([]).html.setting[:query_name])
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_would_paginate
|
26
|
+
assert_equal('<div class="pagination"><a href="/a/b?page=2">< Previous</a> <a href="/a/b?page=4">Next ></a><br /><a href="/a/b?page=1">« First</a> <a href="/a/b?page=2">2</a> 3 <a href="/a/b?page=4">4</a> <a href="/a/b?page=5">Last »</a></div>', would_paginate(@data))
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_custom_path
|
30
|
+
assert_equal('<div class="pagination"><a href="XD?page=2">< Previous</a> <a href="XD?page=4">Next ></a><br /><a href="XD?page=1">« First</a> <a href="XD?page=2">2</a> 3 <a href="XD?page=4">4</a> <a href="XD?page=5">Last »</a></div>', would_paginate(@data){'XD'})
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pagify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Lin Jen-Shin (aka godfat \xE7\x9C\x9F\xE5\xB8\xB8)"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-07-30 00:00:00 +08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bones
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.5.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: dm-core
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.9
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: dm-aggregates
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.9.9
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: activerecord
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.0.0
|
54
|
+
version:
|
55
|
+
description: " Pagination tools for Array(or custom class), DataMapper and ActiveRecord"
|
56
|
+
email: godfat (XD) godfat.org
|
57
|
+
executables: []
|
58
|
+
|
59
|
+
extensions: []
|
60
|
+
|
61
|
+
extra_rdoc_files:
|
62
|
+
- CHANGES
|
63
|
+
- LICENSE
|
64
|
+
- NOTICE
|
65
|
+
- README
|
66
|
+
- TODO
|
67
|
+
- pagify.gemspec
|
68
|
+
files:
|
69
|
+
- CHANGES
|
70
|
+
- LICENSE
|
71
|
+
- NOTICE
|
72
|
+
- README
|
73
|
+
- Rakefile
|
74
|
+
- TODO
|
75
|
+
- lib/pagify.rb
|
76
|
+
- lib/pagify/active_record.rb
|
77
|
+
- lib/pagify/array.rb
|
78
|
+
- lib/pagify/data_mapper.rb
|
79
|
+
- lib/pagify/helper/abstract.rb
|
80
|
+
- lib/pagify/helper/detail/setting.rb
|
81
|
+
- lib/pagify/helper/detail/setup.rb
|
82
|
+
- lib/pagify/helper/html.rb
|
83
|
+
- lib/pagify/helper/rails.rb
|
84
|
+
- lib/pagify/page/basic.rb
|
85
|
+
- lib/pagify/page/null.rb
|
86
|
+
- lib/pagify/pager/active_record.rb
|
87
|
+
- lib/pagify/pager/array.rb
|
88
|
+
- lib/pagify/pager/basic.rb
|
89
|
+
- lib/pagify/pager/data_mapper.rb
|
90
|
+
- lib/pagify/pager/detail/page_accept_string_or_blank.rb
|
91
|
+
- lib/pagify/pager/null.rb
|
92
|
+
- lib/pagify/pagifier/abstract.rb
|
93
|
+
- lib/pagify/pagifier/active_record.rb
|
94
|
+
- lib/pagify/pagifier/array.rb
|
95
|
+
- lib/pagify/pagifier/data_mapper.rb
|
96
|
+
- lib/pagify/version.rb
|
97
|
+
- pagify.gemspec
|
98
|
+
- spec/pagify_spec.rb
|
99
|
+
- spec/spec_helper.rb
|
100
|
+
- tasks/ann.rake
|
101
|
+
- tasks/bones.rake
|
102
|
+
- tasks/gem.rake
|
103
|
+
- tasks/git.rake
|
104
|
+
- tasks/notes.rake
|
105
|
+
- tasks/post_load.rake
|
106
|
+
- tasks/rdoc.rake
|
107
|
+
- tasks/rubyforge.rake
|
108
|
+
- tasks/setup.rb
|
109
|
+
- tasks/spec.rake
|
110
|
+
- tasks/svn.rake
|
111
|
+
- tasks/test.rake
|
112
|
+
- tasks/zentest.rake
|
113
|
+
- test/helper.rb
|
114
|
+
- test/helper_model.rb
|
115
|
+
- test/helper_pagify.rb
|
116
|
+
- test/test_active_record.rb
|
117
|
+
- test/test_array.rb
|
118
|
+
- test/test_basic.rb
|
119
|
+
- test/test_data_mapper.rb
|
120
|
+
- test/test_html.rb
|
121
|
+
- test/test_null.rb
|
122
|
+
- test/test_rails.rb
|
123
|
+
has_rdoc: true
|
124
|
+
homepage: http://github.com/godfat/pagify
|
125
|
+
licenses: []
|
126
|
+
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options:
|
129
|
+
- --charset=utf-8
|
130
|
+
- --inline-source
|
131
|
+
- --line-numbers
|
132
|
+
- --promiscuous
|
133
|
+
- --main
|
134
|
+
- README
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: "0"
|
142
|
+
version:
|
143
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ">="
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: "0"
|
148
|
+
version:
|
149
|
+
requirements: []
|
150
|
+
|
151
|
+
rubyforge_project: ludy
|
152
|
+
rubygems_version: 1.3.4
|
153
|
+
signing_key:
|
154
|
+
specification_version: 3
|
155
|
+
summary: Pagination tools for Array(or custom class), DataMapper and ActiveRecord
|
156
|
+
test_files:
|
157
|
+
- test/test_active_record.rb
|
158
|
+
- test/test_array.rb
|
159
|
+
- test/test_basic.rb
|
160
|
+
- test/test_data_mapper.rb
|
161
|
+
- test/test_html.rb
|
162
|
+
- test/test_null.rb
|
163
|
+
- test/test_rails.rb
|