searchy 0.0.1 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-