searchgasm 1.3.2 → 1.3.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.
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