autocomplete_rails 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7eed4339441b8ff35370508d4a241c4662631c7
4
- data.tar.gz: 6a90ee2bb13d34f18ba3bfff9d5a43b9c1c91c09
3
+ metadata.gz: 1252115fac64fe3b2177ac3fe4ecd2cdec6dcc57
4
+ data.tar.gz: 05bf9a79349b5a78eaa913f928a5347cc9a16efd
5
5
  SHA512:
6
- metadata.gz: c6837fd169753cfc1c4d01214c504366f23f1503f27f0bf35d4b80e71744e2a20b4466362b394cbebf54a9db5e77cff64389f0413f18c6a471a64b5de5ec603c
7
- data.tar.gz: c1b3e85d6c176e81e04d78533801dc1c348146d2a8c2c3215627f57bdab30d10bac074ea3b4632b808066809b65da0cd48fab2b977b5db00df1473abbd46e727
6
+ metadata.gz: 0a678532046c07d694d814e6f3ff4b89d2c91f0b7bd0f123d9a97752beb346fbe83c53acc6a849b6bfa2331b74139d1fe2359b54597ea579aa84454514faced6
7
+ data.tar.gz: 3c5fcc78cc3f83bbbba89efc34f77c2aa09d7e7f5e4ba66c85b6db5a152f73a2e3cb9ba012dea61e9ff119e2712272513a7e5abdf2a1dbb993f80d4d9737a19c
data/Rakefile CHANGED
@@ -27,3 +27,10 @@ RSpec::Core::RakeTask.new(:spec)
27
27
  desc 'Run all specs in spec directory (excluding plugin specs)'
28
28
  task default: :spec
29
29
 
30
+ task :build do
31
+ system "gem build autocomplete_rails.gemspec"
32
+ end
33
+
34
+ task release: :build do
35
+ system "gem push bundler-#{AutocompleteRails::VERSION}"
36
+ end
@@ -26,6 +26,8 @@ module AutocompleteRails
26
26
  # * value_method - method on model to autocomplete. This supplies the 'value' field in results.
27
27
  # Also used as the label unless you supply options[:label_method].
28
28
  # * options - hash of optional settings.
29
+ # * &block - an optional block to further modify the results set,
30
+ # e.g. `{ |results| results.where(smth: @instance_variable) }`
29
31
  #
30
32
  #
31
33
  # Options accepts a hash of:
@@ -39,6 +41,8 @@ module AutocompleteRails
39
41
  # field being searched (see value_method above) must start with the search term.
40
42
  # * :scopes - Build your autocomplete query from the specified ActiveRecord scope(s). Multiple scopes can be
41
43
  # used, pass them in as an array. Example: `scopes: [:scope1, :scope2]`
44
+ # If you need to pass additional arguments to your scope, define them as an array of arrays.
45
+ # Example: `scopes: [:scope1, [:scope2, 'argument 1', 'argument 2] ]`
42
46
  # * :order - specify an order clause, defaults to 'LOWER(#{table}.#{value_method}) ASC'
43
47
  #
44
48
  # Be sure to add a route to reach the generated controller method. Example:
@@ -54,13 +58,13 @@ module AutocompleteRails
54
58
  # autocomplete :user, :email, label_method: full_name, full_model: true
55
59
  # end
56
60
  #
57
- def autocomplete(model_symbol, value_method, options = {})
61
+ def autocomplete(model_symbol, value_method, options = {}, &block)
58
62
  label_method = options[:label_method] || value_method
59
63
  model = model_symbol.to_s.camelize.constantize
60
64
  autocomplete_method_name = "autocomplete_#{model_symbol}_#{value_method}"
61
65
 
62
66
  define_method(autocomplete_method_name) do
63
- results = autocomplete_results(model, value_method, label_method, options)
67
+ results = autocomplete_results(model, value_method, label_method, options, &block)
64
68
  render json: autocomplete_build_json(results, value_method, label_method, options), root: false
65
69
  end
66
70
  end
@@ -68,13 +72,22 @@ module AutocompleteRails
68
72
 
69
73
  protected
70
74
 
71
- def autocomplete_results(model, value_method, label_method = nil, options)
75
+ def autocomplete_results(model, value_method, label_method = nil, options, &block)
72
76
  term = params[:term]
73
77
  return {} if term.blank?
74
78
 
75
79
  results = model.where(nil) # make an empty scope to add select, where, etc, to.
76
80
  scopes = Array(options[:scopes])
77
- scopes.each { |scope| results = results.send(scope) } unless scopes.empty?
81
+ unless scopes.empty?
82
+ scopes.each do |scope|
83
+ if scope.is_a?(Array)
84
+ results = results.send(scope.slice(0), *scope.drop(1))
85
+ else
86
+ results = results.send(scope)
87
+ end
88
+ end
89
+ end
90
+ results = instance_exec(results, &block) if block
78
91
  results = results.select(autocomplete_select_clause(model, value_method, label_method, options)) unless
79
92
  options[:full_model]
80
93
  results.
@@ -112,7 +125,7 @@ module AutocompleteRails
112
125
 
113
126
  # default to ASC order
114
127
  table_prefix = "#{model.table_name}."
115
- "LOWER(#{table_prefix}#{value_method}) ASC"
128
+ Arel.sql("LOWER(#{table_prefix}#{value_method}) ASC")
116
129
  end
117
130
 
118
131
  def autocomplete_build_json(results, value_method, label_method, options)
@@ -4,7 +4,7 @@ module AutocompleteRails
4
4
  class Engine < ::Rails::Engine
5
5
  config.generators do |g|
6
6
  g.test_framework :rspec
7
- g.fixture_replacement :factory_girl, dir: 'spec/factories'
7
+ g.fixture_replacement :factory_bot, dir: 'spec/factories'
8
8
  end
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module AutocompleteRails
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autocomplete_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Tomich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-23 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '4.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '5.2'
22
+ version: '5.3'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,21 @@ dependencies:
29
29
  version: '4.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '5.2'
32
+ version: '5.3'
33
33
  - !ruby/object:Gem::Dependency
34
- name: factory_girl
34
+ name: factory_bot
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '4.8'
39
+ version: 4.10.0
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '4.8'
46
+ version: 4.10.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec-rails
49
49
  requirement: !ruby/object:Gem::Requirement