jqr-simple_column_search 0.0.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 ADDED
@@ -0,0 +1,3 @@
1
+ v0.0.3. Plenty of doc cleanups.
2
+ v0.0.2. Added a simpler interface to enable the plugin.
3
+ v0.0.1. Initial release.
data/Manifest ADDED
@@ -0,0 +1,8 @@
1
+ CHANGELOG
2
+ init.rb
3
+ lib/simple_column_search.rb
4
+ Manifest
5
+ Rakefile
6
+ README.rdoc
7
+ spec/models.rb
8
+ spec/spec_helper.rb
data/README.rdoc ADDED
@@ -0,0 +1,32 @@
1
+ = Simple Column Search
2
+
3
+ Quick and dirty multi column LIKE searches. Handles partial matches and multiple ANDed terms.
4
+
5
+ Running lots of queries or have a large data set? You should probably upgrade to a real search back-end already!
6
+
7
+ == Examples
8
+
9
+ class User
10
+ simple_column_search :first_name, :last_name
11
+ end
12
+
13
+ User.search('elijah') # => anyone with first or last name elijah
14
+ User.search('miller') # => anyone with first or last name miller
15
+ User.search('elijah miller')
16
+ # => anyone with first or last name elijah AND
17
+ # anyone with first or last name miller
18
+
19
+ == Install
20
+
21
+ As a Rails plugin.
22
+
23
+ ./script/plugin install git://github.com/jqr/simple_column_search.git
24
+
25
+ Prefer gems?
26
+
27
+ gem sources -a http://gems.github.com
28
+ gem install jqr-simple_column_search
29
+
30
+
31
+ Homepage:: http://github.com/jqr/simple_column_search/tree/master
32
+ License:: Copyright (c) 2008 Elijah Miller <mailto:elijah.miller@gmail.com>, released under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ require 'echoe'
4
+ Echoe.new 'simple_column_search' do |p|
5
+ p.description = "Quick and dirty multi column LIKE searches."
6
+ # p.url = "http://has_one_autocreate.rubyforge.org"
7
+ p.author = "Elijah Miller"
8
+ p.email = "elijah.miller@gmail.com"
9
+ p.retain_gemspec = true
10
+ p.need_tar_gz = false
11
+ p.extra_deps = [
12
+ ]
13
+ p.ignore_pattern = ['spec/test.sqlite3']
14
+ end
15
+
16
+ desc 'Default: run specs'
17
+ task :default => :spec
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_files = FileList["spec/**/*_spec.rb"]
20
+ end
21
+
22
+ task :test => :spec
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'simple_column_search'
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'activerecord'
3
+
4
+ class ActiveRecord::Base
5
+ # Adds a Model.search('term1 term2') method that searches across SEARCH_COLUMNS
6
+ # for ANDed TERMS ORed across columns.
7
+ #
8
+ # class User
9
+ # simple_column_search :first_name, :last_name
10
+ # end
11
+ #
12
+ # User.search('elijah') # => anyone with first or last name elijah
13
+ # User.search('miller') # => anyone with first or last name miller
14
+ # User.search('elijah miller')
15
+ # # => anyone with first or last name elijah AND
16
+ # # anyone with first or last name miller
17
+ def self.simple_column_search(*columns)
18
+ named_scope :search, lambda { |terms|
19
+ conditions = terms.split.inject(nil) do |acc, term|
20
+ pattern = term + '%'
21
+ merge_conditions acc, [columns.collect { |column| "#{table_name}.#{column} LIKE :pattern" }.join(' OR '), { :pattern => pattern }]
22
+ end
23
+
24
+ { :conditions => conditions }
25
+ }
26
+ end
27
+
28
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{simple_column_search}
5
+ s.version = "0.0.3"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Elijah Miller"]
9
+ s.date = %q{2008-12-23}
10
+ s.description = %q{Quick and dirty multi column LIKE searches.}
11
+ s.email = %q{elijah.miller@gmail.com}
12
+ s.extra_rdoc_files = ["CHANGELOG", "lib/simple_column_search.rb", "README.rdoc"]
13
+ s.files = ["CHANGELOG", "init.rb", "lib/simple_column_search.rb", "Manifest", "Rakefile", "README.rdoc", "spec/models.rb", "spec/spec_helper.rb", "simple_column_search.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Simple_column_search", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{simple_column_search}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{Quick and dirty multi column LIKE searches.}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_development_dependency(%q<echoe>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<echoe>, [">= 0"])
30
+ end
31
+ else
32
+ s.add_dependency(%q<echoe>, [">= 0"])
33
+ end
34
+ end
data/spec/models.rb ADDED
File without changes
@@ -0,0 +1,12 @@
1
+ require 'spec'
2
+ require 'fileutils'
3
+
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'simple_column_search')
5
+
6
+ require File.join(File.dirname(__FILE__), 'models')
7
+
8
+ TEST_DATABASE_FILE = File.join(File.dirname(__FILE__), 'test.sqlite3')
9
+
10
+ Spec::Runner.configure do |config|
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jqr-simple_column_search
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Elijah Miller
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-23 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: echoe
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ description: Quick and dirty multi column LIKE searches.
25
+ email: elijah.miller@gmail.com
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - CHANGELOG
32
+ - lib/simple_column_search.rb
33
+ - README.rdoc
34
+ files:
35
+ - CHANGELOG
36
+ - init.rb
37
+ - lib/simple_column_search.rb
38
+ - Manifest
39
+ - Rakefile
40
+ - README.rdoc
41
+ - spec/models.rb
42
+ - spec/spec_helper.rb
43
+ - simple_column_search.gemspec
44
+ has_rdoc: true
45
+ homepage: ""
46
+ post_install_message:
47
+ rdoc_options:
48
+ - --line-numbers
49
+ - --inline-source
50
+ - --title
51
+ - Simple_column_search
52
+ - --main
53
+ - README.rdoc
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ version:
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "1.2"
67
+ version:
68
+ requirements: []
69
+
70
+ rubyforge_project: simple_column_search
71
+ rubygems_version: 1.2.0
72
+ signing_key:
73
+ specification_version: 2
74
+ summary: Quick and dirty multi column LIKE searches.
75
+ test_files: []
76
+