rails3-jquery-autocomplete 0.8.0 → 0.9.0

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.
Files changed (31) hide show
  1. data/CHANGELOG.md +1 -0
  2. data/README.markdown +11 -2
  3. data/Rakefile +8 -0
  4. data/integration/app/views/id_elements/new.html.haml +1 -1
  5. data/integration/public/javascripts/autocomplete-rails.js +2 -99
  6. data/lib/generators/templates/autocomplete-rails-uncompressed.js +4 -4
  7. data/lib/generators/templates/autocomplete-rails.js +2 -2
  8. data/lib/rails3-jquery-autocomplete.rb +7 -6
  9. data/lib/rails3-jquery-autocomplete/autocomplete.rb +87 -41
  10. data/lib/rails3-jquery-autocomplete/orm.rb +8 -0
  11. data/lib/rails3-jquery-autocomplete/orm/active_record.rb +47 -0
  12. data/lib/rails3-jquery-autocomplete/orm/mongo_mapper.rb +30 -0
  13. data/lib/rails3-jquery-autocomplete/orm/mongoid.rb +30 -0
  14. data/lib/rails3-jquery-autocomplete/version.rb +1 -1
  15. data/rails3-jquery-autocomplete.gemspec +2 -1
  16. data/test/generators/autocomplete/install_generator_test.rb +1 -1
  17. data/test/generators/autocomplete/uncompressed_generator_test.rb +2 -2
  18. data/test/lib/rails3-jquery-autocomplete/autocomplete_test.rb +59 -0
  19. data/test/lib/rails3-jquery-autocomplete/orm/active_record_test.rb +130 -0
  20. data/test/lib/rails3-jquery-autocomplete/orm/mongo_mapper_test.rb +60 -0
  21. data/test/lib/rails3-jquery-autocomplete/orm/mongoid_test.rb +60 -0
  22. data/test/lib/rails3-jquery-autocomplete_test.rb +38 -0
  23. data/test/test_helper.rb +5 -2
  24. metadata +56 -41
  25. data/lib/rails3-jquery-autocomplete/helpers.rb +0 -137
  26. data/test/implementations_test.rb +0 -41
  27. data/test/lib/rails3-jquery-autocomplete/helpers_test.rb +0 -16
  28. data/test/support/active_record.rb +0 -44
  29. data/test/support/mongo_mapper.rb +0 -39
  30. data/test/support/mongoid.rb +0 -43
  31. data/test/test_controller.rb +0 -101
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails3-jquery-autocomplete
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 59
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 8
8
+ - 9
9
9
  - 0
10
- version: 0.8.0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Padilla
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-18 00:00:00 -05:00
18
+ date: 2011-07-07 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -33,24 +33,10 @@ dependencies:
33
33
  version: "3.0"
34
34
  type: :runtime
35
35
  version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: yajl-ruby
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
48
- type: :runtime
49
- version_requirements: *id002
50
36
  - !ruby/object:Gem::Dependency
51
37
  name: sqlite3-ruby
52
38
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
54
40
  none: false
55
41
  requirements:
56
42
  - - ">="
@@ -60,11 +46,11 @@ dependencies:
60
46
  - 0
61
47
  version: "0"
62
48
  type: :development
63
- version_requirements: *id003
49
+ version_requirements: *id002
64
50
  - !ruby/object:Gem::Dependency
65
51
  name: mongoid
66
52
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
68
54
  none: false
69
55
  requirements:
70
56
  - - ">="
@@ -76,11 +62,11 @@ dependencies:
76
62
  - 0
77
63
  version: 2.0.0
78
64
  type: :development
79
- version_requirements: *id004
65
+ version_requirements: *id003
80
66
  - !ruby/object:Gem::Dependency
81
67
  name: mongo_mapper
82
68
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
69
+ requirement: &id004 !ruby/object:Gem::Requirement
84
70
  none: false
85
71
  requirements:
86
72
  - - ">="
@@ -91,11 +77,11 @@ dependencies:
91
77
  - 9
92
78
  version: "0.9"
93
79
  type: :development
94
- version_requirements: *id005
80
+ version_requirements: *id004
95
81
  - !ruby/object:Gem::Dependency
96
82
  name: bson_ext
97
83
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
84
+ requirement: &id005 !ruby/object:Gem::Requirement
99
85
  none: false
100
86
  requirements:
101
87
  - - ~>
@@ -107,11 +93,11 @@ dependencies:
107
93
  - 0
108
94
  version: 1.3.0
109
95
  type: :development
110
- version_requirements: *id006
96
+ version_requirements: *id005
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: shoulda
113
99
  prerelease: false
114
- requirement: &id007 !ruby/object:Gem::Requirement
100
+ requirement: &id006 !ruby/object:Gem::Requirement
115
101
  none: false
116
102
  requirements:
117
103
  - - ~>
@@ -123,10 +109,24 @@ dependencies:
123
109
  - 1
124
110
  version: 2.11.1
125
111
  type: :development
126
- version_requirements: *id007
112
+ version_requirements: *id006
127
113
  - !ruby/object:Gem::Dependency
128
114
  name: uglifier
129
115
  prerelease: false
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ type: :development
126
+ version_requirements: *id007
127
+ - !ruby/object:Gem::Dependency
128
+ name: rr
129
+ prerelease: false
130
130
  requirement: &id008 !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
@@ -138,6 +138,20 @@ dependencies:
138
138
  version: "0"
139
139
  type: :development
140
140
  version_requirements: *id008
141
+ - !ruby/object:Gem::Dependency
142
+ name: rcov
143
+ prerelease: false
144
+ requirement: &id009 !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ type: :development
154
+ version_requirements: *id009
141
155
  description: Use jQuery's autocomplete plugin with Rails 3.
142
156
  email: david.padilla@crowdint.com
143
157
  executables: []
@@ -253,7 +267,10 @@ files:
253
267
  - lib/rails3-jquery-autocomplete/autocomplete.rb
254
268
  - lib/rails3-jquery-autocomplete/form_helper.rb
255
269
  - lib/rails3-jquery-autocomplete/formtastic_plugin.rb
256
- - lib/rails3-jquery-autocomplete/helpers.rb
270
+ - lib/rails3-jquery-autocomplete/orm.rb
271
+ - lib/rails3-jquery-autocomplete/orm/active_record.rb
272
+ - lib/rails3-jquery-autocomplete/orm/mongo_mapper.rb
273
+ - lib/rails3-jquery-autocomplete/orm/mongoid.rb
257
274
  - lib/rails3-jquery-autocomplete/simple_form_plugin.rb
258
275
  - lib/rails3-jquery-autocomplete/version.rb
259
276
  - lib/steak/autocomplete.rb
@@ -261,12 +278,11 @@ files:
261
278
  - test/form_helper_test.rb
262
279
  - test/generators/autocomplete/install_generator_test.rb
263
280
  - test/generators/autocomplete/uncompressed_generator_test.rb
264
- - test/implementations_test.rb
265
- - test/lib/rails3-jquery-autocomplete/helpers_test.rb
266
- - test/support/active_record.rb
267
- - test/support/mongo_mapper.rb
268
- - test/support/mongoid.rb
269
- - test/test_controller.rb
281
+ - test/lib/rails3-jquery-autocomplete/autocomplete_test.rb
282
+ - test/lib/rails3-jquery-autocomplete/orm/active_record_test.rb
283
+ - test/lib/rails3-jquery-autocomplete/orm/mongo_mapper_test.rb
284
+ - test/lib/rails3-jquery-autocomplete/orm/mongoid_test.rb
285
+ - test/lib/rails3-jquery-autocomplete_test.rb
270
286
  - test/test_helper.rb
271
287
  has_rdoc: true
272
288
  homepage: http://github.com/crowdint/rails3-jquery-autocomplete
@@ -306,10 +322,9 @@ test_files:
306
322
  - test/form_helper_test.rb
307
323
  - test/generators/autocomplete/install_generator_test.rb
308
324
  - test/generators/autocomplete/uncompressed_generator_test.rb
309
- - test/implementations_test.rb
310
- - test/lib/rails3-jquery-autocomplete/helpers_test.rb
311
- - test/support/active_record.rb
312
- - test/support/mongo_mapper.rb
313
- - test/support/mongoid.rb
314
- - test/test_controller.rb
325
+ - test/lib/rails3-jquery-autocomplete/autocomplete_test.rb
326
+ - test/lib/rails3-jquery-autocomplete/orm/active_record_test.rb
327
+ - test/lib/rails3-jquery-autocomplete/orm/mongo_mapper_test.rb
328
+ - test/lib/rails3-jquery-autocomplete/orm/mongoid_test.rb
329
+ - test/lib/rails3-jquery-autocomplete_test.rb
315
330
  - test/test_helper.rb
@@ -1,137 +0,0 @@
1
- module Rails3JQueryAutocomplete
2
-
3
- # Contains utility methods used by autocomplete
4
- module Helpers
5
-
6
- #
7
- # Returns a hash with three keys actually used by the Autocomplete jQuery-ui
8
- # Can be overriden to show whatever you like
9
- # Hash also includes a key/value pair for each method in extra_data
10
- #
11
- def json_for_autocomplete(items, method, extra_data=nil)
12
- items.collect do |item|
13
- hash = {"id" => item.id.to_s, "label" => item.send(method), "value" => item.send(method)}
14
- extra_data.each do |datum|
15
- hash[datum] = item.send(datum)
16
- end if extra_data
17
- hash
18
- end
19
- end
20
-
21
- # Returns parameter model_sym as a constant
22
- #
23
- # get_object(:actor)
24
- # # returns a Actor constant supposing it is already defined
25
- #
26
- def get_object(model_sym)
27
- object = model_sym.to_s.camelize.constantize
28
- end
29
-
30
- # Returns a symbol representing what implementation should be used to query
31
- # the database and raises *NotImplementedError* if ORM implementor can not be found
32
- def get_implementation(object)
33
- ancestors_ary = object.ancestors.collect(&:to_s)
34
- if ancestors_ary.include?('ActiveRecord::Base')
35
- :activerecord
36
- elsif ancestors_ary.include?('Mongoid::Document')
37
- :mongoid
38
- elsif ancestors_ary.include?('MongoMapper::Document')
39
- :mongo_mapper
40
- else
41
- raise NotImplementedError
42
- end
43
- end
44
-
45
- #DEPRECATED
46
- def get_order(implementation, method, options)
47
- warn 'Rails3JQueryAutocomplete#get_order is has been DEPRECATED, please use #get_autocomplete_order instead'
48
- get_autocomplete_order(implementation, method, options)
49
- end
50
-
51
- # Returns the order parameter to be used in the query created by get_items
52
- def get_autocomplete_order(implementation, method, options, model=nil)
53
- order = options[:order]
54
-
55
- case implementation
56
- when :mongoid then
57
- if order
58
- order.split(',').collect do |fields|
59
- sfields = fields.split
60
- [sfields[0].downcase.to_sym, sfields[1].downcase.to_sym]
61
- end
62
- else
63
- [[method.to_sym, :asc]]
64
- end
65
- when :mongo_mapper then
66
- if order
67
- order.split(',').collect do |fields|
68
- sfields = fields.split
69
- [sfields[0].downcase.to_sym, sfields[1].downcase.to_sym]
70
- end
71
- else
72
- [[method.to_sym, :asc]]
73
- end
74
- when :activerecord then
75
- table_prefix = model ? "#{model.table_name}." : ""
76
- order || "#{table_prefix}#{method} ASC"
77
- end
78
- end
79
-
80
- # DEPRECATED
81
- def get_limit(options)
82
- warn 'Rails3JQueryAutocomplete#get_limit is has been DEPRECATED, please use #get_autocomplete_limit instead'
83
- get_autocomplete_limit(options)
84
- end
85
-
86
- # Returns a limit that will be used on the query
87
- def get_autocomplete_limit(options)
88
- options[:limit] ||= 10
89
- end
90
-
91
- # DEPRECATED
92
- def get_items(parameters)
93
- warn 'Rails3JQueryAutocomplete#get_items is has been DEPRECATED, you should use #get_autocomplete_items instead'
94
- get_autocomplete_items(parameters)
95
- end
96
-
97
- #
98
- # Can be overriden to return or filter however you like
99
- # the objects to be shown by autocomplete
100
- #
101
- # items = get_autocomplete_items(:model => get_object(object), :options => options, :term => term, :method => method)
102
- #
103
- def get_autocomplete_items(parameters)
104
- model = parameters[:model]
105
- term = parameters[:term]
106
- method = parameters[:method]
107
- options = parameters[:options]
108
-
109
- is_full_search = options[:full]
110
- scopes = Array(options[:scopes])
111
- limit = get_autocomplete_limit(options)
112
- implementation = get_implementation(model)
113
- order = get_autocomplete_order(implementation, method, options, model)
114
-
115
- like_clause = (defined?(PGconn) ? 'ILIKE' : 'LIKE')
116
-
117
- implementation == :mongo_mapper ? (items = model.query) : items = model.scoped
118
-
119
- scopes.each { |scope| items = items.send(scope) } unless scopes.empty?
120
-
121
- case implementation
122
- when :mongoid
123
- search = (is_full_search ? '.*' : '^') + term + '.*'
124
- items = model.where(method.to_sym => /#{search}/i).limit(limit).order_by(order)
125
- when :mongo_mapper
126
- search = (is_full_search ? '.*' : '^') + term + '.*'
127
- items = model.where(method.to_sym => /#{search}/i).limit(limit).sort(order)
128
- when :activerecord
129
- table_name = model.table_name
130
- items = items.select(["#{table_name}.#{model.primary_key}", "#{table_name}.#{method}"] + (options[:extra_data].blank? ? [] : options[:extra_data])) unless options[:full_model]
131
- items = items.where(["LOWER(#{table_name}.#{method}) #{like_clause} ?", "#{(is_full_search ? '%' : '')}#{term.downcase}%"]) \
132
- .limit(limit).order(order)
133
- end
134
- end
135
- end
136
- end
137
-
@@ -1,41 +0,0 @@
1
- require "test_helper"
2
- require 'test_controller'
3
- require 'support/mongoid'
4
- require 'support/mongo_mapper'
5
- require 'support/active_record'
6
-
7
- class ActiveRecordControllerTest < ActionController::TestCase
8
- include Rails3JQueryAutocomplete::TestCase::ActiveRecord
9
- include Rails3JQueryAutocomplete::TestCase
10
- end
11
-
12
- class ActiveRecordSTIControllerTest < ActionController::TestCase
13
- include Rails3JQueryAutocomplete::TestCase::ActiveRecord
14
- include Rails3JQueryAutocomplete::TestCase
15
-
16
- def create_models
17
- @parent_movie_class = Object.const_set(:Movie, Class.new(::ActiveRecord::Base))
18
- @parent_movie_class.class_eval do
19
- def display_name
20
- "Movie: #{name}"
21
- end
22
- end
23
- @movie_class = Object.const_set(:HorrorMovie, Class.new(@parent_movie_class))
24
- end
25
-
26
- def destroy_models
27
- Object.send(:remove_const, :Movie)
28
- Object.send(:remove_const, :HorrorMovie)
29
- end
30
-
31
- end
32
-
33
- class MonogidControllerTest < ActionController::TestCase
34
- include Rails3JQueryAutocomplete::TestCase::Mongoid
35
- include Rails3JQueryAutocomplete::TestCase
36
- end
37
-
38
- class MongoMapperControllerTest < ActionController::TestCase
39
- include Rails3JQueryAutocomplete::TestCase::MongoMapper
40
- include Rails3JQueryAutocomplete::TestCase
41
- end
@@ -1,16 +0,0 @@
1
- require 'test_helper'
2
-
3
- module Rails3JQueryAutocomplete
4
- module Test
5
- class HelpersTest < ::Test::Unit::TestCase
6
- include Rails3JQueryAutocomplete::Helpers
7
-
8
- context 'passing a query result' do
9
- should 'parse items to JSON' do
10
- response = self.json_for_autocomplete([], :name)
11
- assert_not_nil(response)
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,44 +0,0 @@
1
- module Rails3JQueryAutocomplete
2
- module TestCase
3
- module ActiveRecord
4
- def setup
5
- ::ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
6
- ::ActiveRecord::Schema.define(:version => 1) do
7
- create_table :movies do |t|
8
- t.column :name, :string
9
- end
10
- end
11
-
12
- create_models
13
-
14
- @controller = ActorsController.new
15
-
16
- @movie1 = @movie_class.create(:name => 'Alpha')
17
- @movie2 = @movie_class.create(:name => 'Alspha')
18
- @movie3 = @movie_class.create(:name => 'Alzpha')
19
- end
20
-
21
- def teardown
22
- destroy_models
23
- ::ActiveRecord::Base.connection.tables.each do |table|
24
- ::ActiveRecord::Base.connection.drop_table(table)
25
- end
26
- end
27
-
28
- private
29
- def create_models
30
- @movie_class = Object.const_set(:Movie, Class.new(::ActiveRecord::Base))
31
- @movie_class.class_eval do
32
- def display_name
33
- "Movie: #{name}"
34
- end
35
- end
36
- end
37
-
38
- def destroy_models
39
- Object.send(:remove_const, :Movie)
40
- end
41
-
42
- end
43
- end
44
- end
@@ -1,39 +0,0 @@
1
- module Rails3JQueryAutocomplete
2
- module TestCase
3
- module MongoMapper
4
- def setup
5
- ::MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
6
- ::MongoMapper.database = "rails3_jquery_autocomplete_test"
7
-
8
- create_models
9
-
10
- @controller = ActorsController.new
11
- @movie1 = @movie_class.create(:name => 'Alpha')
12
- @movie2 = @movie_class.create(:name => 'Alspha')
13
- @movie3 = @movie_class.create(:name => 'Alzpha')
14
- end
15
-
16
- def teardown
17
- destroy_models
18
- ::MongoMapper.database.collections.select {|c| c.name !~ /system/ }.each(&:drop)
19
- end
20
-
21
- private
22
- def create_models
23
- @movie_class = Object.const_set(:Movie, Class.new)
24
- @movie_class.send(:include, ::MongoMapper::Document)
25
- @movie_class.key(:name, :class => String)
26
- @movie_class.class_eval do
27
- def display_name
28
- "Movie: #{name}"
29
- end
30
- end
31
- end
32
-
33
- def destroy_models
34
- Object.send(:remove_const, :Movie)
35
- end
36
-
37
- end
38
- end
39
- end