autocomplete_rails 0.3.1 → 0.4.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.
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