searchlogic 1.5.9 → 1.5.10

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/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.5.10 released 2008-12-10
2
+
3
+ * Create class level conditions upon instantiation to avoid conflicts.
4
+
1
5
  == 1.5.9 released 2008-12-3
2
6
 
3
7
  * Added metaclass object extension for older version of ActiveSupport.
@@ -1,6 +1,6 @@
1
1
  module Searchlogic
2
2
  module Condition
3
- class InclusiveDescendantOf < Tree
3
+ class InclusiveDescendantOf < Tree
4
4
  def to_conditions(value)
5
5
  condition = DescendantOf.new(klass, options)
6
6
  condition.value = value
@@ -8,7 +8,7 @@ module Searchlogic
8
8
  []
9
9
  end
10
10
 
11
- def condition_names_for_model(model)
11
+ def condition_names_for_model
12
12
  [condition_type_name]
13
13
  end
14
14
  end
@@ -7,7 +7,7 @@ module Searchlogic
7
7
  def self.included(klass)
8
8
  klass.metaclass.class_eval do
9
9
  include ClassMethods
10
- attr_accessor :added_column_equals_conditions, :added_associations
10
+ attr_accessor :added_class_level_conditions, :added_column_equals_conditions, :added_associations
11
11
  end
12
12
 
13
13
  klass.class_eval do
@@ -45,6 +45,7 @@ module Searchlogic
45
45
  def initialize_with_magic_methods(*args)
46
46
  add_associations!
47
47
  add_column_equals_conditions!
48
+ add_class_level_conditions!
48
49
  initialize_without_magic_methods(*args)
49
50
  end
50
51
 
@@ -83,6 +84,21 @@ module Searchlogic
83
84
  klass.column_names.each { |name| setup_condition(name) }
84
85
  self.class.added_column_equals_conditions = true
85
86
  end
87
+
88
+ def add_class_level_conditions!
89
+ return true if self.class.added_class_level_conditions
90
+ class_level_conditions = self.class.conditions.select { |condition_class| !condition_class.condition_names_for_model.blank? }
91
+ class_level_conditions.each do |condition_class|
92
+ condition_class.condition_names_for_model.each_with_index do |condition_name, index|
93
+ if index == 0
94
+ add_condition!(condition_class, condition_name)
95
+ else
96
+ add_condition_alias!(condition_name, condition_class.condition_names_for_model.first)
97
+ end
98
+ end
99
+ end
100
+ self.class.added_class_level_conditions = true
101
+ end
86
102
 
87
103
  def sanitize_method_name(name)
88
104
  name.gsub("=", "").gsub(/^(and|or)_/, "")
@@ -209,7 +225,7 @@ module Searchlogic
209
225
  end
210
226
 
211
227
  def add_condition!(condition, name, options = {})
212
- options[:column] = options[:column].name
228
+ options[:column] = options[:column].name if options[:column]
213
229
 
214
230
  self.class.class_eval <<-"end_eval", __FILE__, __LINE__
215
231
  def #{name}_object
@@ -67,7 +67,7 @@ module Searchlogic
67
67
 
68
68
  MAJOR = 1
69
69
  MINOR = 5
70
- TINY = 9
70
+ TINY = 10
71
71
 
72
72
  # The current version as a Version instance
73
73
  CURRENT = new(MAJOR, MINOR, TINY)
data/searchlogic.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{searchlogic}
5
- s.version = "1.5.9"
5
+ s.version = "1.5.10"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ben Johnson of Binary Logic"]
9
- s.date = %q{2008-12-05}
9
+ s.date = %q{2008-12-07}
10
10
  s.description = %q{Object based ActiveRecord searching, ordering, pagination, and more!}
11
11
  s.email = %q{bjohnson@binarylogic.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/searchlogic/active_record/associations.rb", "lib/searchlogic/active_record/base.rb", "lib/searchlogic/active_record/connection_adapters/mysql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/postgresql_adapter.rb", "lib/searchlogic/active_record/connection_adapters/sqlite_adapter.rb", "lib/searchlogic/condition/base.rb", "lib/searchlogic/condition/begins_with.rb", "lib/searchlogic/condition/blank.rb", "lib/searchlogic/condition/child_of.rb", "lib/searchlogic/condition/descendant_of.rb", "lib/searchlogic/condition/ends_with.rb", "lib/searchlogic/condition/equals.rb", "lib/searchlogic/condition/greater_than.rb", "lib/searchlogic/condition/greater_than_or_equal_to.rb", "lib/searchlogic/condition/inclusive_descendant_of.rb", "lib/searchlogic/condition/keywords.rb", "lib/searchlogic/condition/less_than.rb", "lib/searchlogic/condition/less_than_or_equal_to.rb", "lib/searchlogic/condition/like.rb", "lib/searchlogic/condition/nil.rb", "lib/searchlogic/condition/not_begin_with.rb", "lib/searchlogic/condition/not_blank.rb", "lib/searchlogic/condition/not_end_with.rb", "lib/searchlogic/condition/not_equal.rb", "lib/searchlogic/condition/not_have_keywords.rb", "lib/searchlogic/condition/not_like.rb", "lib/searchlogic/condition/not_nil.rb", "lib/searchlogic/condition/sibling_of.rb", "lib/searchlogic/condition/tree.rb", "lib/searchlogic/conditions/any_or_all.rb", "lib/searchlogic/conditions/base.rb", "lib/searchlogic/conditions/groups.rb", "lib/searchlogic/conditions/magic_methods.rb", "lib/searchlogic/conditions/multiparameter_attributes.rb", "lib/searchlogic/conditions/protection.rb", "lib/searchlogic/config/helpers.rb", "lib/searchlogic/config/search.rb", "lib/searchlogic/config.rb", "lib/searchlogic/core_ext/hash.rb", "lib/searchlogic/core_ext/object.rb", "lib/searchlogic/helpers/control_types/link.rb", "lib/searchlogic/helpers/control_types/links.rb", "lib/searchlogic/helpers/control_types/remote_link.rb", "lib/searchlogic/helpers/control_types/remote_links.rb", "lib/searchlogic/helpers/control_types/remote_select.rb", "lib/searchlogic/helpers/control_types/select.rb", "lib/searchlogic/helpers/form.rb", "lib/searchlogic/helpers/utilities.rb", "lib/searchlogic/modifiers/absolute.rb", "lib/searchlogic/modifiers/acos.rb", "lib/searchlogic/modifiers/asin.rb", "lib/searchlogic/modifiers/atan.rb", "lib/searchlogic/modifiers/avg.rb", "lib/searchlogic/modifiers/base.rb", "lib/searchlogic/modifiers/ceil.rb", "lib/searchlogic/modifiers/char_length.rb", "lib/searchlogic/modifiers/cos.rb", "lib/searchlogic/modifiers/cot.rb", "lib/searchlogic/modifiers/count.rb", "lib/searchlogic/modifiers/day_of_month.rb", "lib/searchlogic/modifiers/day_of_week.rb", "lib/searchlogic/modifiers/day_of_year.rb", "lib/searchlogic/modifiers/degrees.rb", "lib/searchlogic/modifiers/exp.rb", "lib/searchlogic/modifiers/floor.rb", "lib/searchlogic/modifiers/hex.rb", "lib/searchlogic/modifiers/hour.rb", "lib/searchlogic/modifiers/log.rb", "lib/searchlogic/modifiers/log10.rb", "lib/searchlogic/modifiers/log2.rb", "lib/searchlogic/modifiers/lower.rb", "lib/searchlogic/modifiers/ltrim.rb", "lib/searchlogic/modifiers/md5.rb", "lib/searchlogic/modifiers/microseconds.rb", "lib/searchlogic/modifiers/milliseconds.rb", "lib/searchlogic/modifiers/minute.rb", "lib/searchlogic/modifiers/month.rb", "lib/searchlogic/modifiers/octal.rb", "lib/searchlogic/modifiers/radians.rb", "lib/searchlogic/modifiers/round.rb", "lib/searchlogic/modifiers/rtrim.rb", "lib/searchlogic/modifiers/second.rb", "lib/searchlogic/modifiers/sign.rb", "lib/searchlogic/modifiers/sin.rb", "lib/searchlogic/modifiers/square_root.rb", "lib/searchlogic/modifiers/sum.rb", "lib/searchlogic/modifiers/tan.rb", "lib/searchlogic/modifiers/trim.rb", "lib/searchlogic/modifiers/upper.rb", "lib/searchlogic/modifiers/week.rb", "lib/searchlogic/modifiers/year.rb", "lib/searchlogic/search/base.rb", "lib/searchlogic/search/conditions.rb", "lib/searchlogic/search/ordering.rb", "lib/searchlogic/search/pagination.rb", "lib/searchlogic/search/protection.rb", "lib/searchlogic/search/searching.rb", "lib/searchlogic/shared/utilities.rb", "lib/searchlogic/shared/virtual_classes.rb", "lib/searchlogic/version.rb", "lib/searchlogic.rb", "README.rdoc", "TODO.rdoc"]
@@ -2,6 +2,17 @@ require File.dirname(__FILE__) + '/../test_helper.rb'
2
2
 
3
3
  module ConditionsTests
4
4
  class MagicMethodsTest < ActiveSupport::TestCase
5
+ def test_class_level_conditions
6
+ ben = users(:ben)
7
+ drew = users(:drew)
8
+ jennifer = users(:jennifer)
9
+ tren = users(:tren)
10
+
11
+ conditions = Searchlogic::Cache::UserConditions.new
12
+ conditions.descendant_of = ben
13
+ assert_equal ["\"users\".\"id\" = ? OR \"users\".\"id\" = ? OR \"users\".\"id\" = ?", drew.id, tren.id, jennifer.id], conditions.sanitize
14
+ end
15
+
5
16
  def test_virtual_columns
6
17
  search = Account.new_search
7
18
  conditions = search.conditions
@@ -15,10 +26,10 @@ module ConditionsTests
15
26
  assert_equal ["(strftime('%H', \"accounts\".\"created_at\") * 1) > ? AND (strftime('%w', \"accounts\".\"created_at\") * 1) <= ? AND (strftime('%m', \"accounts\".\"created_at\") * 1) IS NULL AND (strftime('%m', (strftime('%H', (strftime('%M', \"accounts\".\"created_at\") * 1)) * 1)) * 1) IS NULL", 2, 5], conditions.sanitize
16
27
  assert_nothing_raised { search.all }
17
28
  end
18
- end
19
-
20
- def test_method_conflicts
21
- conditions = Searchlogic::Cache::AccountConditions.new
22
- assert_nil conditions.id
29
+
30
+ def test_method_conflicts
31
+ conditions = Searchlogic::Cache::AccountConditions.new
32
+ assert_nil conditions.id
33
+ end
23
34
  end
24
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchlogic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.9
4
+ version: 1.5.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Johnson of Binary Logic
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-05 00:00:00 -05:00
12
+ date: 2008-12-07 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency