scope_composer 0.3.2 → 0.3.3

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjhkNmJhMTM5OGNlMTBlZmNhNTcwNWI0ZWZkODEyZmM3YzUzOWE5Nw==
4
+ MzU4YTJkM2I2ZGQzNTkxMjg4N2FmYWJiYmFiM2Q1OGRkNGNjNDJhYg==
5
5
  data.tar.gz: !binary |-
6
- ZjlkODgxODVjYmQwNzAxNDg1YmFjNDFiMjI0ZGQzZmIzOGY3MDc1NQ==
6
+ YWJhNDJlZDdmNzI2NjhkNGU2ZjFlZGFlNGQ1NmVjNzFjOGUxNTZjOA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NmQwYjJlZTlhODdkMjJlYzc1ZjAxNmI0NmYyNTBmOWQ3NzJhYWEyYzZlZTdi
10
- Nzk2NTY3NjM3YzI2MThhNDE4ZGY4NzViNTg5MTcxNDE1M2M0ODA0ODFkYmI1
11
- ZDM1MzdjZmJiOGFhMmE2OGJhZTg1MDU2NzQ1MzhjODQ5NjhlNzI=
9
+ YTA0MWU3ZTA3MTE3OGJkZGVhZjU0MWFhZTMzZjA3MjU2MTEwM2ZkMGRmNWI5
10
+ MWRiYzBkMTkzMzdhYjgwZTU1YTBiMjBkYzNkZDQwMThlYjVjMmRjNmQyN2Qx
11
+ MWM3MDI3NWQ4NWU3NDgwOGFkYzUyMjg3ZDYyNmQyMGUyYjIwMGI=
12
12
  data.tar.gz: !binary |-
13
- NjEwZDA5ZWJlYzdhNzI2ZjMzMGMwMzhiOWNjYTBkMjJmNGUyZTk4YWE4OTkz
14
- NzUyNjA5Yjg2OTAzYTQ1MTEwYTVjMmIyOTAyZDA1MjU0ZmFlOTlkNjVmNjUw
15
- MTcyOTc3NGI2MzE2MGIzMTM5OTlhMGFkMzMxY2U3ZGViMzkzMzI=
13
+ NTAxNWE1ZjAwMDc4NWE5MzcxNzcxMGY1ZTk4NTcyMTk2ZWVmZGMwZWUyNTJm
14
+ MTBlMGM1MTdkOGM2OTc2MWRmNzg0MjkwYTU4OTQxNDgzNjAyMjgzMTBiMzE0
15
+ YWY2MTc4OThlNThkYmYyZDBmZTM0NDc3MTRhY2IwOTE1ZTIwYjE=
@@ -92,14 +92,14 @@ class Scope
92
92
  # define method
93
93
  define_method(name) do |*args|
94
94
  # if no value is given, act as a getter and retrieve the value
95
- return scope_attributes[name] if args.first.nil?
95
+ return read_scope_attribute(key) if args.compact.blank?
96
96
  # otherwise set the value
97
97
  instance_exec(*args, &proc)
98
98
  # and return self for chaining
99
99
  self
100
100
  end
101
- define_method("#{name}=") do |value|
102
- self.send( name, value )
101
+ define_method("#{name}=") do |*args|
102
+ self.send( name, *args )
103
103
  end
104
104
  # add to scope list
105
105
  scopes[name] = proc
@@ -115,19 +115,15 @@ class Scope
115
115
  name = name.to_sym
116
116
  # define method
117
117
  define_method(name) do |*args|
118
- # init
119
- values = nil
120
- values = args.first if args.count == 1
121
- values = args if args.count > 1
122
- # if no value is given, act as a getter
123
- return scope_attributes[name] if values.nil?
124
- # otherwise set the value
125
- scope_attributes[name] = values
118
+ # without args return the value
119
+ return read_scope_attribute(name) if args.compact.blank?
120
+ # given args, set value
121
+ self.send("#{name}=", args)
126
122
  # and return self for chaining
127
123
  return self
128
124
  end
129
125
  define_method("#{name}=") do |*args|
130
- self.send( name, *args )
126
+ write_scope_attribute(name, *args)
131
127
  end
132
128
  # add to scoping list
133
129
  scopes[name] = nil
@@ -137,6 +133,14 @@ class Scope
137
133
 
138
134
  delegate :to_param, to: :attributes
139
135
 
136
+ def read_scope_attribute(key)
137
+ scope_attributes[key]
138
+ end
139
+
140
+ def write_scope_attribute(key, values)
141
+ scope_attributes[key] = (values.count == 1) ? values.first : values
142
+ end
143
+
140
144
  def assign_attributes(*attrs)
141
145
  attrs = attrs.extract_options!
142
146
  attrs.each do |key, value|
@@ -144,17 +148,13 @@ class Scope
144
148
  end
145
149
  end
146
150
 
147
- def attributes
148
- self.class.scopes.keys.inject({}){|m,k| m.merge( k => attributes[k] ) }
149
- end
150
-
151
151
  def where(*args)
152
152
  attrs = args.extract_options!
153
153
  attrs.symbolize_keys!
154
154
  self.attributes = attrs
155
155
  self
156
156
  end
157
-
157
+
158
158
  def attributes
159
159
  @attributes ||= {}
160
160
  end
@@ -1,3 +1,3 @@
1
1
  module ScopeComposer
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scope_composer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Hilscher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-29 00:00:00.000000000 Z
11
+ date: 2013-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement