searchlogic 1.5.3

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 (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