searchlogic 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. data/CHANGELOG.rdoc +228 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Manifest +123 -0
  4. data/README.rdoc +383 -0
  5. data/Rakefile +15 -0
  6. data/TODO.rdoc +6 -0
  7. data/examples/README.rdoc +4 -0
  8. data/init.rb +1 -0
  9. data/lib/searchlogic.rb +89 -0
  10. data/lib/searchlogic/active_record/associations.rb +52 -0
  11. data/lib/searchlogic/active_record/base.rb +218 -0
  12. data/lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb +172 -0
  13. data/lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb +168 -0
  14. data/lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb +75 -0
  15. data/lib/searchlogic/condition/base.rb +159 -0
  16. data/lib/searchlogic/condition/begins_with.rb +17 -0
  17. data/lib/searchlogic/condition/blank.rb +21 -0
  18. data/lib/searchlogic/condition/child_of.rb +11 -0
  19. data/lib/searchlogic/condition/descendant_of.rb +24 -0
  20. data/lib/searchlogic/condition/ends_with.rb +17 -0
  21. data/lib/searchlogic/condition/equals.rb +27 -0
  22. data/lib/searchlogic/condition/greater_than.rb +15 -0
  23. data/lib/searchlogic/condition/greater_than_or_equal_to.rb +15 -0
  24. data/lib/searchlogic/condition/inclusive_descendant_of.rb +11 -0
  25. data/lib/searchlogic/condition/keywords.rb +47 -0
  26. data/lib/searchlogic/condition/less_than.rb +15 -0
  27. data/lib/searchlogic/condition/less_than_or_equal_to.rb +15 -0
  28. data/lib/searchlogic/condition/like.rb +15 -0
  29. data/lib/searchlogic/condition/nil.rb +21 -0
  30. data/lib/searchlogic/condition/not_begin_with.rb +20 -0
  31. data/lib/searchlogic/condition/not_blank.rb +19 -0
  32. data/lib/searchlogic/condition/not_end_with.rb +20 -0
  33. data/lib/searchlogic/condition/not_equal.rb +26 -0
  34. data/lib/searchlogic/condition/not_have_keywords.rb +20 -0
  35. data/lib/searchlogic/condition/not_like.rb +20 -0
  36. data/lib/searchlogic/condition/not_nil.rb +19 -0
  37. data/lib/searchlogic/condition/sibling_of.rb +14 -0
  38. data/lib/searchlogic/condition/tree.rb +17 -0
  39. data/lib/searchlogic/conditions/base.rb +484 -0
  40. data/lib/searchlogic/conditions/protection.rb +36 -0
  41. data/lib/searchlogic/config.rb +31 -0
  42. data/lib/searchlogic/config/helpers.rb +289 -0
  43. data/lib/searchlogic/config/search.rb +53 -0
  44. data/lib/searchlogic/core_ext/hash.rb +75 -0
  45. data/lib/searchlogic/helpers/control_types/link.rb +310 -0
  46. data/lib/searchlogic/helpers/control_types/links.rb +241 -0
  47. data/lib/searchlogic/helpers/control_types/remote_link.rb +87 -0
  48. data/lib/searchlogic/helpers/control_types/remote_links.rb +72 -0
  49. data/lib/searchlogic/helpers/control_types/remote_select.rb +36 -0
  50. data/lib/searchlogic/helpers/control_types/select.rb +82 -0
  51. data/lib/searchlogic/helpers/form.rb +208 -0
  52. data/lib/searchlogic/helpers/utilities.rb +197 -0
  53. data/lib/searchlogic/modifiers/absolute.rb +15 -0
  54. data/lib/searchlogic/modifiers/acos.rb +11 -0
  55. data/lib/searchlogic/modifiers/asin.rb +11 -0
  56. data/lib/searchlogic/modifiers/atan.rb +11 -0
  57. data/lib/searchlogic/modifiers/base.rb +27 -0
  58. data/lib/searchlogic/modifiers/ceil.rb +15 -0
  59. data/lib/searchlogic/modifiers/char_length.rb +15 -0
  60. data/lib/searchlogic/modifiers/cos.rb +15 -0
  61. data/lib/searchlogic/modifiers/cot.rb +15 -0
  62. data/lib/searchlogic/modifiers/day_of_month.rb +15 -0
  63. data/lib/searchlogic/modifiers/day_of_week.rb +15 -0
  64. data/lib/searchlogic/modifiers/day_of_year.rb +15 -0
  65. data/lib/searchlogic/modifiers/degrees.rb +11 -0
  66. data/lib/searchlogic/modifiers/exp.rb +15 -0
  67. data/lib/searchlogic/modifiers/floor.rb +15 -0
  68. data/lib/searchlogic/modifiers/hex.rb +11 -0
  69. data/lib/searchlogic/modifiers/hour.rb +11 -0
  70. data/lib/searchlogic/modifiers/log.rb +15 -0
  71. data/lib/searchlogic/modifiers/log10.rb +11 -0
  72. data/lib/searchlogic/modifiers/log2.rb +11 -0
  73. data/lib/searchlogic/modifiers/lower.rb +15 -0
  74. data/lib/searchlogic/modifiers/ltrim.rb +15 -0
  75. data/lib/searchlogic/modifiers/md5.rb +11 -0
  76. data/lib/searchlogic/modifiers/microseconds.rb +11 -0
  77. data/lib/searchlogic/modifiers/milliseconds.rb +11 -0
  78. data/lib/searchlogic/modifiers/minute.rb +15 -0
  79. data/lib/searchlogic/modifiers/month.rb +15 -0
  80. data/lib/searchlogic/modifiers/octal.rb +15 -0
  81. data/lib/searchlogic/modifiers/radians.rb +11 -0
  82. data/lib/searchlogic/modifiers/round.rb +11 -0
  83. data/lib/searchlogic/modifiers/rtrim.rb +15 -0
  84. data/lib/searchlogic/modifiers/second.rb +15 -0
  85. data/lib/searchlogic/modifiers/sign.rb +11 -0
  86. data/lib/searchlogic/modifiers/sin.rb +11 -0
  87. data/lib/searchlogic/modifiers/square_root.rb +15 -0
  88. data/lib/searchlogic/modifiers/tan.rb +15 -0
  89. data/lib/searchlogic/modifiers/trim.rb +15 -0
  90. data/lib/searchlogic/modifiers/upper.rb +15 -0
  91. data/lib/searchlogic/modifiers/week.rb +11 -0
  92. data/lib/searchlogic/modifiers/year.rb +11 -0
  93. data/lib/searchlogic/search/base.rb +148 -0
  94. data/lib/searchlogic/search/conditions.rb +53 -0
  95. data/lib/searchlogic/search/ordering.rb +244 -0
  96. data/lib/searchlogic/search/pagination.rb +121 -0
  97. data/lib/searchlogic/search/protection.rb +89 -0
  98. data/lib/searchlogic/search/searching.rb +31 -0
  99. data/lib/searchlogic/shared/utilities.rb +50 -0
  100. data/lib/searchlogic/shared/virtual_classes.rb +39 -0
  101. data/lib/searchlogic/version.rb +79 -0
  102. data/searchlogic.gemspec +39 -0
  103. data/test/fixtures/accounts.yml +15 -0
  104. data/test/fixtures/cats.yml +3 -0
  105. data/test/fixtures/dogs.yml +3 -0
  106. data/test/fixtures/orders.yml +14 -0
  107. data/test/fixtures/user_groups.yml +13 -0
  108. data/test/fixtures/users.yml +36 -0
  109. data/test/test_active_record_associations.rb +81 -0
  110. data/test/test_active_record_base.rb +93 -0
  111. data/test/test_condition_base.rb +52 -0
  112. data/test/test_condition_types.rb +143 -0
  113. data/test/test_conditions_base.rb +242 -0
  114. data/test/test_conditions_protection.rb +16 -0
  115. data/test/test_config.rb +23 -0
  116. data/test/test_helper.rb +134 -0
  117. data/test/test_search_base.rb +227 -0
  118. data/test/test_search_conditions.rb +19 -0
  119. data/test/test_search_ordering.rb +165 -0
  120. data/test/test_search_pagination.rb +72 -0
  121. data/test/test_search_protection.rb +24 -0
  122. data/test_libs/acts_as_tree.rb +98 -0
  123. data/test_libs/ordered_hash.rb +9 -0
  124. data/test_libs/rexml_fix.rb +14 -0
  125. metadata +317 -0
@@ -0,0 +1,72 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestSearchPagination < Test::Unit::TestCase
4
+ def test_limit
5
+ search = Account.new_search
6
+ search.limit = 10
7
+ assert_equal 10, search.limit
8
+ search.page = 2
9
+ assert_equal 10, search.offset
10
+ search.limit = 25
11
+ assert_equal 25, search.offset
12
+ assert_equal 2, search.page
13
+ search.page = 5
14
+ assert_equal 5, search.page
15
+ assert_equal 25, search.limit
16
+ search.limit = 3
17
+ assert_equal 12, search.offset
18
+ end
19
+
20
+ def test_page
21
+ search = Account.new_search(:per_page => nil)
22
+ search.page = 2
23
+ assert_equal 1, search.page
24
+ search.per_page = 20
25
+ assert_equal 2, search.page
26
+ search.limit = 0
27
+ assert_equal 1, search.page
28
+ search.per_page = 20
29
+ assert_equal 2, search.page
30
+ search.limit = nil
31
+ assert_equal 1, search.page
32
+ end
33
+
34
+ def test_per_page
35
+ search = Account.new_search
36
+ search.per_page = 10
37
+ assert_equal 10, search.per_page
38
+ search.per_page = ""
39
+ assert_equal nil, search.per_page
40
+ search.per_page = 40
41
+ assert_equal 40, search.per_page
42
+ search.per_page = nil
43
+ assert_equal nil, search.per_page
44
+ search.per_page = 60
45
+ assert_equal 60, search.per_page
46
+ search.per_page = false
47
+ assert_equal nil, search.per_page
48
+ end
49
+
50
+ def test_next_page
51
+
52
+ end
53
+
54
+ def test_prev_page
55
+
56
+ end
57
+
58
+ def test_page_count
59
+ search = Account.new_search
60
+ assert_equal 1, search.page_count
61
+ search.per_page = 1
62
+ assert_equal 3, search.page_count
63
+ search.per_page = 100
64
+ assert_equal 1, search.page_count
65
+
66
+ Searchlogic::Config.search.per_page = 1
67
+ search = Account.new_search
68
+ assert_equal 3, search.page_count
69
+ search.conditions.users.first_name_contains
70
+ assert_equal 3, search.page_count
71
+ end
72
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestSearchProtection < Test::Unit::TestCase
4
+ def test_protection
5
+ assert_raise(ArgumentError) { Account.build_search(:conditions => "(DELETE FROM users)", :page => 2, :per_page => 15) }
6
+ Searchlogic::Search::Base::VULNERABLE_FIND_OPTIONS.each { |option| assert_raise(ArgumentError) { Account.build_search(option => "(DELETE FROM users)") } }
7
+
8
+ assert_nothing_raised { Account.build_search!(:conditions => "(DELETE FROM users)", :page => 2, :per_page => 15) }
9
+ Searchlogic::Search::Base::VULNERABLE_FIND_OPTIONS.each { |option| assert_nothing_raised { Account.build_search!(option => "(DELETE FROM users)") } }
10
+
11
+ account = Account.first
12
+
13
+ assert_raise(ArgumentError) { account.users.build_search(:conditions => "(DELETE FROM users)", :page => 2, :per_page => 15) }
14
+ Searchlogic::Search::Base::VULNERABLE_FIND_OPTIONS.each { |option| assert_raise(ArgumentError) { account.users.build_search(option => "(DELETE FROM users)") } }
15
+
16
+ assert_nothing_raised { account.users.build_search!(:conditions => "(DELETE FROM users)", :page => 2, :per_page => 15) }
17
+ Searchlogic::Search::Base::VULNERABLE_FIND_OPTIONS.each { |option| assert_nothing_raised { account.users.build_search!(option => "(DELETE FROM users)") } }
18
+
19
+ assert_raise(ArgumentError) { Account.build_search(:order_by => "unknown_column") }
20
+ assert_nothing_raised { Account.build_search!(:order_by => "unknown_column") }
21
+ assert_raise(ArgumentError) { Account.build_search(:order_by => ["name", "unknown_column"]) }
22
+ assert_nothing_raised { Account.build_search!(:order_by => ["name", "unknown_column"]) }
23
+ end
24
+ end
@@ -0,0 +1,98 @@
1
+ module ActiveRecord
2
+ module Acts
3
+ module Tree
4
+ def self.included(base)
5
+ base.extend(ClassMethods)
6
+ end
7
+
8
+ # Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children
9
+ # association. This requires that you have a foreign key column, which by default is called +parent_id+.
10
+ #
11
+ # class Category < ActiveRecord::Base
12
+ # acts_as_tree :order => "name"
13
+ # end
14
+ #
15
+ # Example:
16
+ # root
17
+ # \_ child1
18
+ # \_ subchild1
19
+ # \_ subchild2
20
+ #
21
+ # root = Category.create("name" => "root")
22
+ # child1 = root.children.create("name" => "child1")
23
+ # subchild1 = child1.children.create("name" => "subchild1")
24
+ #
25
+ # root.parent # => nil
26
+ # child1.parent # => root
27
+ # root.children # => [child1]
28
+ # root.children.first.children.first # => subchild1
29
+ #
30
+ # In addition to the parent and children associations, the following instance methods are added to the class
31
+ # after calling <tt>acts_as_tree</tt>:
32
+ # * <tt>siblings</tt> - Returns all the children of the parent, excluding the current node (<tt>[subchild2]</tt> when called on <tt>subchild1</tt>)
33
+ # * <tt>self_and_siblings</tt> - Returns all the children of the parent, including the current node (<tt>[subchild1, subchild2]</tt> when called on <tt>subchild1</tt>)
34
+ # * <tt>ancestors</tt> - Returns all the ancestors of the current node (<tt>[child1, root]</tt> when called on <tt>subchild2</tt>)
35
+ # * <tt>root</tt> - Returns the root of the current node (<tt>root</tt> when called on <tt>subchild2</tt>)
36
+ module ClassMethods
37
+ # Configuration options are:
38
+ #
39
+ # * <tt>foreign_key</tt> - specifies the column name to use for tracking of the tree (default: +parent_id+)
40
+ # * <tt>order</tt> - makes it possible to sort the children according to this SQL snippet.
41
+ # * <tt>counter_cache</tt> - keeps a count in a +children_count+ column if set to +true+ (default: +false+).
42
+ def acts_as_tree(options = {})
43
+ configuration = { :foreign_key => "parent_id", :order => nil, :counter_cache => nil }
44
+ configuration.update(options) if options.is_a?(Hash)
45
+
46
+ belongs_to :parent, :class_name => name, :foreign_key => configuration[:foreign_key], :counter_cache => configuration[:counter_cache]
47
+ has_many :children, :class_name => name, :foreign_key => configuration[:foreign_key], :order => configuration[:order], :dependent => :destroy
48
+
49
+ class_eval <<-EOV
50
+ include ActiveRecord::Acts::Tree::InstanceMethods
51
+
52
+ def self.roots
53
+ find(:all, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}})
54
+ end
55
+
56
+ def self.root
57
+ find(:first, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}})
58
+ end
59
+ EOV
60
+ end
61
+ end
62
+
63
+ module InstanceMethods
64
+ # Returns list of ancestors, starting from parent until root.
65
+ #
66
+ # subchild1.ancestors # => [child1, root]
67
+ def ancestors
68
+ node, nodes = self, []
69
+ nodes << node = node.parent while node.parent
70
+ nodes
71
+ end
72
+
73
+ # Returns the root node of the tree.
74
+ def root
75
+ node = self
76
+ node = node.parent while node.parent
77
+ node
78
+ end
79
+
80
+ # Returns all siblings of the current node.
81
+ #
82
+ # subchild1.siblings # => [subchild2]
83
+ def siblings
84
+ self_and_siblings - [self]
85
+ end
86
+
87
+ # Returns all siblings and a reference to the current node.
88
+ #
89
+ # subchild1.self_and_siblings # => [subchild1, subchild2]
90
+ def self_and_siblings
91
+ parent ? parent.children : self.class.roots
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+
98
+ ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree
@@ -0,0 +1,9 @@
1
+ class Hash
2
+ def each(&block)
3
+ sorted_keys = keys.sort { |a, b| a.to_s <=> b.to_s }
4
+ sorted_keys.each do |key|
5
+ yield key, self[key]
6
+ end
7
+ self
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ module REXML
2
+ module Formatters
3
+ class Pretty < Default
4
+ private
5
+ def wrap(string, width)
6
+ # Recursivly wrap string at width.
7
+ return string if string.length <= width
8
+ place = string.rindex(/\s+/, width) # Position in string with last ' ' before cutoff
9
+ return string if place.nil?
10
+ return string[0,place] + "\n" + wrap(string[place+1..-1], width)
11
+ end
12
+ end
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,317 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: searchlogic
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.3
5
+ platform: ruby
6
+ authors:
7
+ - Ben Johnson of Binary Logic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-11-03 00:00:00 -05:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activerecord
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: echoe
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ description: Object based ActiveRecord searching, ordering, pagination, and more!
46
+ email: bjohnson@binarylogic.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - CHANGELOG.rdoc
53
+ - lib/searchlogic/active_record/associations.rb
54
+ - lib/searchlogic/active_record/base.rb
55
+ - lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb
56
+ - lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb
57
+ - lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb
58
+ - lib/searchlogic/condition/base.rb
59
+ - lib/searchlogic/condition/begins_with.rb
60
+ - lib/searchlogic/condition/blank.rb
61
+ - lib/searchlogic/condition/child_of.rb
62
+ - lib/searchlogic/condition/descendant_of.rb
63
+ - lib/searchlogic/condition/ends_with.rb
64
+ - lib/searchlogic/condition/equals.rb
65
+ - lib/searchlogic/condition/greater_than.rb
66
+ - lib/searchlogic/condition/greater_than_or_equal_to.rb
67
+ - lib/searchlogic/condition/inclusive_descendant_of.rb
68
+ - lib/searchlogic/condition/keywords.rb
69
+ - lib/searchlogic/condition/less_than.rb
70
+ - lib/searchlogic/condition/less_than_or_equal_to.rb
71
+ - lib/searchlogic/condition/like.rb
72
+ - lib/searchlogic/condition/nil.rb
73
+ - lib/searchlogic/condition/not_begin_with.rb
74
+ - lib/searchlogic/condition/not_blank.rb
75
+ - lib/searchlogic/condition/not_end_with.rb
76
+ - lib/searchlogic/condition/not_equal.rb
77
+ - lib/searchlogic/condition/not_have_keywords.rb
78
+ - lib/searchlogic/condition/not_like.rb
79
+ - lib/searchlogic/condition/not_nil.rb
80
+ - lib/searchlogic/condition/sibling_of.rb
81
+ - lib/searchlogic/condition/tree.rb
82
+ - lib/searchlogic/conditions/base.rb
83
+ - lib/searchlogic/conditions/protection.rb
84
+ - lib/searchlogic/config/helpers.rb
85
+ - lib/searchlogic/config/search.rb
86
+ - lib/searchlogic/config.rb
87
+ - lib/searchlogic/core_ext/hash.rb
88
+ - lib/searchlogic/helpers/control_types/link.rb
89
+ - lib/searchlogic/helpers/control_types/links.rb
90
+ - lib/searchlogic/helpers/control_types/remote_link.rb
91
+ - lib/searchlogic/helpers/control_types/remote_links.rb
92
+ - lib/searchlogic/helpers/control_types/remote_select.rb
93
+ - lib/searchlogic/helpers/control_types/select.rb
94
+ - lib/searchlogic/helpers/form.rb
95
+ - lib/searchlogic/helpers/utilities.rb
96
+ - lib/searchlogic/modifiers/absolute.rb
97
+ - lib/searchlogic/modifiers/acos.rb
98
+ - lib/searchlogic/modifiers/asin.rb
99
+ - lib/searchlogic/modifiers/atan.rb
100
+ - lib/searchlogic/modifiers/base.rb
101
+ - lib/searchlogic/modifiers/ceil.rb
102
+ - lib/searchlogic/modifiers/char_length.rb
103
+ - lib/searchlogic/modifiers/cos.rb
104
+ - lib/searchlogic/modifiers/cot.rb
105
+ - lib/searchlogic/modifiers/day_of_month.rb
106
+ - lib/searchlogic/modifiers/day_of_week.rb
107
+ - lib/searchlogic/modifiers/day_of_year.rb
108
+ - lib/searchlogic/modifiers/degrees.rb
109
+ - lib/searchlogic/modifiers/exp.rb
110
+ - lib/searchlogic/modifiers/floor.rb
111
+ - lib/searchlogic/modifiers/hex.rb
112
+ - lib/searchlogic/modifiers/hour.rb
113
+ - lib/searchlogic/modifiers/log.rb
114
+ - lib/searchlogic/modifiers/log10.rb
115
+ - lib/searchlogic/modifiers/log2.rb
116
+ - lib/searchlogic/modifiers/lower.rb
117
+ - lib/searchlogic/modifiers/ltrim.rb
118
+ - lib/searchlogic/modifiers/md5.rb
119
+ - lib/searchlogic/modifiers/microseconds.rb
120
+ - lib/searchlogic/modifiers/milliseconds.rb
121
+ - lib/searchlogic/modifiers/minute.rb
122
+ - lib/searchlogic/modifiers/month.rb
123
+ - lib/searchlogic/modifiers/octal.rb
124
+ - lib/searchlogic/modifiers/radians.rb
125
+ - lib/searchlogic/modifiers/round.rb
126
+ - lib/searchlogic/modifiers/rtrim.rb
127
+ - lib/searchlogic/modifiers/second.rb
128
+ - lib/searchlogic/modifiers/sign.rb
129
+ - lib/searchlogic/modifiers/sin.rb
130
+ - lib/searchlogic/modifiers/square_root.rb
131
+ - lib/searchlogic/modifiers/tan.rb
132
+ - lib/searchlogic/modifiers/trim.rb
133
+ - lib/searchlogic/modifiers/upper.rb
134
+ - lib/searchlogic/modifiers/week.rb
135
+ - lib/searchlogic/modifiers/year.rb
136
+ - lib/searchlogic/search/base.rb
137
+ - lib/searchlogic/search/conditions.rb
138
+ - lib/searchlogic/search/ordering.rb
139
+ - lib/searchlogic/search/pagination.rb
140
+ - lib/searchlogic/search/protection.rb
141
+ - lib/searchlogic/search/searching.rb
142
+ - lib/searchlogic/shared/utilities.rb
143
+ - lib/searchlogic/shared/virtual_classes.rb
144
+ - lib/searchlogic/version.rb
145
+ - lib/searchlogic.rb
146
+ - README.rdoc
147
+ - TODO.rdoc
148
+ files:
149
+ - CHANGELOG.rdoc
150
+ - examples/README.rdoc
151
+ - init.rb
152
+ - lib/searchlogic/active_record/associations.rb
153
+ - lib/searchlogic/active_record/base.rb
154
+ - lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb
155
+ - lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb
156
+ - lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb
157
+ - lib/searchlogic/condition/base.rb
158
+ - lib/searchlogic/condition/begins_with.rb
159
+ - lib/searchlogic/condition/blank.rb
160
+ - lib/searchlogic/condition/child_of.rb
161
+ - lib/searchlogic/condition/descendant_of.rb
162
+ - lib/searchlogic/condition/ends_with.rb
163
+ - lib/searchlogic/condition/equals.rb
164
+ - lib/searchlogic/condition/greater_than.rb
165
+ - lib/searchlogic/condition/greater_than_or_equal_to.rb
166
+ - lib/searchlogic/condition/inclusive_descendant_of.rb
167
+ - lib/searchlogic/condition/keywords.rb
168
+ - lib/searchlogic/condition/less_than.rb
169
+ - lib/searchlogic/condition/less_than_or_equal_to.rb
170
+ - lib/searchlogic/condition/like.rb
171
+ - lib/searchlogic/condition/nil.rb
172
+ - lib/searchlogic/condition/not_begin_with.rb
173
+ - lib/searchlogic/condition/not_blank.rb
174
+ - lib/searchlogic/condition/not_end_with.rb
175
+ - lib/searchlogic/condition/not_equal.rb
176
+ - lib/searchlogic/condition/not_have_keywords.rb
177
+ - lib/searchlogic/condition/not_like.rb
178
+ - lib/searchlogic/condition/not_nil.rb
179
+ - lib/searchlogic/condition/sibling_of.rb
180
+ - lib/searchlogic/condition/tree.rb
181
+ - lib/searchlogic/conditions/base.rb
182
+ - lib/searchlogic/conditions/protection.rb
183
+ - lib/searchlogic/config/helpers.rb
184
+ - lib/searchlogic/config/search.rb
185
+ - lib/searchlogic/config.rb
186
+ - lib/searchlogic/core_ext/hash.rb
187
+ - lib/searchlogic/helpers/control_types/link.rb
188
+ - lib/searchlogic/helpers/control_types/links.rb
189
+ - lib/searchlogic/helpers/control_types/remote_link.rb
190
+ - lib/searchlogic/helpers/control_types/remote_links.rb
191
+ - lib/searchlogic/helpers/control_types/remote_select.rb
192
+ - lib/searchlogic/helpers/control_types/select.rb
193
+ - lib/searchlogic/helpers/form.rb
194
+ - lib/searchlogic/helpers/utilities.rb
195
+ - lib/searchlogic/modifiers/absolute.rb
196
+ - lib/searchlogic/modifiers/acos.rb
197
+ - lib/searchlogic/modifiers/asin.rb
198
+ - lib/searchlogic/modifiers/atan.rb
199
+ - lib/searchlogic/modifiers/base.rb
200
+ - lib/searchlogic/modifiers/ceil.rb
201
+ - lib/searchlogic/modifiers/char_length.rb
202
+ - lib/searchlogic/modifiers/cos.rb
203
+ - lib/searchlogic/modifiers/cot.rb
204
+ - lib/searchlogic/modifiers/day_of_month.rb
205
+ - lib/searchlogic/modifiers/day_of_week.rb
206
+ - lib/searchlogic/modifiers/day_of_year.rb
207
+ - lib/searchlogic/modifiers/degrees.rb
208
+ - lib/searchlogic/modifiers/exp.rb
209
+ - lib/searchlogic/modifiers/floor.rb
210
+ - lib/searchlogic/modifiers/hex.rb
211
+ - lib/searchlogic/modifiers/hour.rb
212
+ - lib/searchlogic/modifiers/log.rb
213
+ - lib/searchlogic/modifiers/log10.rb
214
+ - lib/searchlogic/modifiers/log2.rb
215
+ - lib/searchlogic/modifiers/lower.rb
216
+ - lib/searchlogic/modifiers/ltrim.rb
217
+ - lib/searchlogic/modifiers/md5.rb
218
+ - lib/searchlogic/modifiers/microseconds.rb
219
+ - lib/searchlogic/modifiers/milliseconds.rb
220
+ - lib/searchlogic/modifiers/minute.rb
221
+ - lib/searchlogic/modifiers/month.rb
222
+ - lib/searchlogic/modifiers/octal.rb
223
+ - lib/searchlogic/modifiers/radians.rb
224
+ - lib/searchlogic/modifiers/round.rb
225
+ - lib/searchlogic/modifiers/rtrim.rb
226
+ - lib/searchlogic/modifiers/second.rb
227
+ - lib/searchlogic/modifiers/sign.rb
228
+ - lib/searchlogic/modifiers/sin.rb
229
+ - lib/searchlogic/modifiers/square_root.rb
230
+ - lib/searchlogic/modifiers/tan.rb
231
+ - lib/searchlogic/modifiers/trim.rb
232
+ - lib/searchlogic/modifiers/upper.rb
233
+ - lib/searchlogic/modifiers/week.rb
234
+ - lib/searchlogic/modifiers/year.rb
235
+ - lib/searchlogic/search/base.rb
236
+ - lib/searchlogic/search/conditions.rb
237
+ - lib/searchlogic/search/ordering.rb
238
+ - lib/searchlogic/search/pagination.rb
239
+ - lib/searchlogic/search/protection.rb
240
+ - lib/searchlogic/search/searching.rb
241
+ - lib/searchlogic/shared/utilities.rb
242
+ - lib/searchlogic/shared/virtual_classes.rb
243
+ - lib/searchlogic/version.rb
244
+ - lib/searchlogic.rb
245
+ - Manifest
246
+ - MIT-LICENSE
247
+ - Rakefile
248
+ - README.rdoc
249
+ - test/fixtures/accounts.yml
250
+ - test/fixtures/cats.yml
251
+ - test/fixtures/dogs.yml
252
+ - test/fixtures/orders.yml
253
+ - test/fixtures/user_groups.yml
254
+ - test/fixtures/users.yml
255
+ - test/test_active_record_associations.rb
256
+ - test/test_active_record_base.rb
257
+ - test/test_condition_base.rb
258
+ - test/test_condition_types.rb
259
+ - test/test_conditions_base.rb
260
+ - test/test_conditions_protection.rb
261
+ - test/test_config.rb
262
+ - test/test_helper.rb
263
+ - test/test_search_base.rb
264
+ - test/test_search_conditions.rb
265
+ - test/test_search_ordering.rb
266
+ - test/test_search_pagination.rb
267
+ - test/test_search_protection.rb
268
+ - test_libs/acts_as_tree.rb
269
+ - test_libs/ordered_hash.rb
270
+ - test_libs/rexml_fix.rb
271
+ - TODO.rdoc
272
+ - searchlogic.gemspec
273
+ has_rdoc: true
274
+ homepage: http://github.com/binarylogic/searchlogic
275
+ post_install_message:
276
+ rdoc_options:
277
+ - --line-numbers
278
+ - --inline-source
279
+ - --title
280
+ - Searchlogic
281
+ - --main
282
+ - README.rdoc
283
+ require_paths:
284
+ - lib
285
+ required_ruby_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: "0"
290
+ version:
291
+ required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ">="
294
+ - !ruby/object:Gem::Version
295
+ version: "1.2"
296
+ version:
297
+ requirements: []
298
+
299
+ rubyforge_project: searchlogic
300
+ rubygems_version: 1.2.0
301
+ signing_key:
302
+ specification_version: 2
303
+ summary: Object based ActiveRecord searching, ordering, pagination, and more!
304
+ test_files:
305
+ - test/test_active_record_associations.rb
306
+ - test/test_active_record_base.rb
307
+ - test/test_condition_base.rb
308
+ - test/test_condition_types.rb
309
+ - test/test_conditions_base.rb
310
+ - test/test_conditions_protection.rb
311
+ - test/test_config.rb
312
+ - test/test_helper.rb
313
+ - test/test_search_base.rb
314
+ - test/test_search_conditions.rb
315
+ - test/test_search_ordering.rb
316
+ - test/test_search_pagination.rb
317
+ - test/test_search_protection.rb