scopie 0.4.3 → 0.5.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: 1e88a1e28002e7703b57a5af79c849b6be6025c0
4
- data.tar.gz: df07ff4f5041d6287c94f772b4e40acf49954987
3
+ metadata.gz: 07a442d7fcafdca554a27f70362aa4e4cbc7009a
4
+ data.tar.gz: 831d1f902262956da4adab6441436c116136ad6d
5
5
  SHA512:
6
- metadata.gz: 4c0b0ca8f6e5e55adc2e3515f8edd7d49df20ddd13340dc9cbf0c25c14f000c066a0980f63fc97ced2bb2fdbfb8e0e63494622b12d2426c06142687d99774126
7
- data.tar.gz: 9864f9cdb067aa60ceccfe151254fee9a6854db4235cfc5b02efbffbfa53c93e9ef67b784d3f9dfecaa300fbac60bc768e5382b8a097001858bf6a94250ab1f0
6
+ metadata.gz: 34e66bf2569a688a1f59cbf14124fc7dac843969d9b7ad27777b0a3bf92b5e1cafcff6c060bef7ce13b2fd7e5047f39dd70e45e7191745d9c77083404700b4be
7
+ data.tar.gz: 1c269de633a5197d4a014750272ba284346347075443102aa57629be5775ea0a09c337d7c922a331ea62c263af13fa30b3ef9b8d688db8a257823f08110076c1
data/README.md CHANGED
@@ -80,6 +80,8 @@ Scopie supports several options:
80
80
 
81
81
  * `:as` - The key in the params hash expected to find the scope. Defaults to the scope name.
82
82
 
83
+ * `:in` - The key in the params hash expected to contain a hash holding scope name as a value.
84
+
83
85
  * `:default` - Default value for the scope. Whenever supplied the scope is always called.
84
86
 
85
87
  ## Thanks
data/lib/scopie/base.rb CHANGED
@@ -57,7 +57,9 @@ class Scopie::Base
57
57
 
58
58
  def scope_value(scope_name, options, hash)
59
59
  key_name = key_name(scope_name, options)
60
- return coerce_value_type(hash[key_name], options[:type]) if hash.key?(key_name)
60
+ reduced_hash = reduced_hash(hash, options)
61
+
62
+ return coerce_value_type(reduced_hash[key_name], options[:type]) if reduced_hash.key?(key_name)
61
63
  options[:default]
62
64
  end
63
65
 
@@ -71,16 +73,27 @@ class Scopie::Base
71
73
  end
72
74
 
73
75
  def scope_applicable?(scope_name, options, hash, method)
76
+ return false unless method_applicable?(method, options)
77
+
78
+ key_name = key_name(scope_name, options)
79
+ reduced_hash(hash, options).key?(key_name) || options.key?(:default)
80
+ end
81
+
82
+ def reduced_hash(hash, options)
83
+ return hash unless options.key?(:in)
84
+ hash.fetch(options[:in], {})
85
+ end
86
+
87
+ def method_applicable?(method, options)
88
+ return true unless method
89
+
74
90
  methods_white_list = Array(options[:only])
75
91
  methods_black_list = Array(options[:except])
76
92
 
77
- if method
78
- return false if methods_black_list.include?(method)
79
- return false if methods_white_list.any? && !methods_white_list.include?(method)
80
- end
93
+ return false if methods_black_list.include?(method)
94
+ return false if methods_white_list.any? && !methods_white_list.include?(method)
81
95
 
82
- key_name = key_name(scope_name, options)
83
- hash.key?(key_name) || options.key?(:default)
96
+ true
84
97
  end
85
98
 
86
99
  def self.reset_scopes_configuration!
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Scopie
3
- VERSION = '0.4.3'
3
+ VERSION = '0.5.0'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scopie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yury Kotov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-23 00:00:00.000000000 Z
11
+ date: 2016-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec