active_pstore 0.5.1 → 0.5.2

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: 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: