active_pstore 0.5.1 → 0.5.2

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: 2e0846e7c7c7a6853ef77ea26f6ae2aa498d63b7
4
- data.tar.gz: f12f60b9965364eca7eb3787d511a9f380fcfc75
3
+ metadata.gz: 2b31a128f4714a2baa5e88e43c445f2c7743cd1e
4
+ data.tar.gz: d1ae729a41b8cc014d7b3a1a2c4141f72dda6622
5
5
  SHA512:
6
- metadata.gz: 36c9f10ad414bc43ca0949fac8fbafea9ac20eb6189eaa1a7d3f412fb67abbedd28cc1f1ffe21cb58a8316c9e2060afd351592183d8d6257422eebdc19c53908
7
- data.tar.gz: faf2198901dffda085992ca707df9c00c4f78377b6941a6929ac6d36f1ca7a9c777f567043f0ef8a7057517a9c549ad9d76992d306564c6b1e41ada4dab522b1
6
+ metadata.gz: 29dbecffbc7d6c10dee23113e43fc31391c1fb73382bcdb9ef4d6b5377eee32532d2fe3774d2a8b324a075b1c077dcb2e698a2336a874c4b58e55d1983616fda
7
+ data.tar.gz: 166d03edf976f0feb8bd9fd24a8698ecc8e219acf46bbc5745d37a88d0311efbd6fe940d548bc5bbab357492f86163884a36f8ce09c347345ad759f3791403ee
@@ -2,7 +2,7 @@ module ActivePStore
2
2
  module AttributeMethods
3
3
  def [](attr)
4
4
  if respond_to? attr.to_sym
5
- self.__send__(attr.to_sym)
5
+ self.public_send(attr.to_sym)
6
6
  else
7
7
  raise "undefined method `#{attr}'"
8
8
  end
@@ -10,7 +10,7 @@ module ActivePStore
10
10
 
11
11
  def []=(attr, value)
12
12
  if respond_to? "#{attr}=".to_sym
13
- self.__send__("#{attr}=".to_sym, value)
13
+ self.public_send("#{attr}=".to_sym, value)
14
14
  else
15
15
  raise "undefined method `#{attr}='"
16
16
  end
@@ -20,7 +20,7 @@ module ActivePStore
20
20
  if attributes.present?
21
21
  attributes.each do |attr, val|
22
22
  if respond_to? "#{attr}=".to_sym
23
- self.__send__("#{attr}=", val)
23
+ self.public_send("#{attr}=", val)
24
24
  else
25
25
  raise "undefined method `#{attr}='"
26
26
  end
@@ -33,7 +33,7 @@ module ActivePStore
33
33
  end
34
34
 
35
35
  def method_missing(method_name, *args, &block)
36
- @objects.__send__(method_name, *args, &block)
36
+ @objects.public_send(method_name, *args, &block)
37
37
  end
38
38
 
39
39
  def ==(comparison_object)
@@ -21,7 +21,7 @@ module ActivePStore
21
21
 
22
22
  if match
23
23
  match.define
24
- send(name, *arguments, &block)
24
+ public_send(name, *arguments, &block)
25
25
  else
26
26
  super
27
27
  end
@@ -39,14 +39,14 @@ module ActivePStore
39
39
  end
40
40
 
41
41
  def update_attribute(attr_name, attr_value)
42
- self.__send__("#{attr_name}=", attr_value)
42
+ self.public_send("#{attr_name}=", attr_value)
43
43
 
44
44
  save
45
45
  end
46
46
 
47
47
  def update(attrs)
48
48
  attrs.each do |attr_name, attr_value|
49
- self.__send__("#{attr_name}=", attr_value)
49
+ self.public_send("#{attr_name}=", attr_value)
50
50
  end
51
51
 
52
52
  save
@@ -1,22 +1,48 @@
1
1
  module ActivePStore
2
2
  module QueryMethods
3
- def where(conditions = {})
4
- ret = all
3
+ class WhereChain
4
+ def initialize(scope)
5
+ @scope = scope
6
+ end
7
+
8
+ def not(conditions)
9
+ WhereDecider.new(@scope).decide(conditions, :reject)
10
+ end
11
+ end
12
+
13
+ class WhereDecider
14
+ def initialize(scope)
15
+ @scope = scope
16
+ end
5
17
 
6
- return ret if conditions.empty?
7
-
8
- conditions.each do |key, value|
9
- ret = ret.select {|obj|
10
- case value
11
- when Array, Range
12
- value.include?(obj.__send__(key))
13
- else
14
- obj.__send__(key) == value
15
- end
16
- }
18
+ def decide(conditions, method)
19
+ raise 'Illegal method error.' unless %i(reject select).include? method
20
+
21
+ return @scope if conditions.empty?
22
+
23
+ conditions.each do |key, value|
24
+ @scope = @scope.public_send(method) {|obj|
25
+ case value
26
+ when Array, Range
27
+ value.include?(obj.public_send(key))
28
+ else
29
+ obj.public_send(key) == value
30
+ end
31
+ }
32
+ end
33
+
34
+ ActivePStore::Collection.new(@scope)
17
35
  end
36
+ end
18
37
 
19
- ActivePStore::Collection.new(ret)
38
+ def where(conditions = :chain)
39
+ ret = all
40
+
41
+ if conditions == :chain
42
+ WhereChain.new(ret)
43
+ else
44
+ WhereDecider.new(ret).decide(conditions, :select)
45
+ end
20
46
  end
21
47
  end
22
48
  end
@@ -1,3 +1,3 @@
1
1
  module ActivePStore
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_pstore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Koichi ITO
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-04 00:00:00.000000000 Z
11
+ date: 2016-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -133,8 +133,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.5.0
136
+ rubygems_version: 2.6.4
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: This library has Active Record like interface. Use pstore to store data.
140
140
  test_files: []
141
+ has_rdoc: