searchgasm 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,10 @@
1
+ == 1.3.3 released 2008-10-03
2
+
3
+ * Fixed modifiers being double escaped on equals condition
4
+ * Fixed bug when merging conditions with array substitutions
5
+ * Updated blank condition to check if the values is false or not
6
+ * Fixed type for the year modifier in the mysql adapter
7
+
1
8
  == 1.3.2 released 2008-10-03
2
9
 
3
10
  * Fixed condition to type cast all values in an array
@@ -44,7 +44,7 @@ module Searchgasm
44
44
  end
45
45
 
46
46
  def year_sql(column_name)
47
- "MONTH(#{column_name})"
47
+ "YEAR(#{column_name})"
48
48
  end
49
49
 
50
50
  # String functions
@@ -11,9 +11,9 @@ module Searchgasm
11
11
 
12
12
  def to_conditions(value)
13
13
  if value == true
14
- "#{column_sql} is NULL or #{column_sql} = ''"
14
+ "#{column_sql} is NULL or #{column_sql} = '' or #{column_sql} = false"
15
15
  elsif value == false
16
- "#{column_sql} is NOT NULL and #{column_sql} != ''"
16
+ "#{column_sql} is NOT NULL and #{column_sql} != '' and #{column_sql} != false"
17
17
  end
18
18
  end
19
19
  end
@@ -12,7 +12,15 @@ module Searchgasm
12
12
 
13
13
  def to_conditions(value)
14
14
  # Let ActiveRecord handle this
15
- klass.send(:sanitize_sql_hash_for_conditions, {column.name => value})
15
+ args = []
16
+ case value
17
+ when Range
18
+ args = [value.first, value.last]
19
+ else
20
+ args << value
21
+ end
22
+
23
+ ["#{column_sql} #{klass.send(:attribute_condition, value)}", *args]
16
24
  end
17
25
  end
18
26
  end
@@ -15,12 +15,12 @@ module Searchgasm
15
15
  condition = Equals.new(klass, column)
16
16
  condition.value = value
17
17
 
18
- sql = condition.sanitize
19
- sql.gsub!(/ IS /, " IS NOT ")
20
- sql.gsub!(/ BETWEEN /, " NOT BETWEEN ")
21
- sql.gsub!(/ IN /, " NOT IN ")
22
- sql.gsub!(/=/, "!=")
23
- sql
18
+ conditions_array = condition.sanitize
19
+ conditions_array.first.gsub!(/ IS /, " IS NOT ")
20
+ conditions_array.first.gsub!(/ BETWEEN /, " NOT BETWEEN ")
21
+ conditions_array.first.gsub!(/ IN /, " NOT IN ")
22
+ conditions_array.first.gsub!(/=/, "!=")
23
+ conditions_array
24
24
  end
25
25
  end
26
26
  end
@@ -1,6 +1,6 @@
1
1
  module Searchgasm
2
2
  module Helpers #:nodoc:
3
- module Utilities # :nodoc:
3
+ module Utilities
4
4
  # Builds a hash of params for creating a url and preserves any existing params. You can pass this into url_for and build your url. Although most rails helpers accept a hash.
5
5
  #
6
6
  # Let's take the page_link helper. Here is the code behind that helper:
@@ -13,7 +13,7 @@ module Searchgasm
13
13
 
14
14
  conditions.each do |condition|
15
15
  next if condition.blank?
16
- arr_condition = [condition].flatten
16
+ arr_condition = condition.is_a?(Array) ? condition : [condition]
17
17
  conditions_strs << arr_condition.first
18
18
  conditions_subs += arr_condition[1..-1]
19
19
  end
@@ -67,7 +67,7 @@ module Searchgasm
67
67
 
68
68
  MAJOR = 1
69
69
  MINOR = 3
70
- TINY = 2
70
+ TINY = 3
71
71
 
72
72
  # The current version as a Version instance
73
73
  CURRENT = new(MAJOR, MINOR, TINY)
data/searchgasm.gemspec CHANGED
@@ -1,18 +1,18 @@
1
1
 
2
- # Gem::Specification for Searchgasm-1.3.2
2
+ # Gem::Specification for Searchgasm-1.3.3
3
3
  # Originally generated by Echoe
4
4
 
5
5
  --- !ruby/object:Gem::Specification
6
6
  name: searchgasm
7
7
  version: !ruby/object:Gem::Version
8
- version: 1.3.2
8
+ version: 1.3.3
9
9
  platform: ruby
10
10
  authors:
11
11
  - Ben Johnson of Binary Logic
12
12
  autorequire:
13
13
  bindir: bin
14
14
 
15
- date: 2008-10-03 00:00:00 -04:00
15
+ date: 2008-10-05 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
@@ -8,19 +8,19 @@ class TestConditionTypes < Test::Unit::TestCase
8
8
 
9
9
  condition = Searchgasm::Condition::Blank.new(Account, Account.columns_hash["id"])
10
10
  condition.value = "true"
11
- assert_equal "\"accounts\".\"id\" is NULL or \"accounts\".\"id\" = ''", condition.sanitize
11
+ assert_equal "\"accounts\".\"id\" is NULL or \"accounts\".\"id\" = '' or \"accounts\".\"id\" = false", condition.sanitize
12
12
 
13
13
  condition = Searchgasm::Condition::Blank.new(Account, Account.columns_hash["id"])
14
14
  condition.value = "false"
15
- assert_equal "\"accounts\".\"id\" is NOT NULL and \"accounts\".\"id\" != ''", condition.sanitize
15
+ assert_equal "\"accounts\".\"id\" is NOT NULL and \"accounts\".\"id\" != '' and \"accounts\".\"id\" != false", condition.sanitize
16
16
 
17
17
  condition = Searchgasm::Condition::Blank.new(Account, Account.columns_hash["id"])
18
18
  condition.value = true
19
- assert_equal "\"accounts\".\"id\" is NULL or \"accounts\".\"id\" = ''", condition.sanitize
19
+ assert_equal "\"accounts\".\"id\" is NULL or \"accounts\".\"id\" = '' or \"accounts\".\"id\" = false", condition.sanitize
20
20
 
21
21
  condition = Searchgasm::Condition::Blank.new(Account, Account.columns_hash["id"])
22
22
  condition.value = false
23
- assert_equal "\"accounts\".\"id\" is NOT NULL and \"accounts\".\"id\" != ''", condition.sanitize
23
+ assert_equal "\"accounts\".\"id\" is NOT NULL and \"accounts\".\"id\" != '' and \"accounts\".\"id\" != false", condition.sanitize
24
24
 
25
25
  condition = Searchgasm::Condition::Blank.new(Account, Account.columns_hash["id"])
26
26
  condition.value = nil
@@ -48,15 +48,15 @@ class TestConditionTypes < Test::Unit::TestCase
48
48
 
49
49
  condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
50
50
  condition.value = 12
51
- assert_equal "\"accounts\".\"id\" = 12", condition.sanitize
51
+ assert_equal ["\"accounts\".\"id\" = ?", 12], condition.sanitize
52
52
 
53
53
  condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
54
54
  condition.value = [1,2,3,4]
55
- assert_equal "\"accounts\".\"id\" IN (1,2,3,4)", condition.sanitize
55
+ assert_equal ["\"accounts\".\"id\" IN (?)", [1, 2, 3, 4]], condition.sanitize
56
56
 
57
57
  condition = Searchgasm::Condition::Equals.new(Account, Account.columns_hash["id"])
58
58
  condition.value = (1..10)
59
- assert_equal "\"accounts\".\"id\" BETWEEN 1 AND 10", condition.sanitize
59
+ assert_equal ["\"accounts\".\"id\" BETWEEN ? AND ?", 1, 10], condition.sanitize
60
60
 
61
61
  condition = Searchgasm::Condition::GreaterThan.new(Account, Account.columns_hash["id"])
62
62
  condition.value = 2
@@ -100,15 +100,15 @@ class TestConditionTypes < Test::Unit::TestCase
100
100
 
101
101
  condition = Searchgasm::Condition::NotEqual.new(Account, Account.columns_hash["id"])
102
102
  condition.value = 12
103
- assert_equal "\"accounts\".\"id\" != 12", condition.sanitize
103
+ assert_equal ["\"accounts\".\"id\" != ?", 12], condition.sanitize
104
104
 
105
105
  condition = Searchgasm::Condition::NotEqual.new(Account, Account.columns_hash["id"])
106
106
  condition.value = [1,2,3,4]
107
- assert_equal "\"accounts\".\"id\" NOT IN (1,2,3,4)", condition.sanitize
107
+ assert_equal ["\"accounts\".\"id\" NOT IN (?)", [1, 2, 3, 4]], condition.sanitize
108
108
 
109
109
  condition = Searchgasm::Condition::NotEqual.new(Account, Account.columns_hash["id"])
110
110
  condition.value = (1..10)
111
- assert_equal "\"accounts\".\"id\" NOT BETWEEN 1 AND 10", condition.sanitize
111
+ assert_equal ["\"accounts\".\"id\" NOT BETWEEN ? AND ?", 1, 10], condition.sanitize
112
112
 
113
113
  condition = Searchgasm::Condition::Keywords.new(Account, Account.columns_hash["name"])
114
114
  condition.value = "freedom yeah, freedom YEAH right"
@@ -44,11 +44,11 @@ class TestConditionsBase < Test::Unit::TestCase
44
44
  conditions.name_contains = "Binary"
45
45
  assert_equal ["\"accounts\".\"name\" LIKE ?", "%Binary%"], conditions.sanitize
46
46
  conditions.id = 1
47
- assert_equal ["(\"accounts\".\"id\" = 1) AND (\"accounts\".\"name\" LIKE ?)", "%Binary%"], conditions.sanitize
47
+ assert_equal ["(\"accounts\".\"id\" = ?) AND (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
48
48
  conditions.any = true
49
- assert_equal ["(\"accounts\".\"id\" = 1) OR (\"accounts\".\"name\" LIKE ?)", "%Binary%"], conditions.sanitize
49
+ assert_equal ["(\"accounts\".\"id\" = ?) OR (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
50
50
  conditions.any = false
51
- assert_equal ["(\"accounts\".\"id\" = 1) AND (\"accounts\".\"name\" LIKE ?)", "%Binary%"], conditions.sanitize
51
+ assert_equal ["(\"accounts\".\"id\" = ?) AND (\"accounts\".\"name\" LIKE ?)", 1, "%Binary%"], conditions.sanitize
52
52
  end
53
53
 
54
54
  def test_auto_joins
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: searchgasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
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-10-03 00:00:00 -04:00
12
+ date: 2008-10-05 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency