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.
Files changed (55) hide show
  1. data/CHANGES +42 -0
  2. data/LICENSE +201 -0
  3. data/NOTICE +5 -0
  4. data/README +135 -0
  5. data/Rakefile +54 -0
  6. data/TODO +12 -0
  7. data/lib/pagify.rb +14 -0
  8. data/lib/pagify/active_record.rb +17 -0
  9. data/lib/pagify/array.rb +6 -0
  10. data/lib/pagify/data_mapper.rb +8 -0
  11. data/lib/pagify/helper/abstract.rb +112 -0
  12. data/lib/pagify/helper/detail/setting.rb +54 -0
  13. data/lib/pagify/helper/detail/setup.rb +23 -0
  14. data/lib/pagify/helper/html.rb +86 -0
  15. data/lib/pagify/helper/rails.rb +23 -0
  16. data/lib/pagify/page/basic.rb +56 -0
  17. data/lib/pagify/page/null.rb +10 -0
  18. data/lib/pagify/pager/active_record.rb +30 -0
  19. data/lib/pagify/pager/array.rb +21 -0
  20. data/lib/pagify/pager/basic.rb +114 -0
  21. data/lib/pagify/pager/data_mapper.rb +29 -0
  22. data/lib/pagify/pager/detail/page_accept_string_or_blank.rb +13 -0
  23. data/lib/pagify/pager/null.rb +15 -0
  24. data/lib/pagify/pagifier/abstract.rb +10 -0
  25. data/lib/pagify/pagifier/active_record.rb +11 -0
  26. data/lib/pagify/pagifier/array.rb +9 -0
  27. data/lib/pagify/pagifier/data_mapper.rb +11 -0
  28. data/lib/pagify/version.rb +4 -0
  29. data/pagify.gemspec +43 -0
  30. data/spec/pagify_spec.rb +8 -0
  31. data/spec/spec_helper.rb +17 -0
  32. data/tasks/ann.rake +80 -0
  33. data/tasks/bones.rake +20 -0
  34. data/tasks/gem.rake +201 -0
  35. data/tasks/git.rake +40 -0
  36. data/tasks/notes.rake +27 -0
  37. data/tasks/post_load.rake +34 -0
  38. data/tasks/rdoc.rake +51 -0
  39. data/tasks/rubyforge.rake +55 -0
  40. data/tasks/setup.rb +292 -0
  41. data/tasks/spec.rake +54 -0
  42. data/tasks/svn.rake +47 -0
  43. data/tasks/test.rake +40 -0
  44. data/tasks/zentest.rake +36 -0
  45. data/test/helper.rb +26 -0
  46. data/test/helper_model.rb +83 -0
  47. data/test/helper_pagify.rb +39 -0
  48. data/test/test_active_record.rb +66 -0
  49. data/test/test_array.rb +19 -0
  50. data/test/test_basic.rb +22 -0
  51. data/test/test_data_mapper.rb +56 -0
  52. data/test/test_html.rb +186 -0
  53. data/test/test_null.rb +31 -0
  54. data/test/test_rails.rb +32 -0
  55. metadata +163 -0
@@ -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">&lt; Previous</a> 50 <a href="51">Next &gt;</a><br />'+
57
+ '<a href="1">&laquo; 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 &raquo;</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">&lt; Previous</a> 50 <a href="51">Next &gt;</a><br />'+
93
+ '<a href="1" class="pagify">&laquo; 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 &raquo;</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 '&laquo; First <a href="2">Last &raquo;</a>', pager.html.links(1, &:to_s)
143
+ assert_equal '<a href="1">&laquo; First</a> Last &raquo;', pager.html.links(2, &:to_s)
144
+
145
+ assert_equal '<a href="2">Next &gt;</a>', pager.html.links_navigate(1, &:to_s)
146
+ assert_equal '<a href="1">&lt; 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 '&laquo; First <a href="2">2</a> <a href="3">Last &raquo;</a>',
153
+ pager.html.links(1, &:to_s)
154
+
155
+ assert_equal '<a href="1">&laquo; First</a> 2 <a href="3">Last &raquo;</a>',
156
+ pager.html.links(2, &:to_s)
157
+
158
+ assert_equal '<a href="1">&laquo; First</a> <a href="2">2</a> Last &raquo;',
159
+ pager.html.links(3, &:to_s)
160
+
161
+ assert_equal '<a href="2">Next &gt;</a>', pager.html.links_navigate(1, &:to_s)
162
+
163
+ assert_equal '<a href="1">&lt; Previous</a> <a href="3">Next &gt;</a>',
164
+ pager.html.links_navigate(2, &:to_s)
165
+
166
+ assert_equal '<a href="2">&lt; 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 = ['&laquo; First', '<a href="1">&laquo; First</a>']
173
+ last = ['Last &raquo;', '<a href="11">Last &raquo;</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
@@ -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
@@ -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">&lt; Previous</a> <a href="/a/b?page=4">Next &gt;</a><br /><a href="/a/b?page=1">&laquo; 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 &raquo;</a></div>', would_paginate(@data))
27
+ end
28
+
29
+ def test_custom_path
30
+ assert_equal('<div class="pagination"><a href="XD?page=2">&lt; Previous</a> <a href="XD?page=4">Next &gt;</a><br /><a href="XD?page=1">&laquo; First</a> <a href="XD?page=2">2</a> 3 <a href="XD?page=4">4</a> <a href="XD?page=5">Last &raquo;</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