searchy 0.0.1 → 0.0.4

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.
@@ -5,14 +5,34 @@ module Searchy
5
5
 
6
6
  module ClassMethods
7
7
  def search(query = nil)
8
- if query.present?
9
- fields = columns.select{|c| TYPES.include?(c.type)}.map(&:name)
10
- command = fields.map{|f| "#{table_name}.#{f} LIKE ?"}.join(' OR ')
11
-
12
- where([command, *Array.new(fields.length).map{"%#{query}%"}])
13
- else
14
- scoped
8
+ @query = query.strip.split(/\s+/)
9
+ search_scope
10
+ end
11
+
12
+ protected
13
+
14
+ def search_scope
15
+ @query.present? ? where([search_command, *search_arguments]) : scoped
16
+ end
17
+
18
+ def search_arguments
19
+ arguments = @query.map do |word|
20
+ Array.new(searchable_columns.length).map{"%#{word}%"}
15
21
  end
22
+
23
+ arguments.flatten
24
+ end
25
+
26
+ def search_command
27
+ parts = @query.map do
28
+ searchable_columns.map{|f| "#{table_name}.#{f} LIKE ?"}.join(' OR ')
29
+ end
30
+
31
+ parts.map{|p| "(#{p})"}.join(' AND ')
32
+ end
33
+
34
+ def searchable_columns
35
+ self.columns.select{|c| TYPES.include?(c.type)}.map(&:name)
16
36
  end
17
37
  end
18
38
  end
@@ -1,3 +1,3 @@
1
1
  module Searchy
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,48 +1,34 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: searchy
3
- version: !ruby/object:Gem::Version
4
- hash: 29
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - jimneath@gmail.com
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-03-21 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: activerecord
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70114209015040 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 7
29
- segments:
30
- - 3
31
- - 0
32
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 3.0.0
34
22
  type: :runtime
35
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: *70114209015040
36
25
  description: The simplest search gem
37
- email:
26
+ email:
38
27
  - jimneath@gmail.com
39
28
  executables: []
40
-
41
29
  extensions: []
42
-
43
30
  extra_rdoc_files: []
44
-
45
- files:
31
+ files:
46
32
  - .gitignore
47
33
  - .rvmrc
48
34
  - Gemfile
@@ -52,38 +38,28 @@ files:
52
38
  - lib/searchy/version.rb
53
39
  - readme.md
54
40
  - searchy.gemspec
55
- homepage: ""
41
+ homepage: ''
56
42
  licenses: []
57
-
58
43
  post_install_message:
59
44
  rdoc_options: []
60
-
61
- require_paths:
45
+ require_paths:
62
46
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
47
+ required_ruby_version: !ruby/object:Gem::Requirement
64
48
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
54
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 3
78
- segments:
79
- - 0
80
- version: "0"
55
+ requirements:
56
+ - - ! '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
81
59
  requirements: []
82
-
83
60
  rubyforge_project: searchy
84
- rubygems_version: 1.8.17
61
+ rubygems_version: 1.8.16
85
62
  signing_key:
86
63
  specification_version: 3
87
64
  summary: The simplest search gem
88
65
  test_files: []
89
-