attribute-filters 1.2.2 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +36 -0
- data/README.md +1 -1
- data/attribute-filters.gemspec +2 -2
- data/docs/HISTORY +16 -0
- data/docs/TODO +1 -5
- data/docs/USAGE.md +55 -4
- data/lib/attribute-filters/attribute_set_query.rb +21 -1
- data/lib/attribute-filters/dsl_sets.rb +6 -0
- data/lib/attribute-filters/version.rb +1 -1
- data.tar.gz.sig +1 -3
- metadata +29 -29
- metadata.gz.sig +0 -0
data/ChangeLog
CHANGED
@@ -1,3 +1,39 @@
|
|
1
|
+
commit fd6696a66397299042f11ba1feb4e82aeb1f2919
|
2
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
3
|
+
Date: Sun Aug 5 00:36:11 2012 +0200
|
4
|
+
|
5
|
+
Quick fix
|
6
|
+
|
7
|
+
commit 18c5ed453fa59d4d39d5bdc0a2ff2f84fe3eb3b1
|
8
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
9
|
+
Date: Sat Aug 4 22:57:56 2012 +0200
|
10
|
+
|
11
|
+
Version 1.3.0
|
12
|
+
|
13
|
+
commit 8c210e016f29ed4fcd497e7ec18564d9ffa15a01
|
14
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
15
|
+
Date: Sat Aug 4 22:52:58 2012 +0200
|
16
|
+
|
17
|
+
ChangeLog updated
|
18
|
+
|
19
|
+
commit 8eb6ee2dd7f7006e2ac19891ce1e2274e099550d
|
20
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
21
|
+
Date: Sat Aug 4 22:51:25 2012 +0200
|
22
|
+
|
23
|
+
Added all_attributes instance method
|
24
|
+
|
25
|
+
commit d9ef8604c1cec45360af0e8684ac158948dd499c
|
26
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
27
|
+
Date: Sat Aug 4 22:51:00 2012 +0200
|
28
|
+
|
29
|
+
Minor fixes in USAGE
|
30
|
+
|
31
|
+
commit 7504cc3c5578dfa9cc4f2d9b9044f1e17cfd7a71
|
32
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
33
|
+
Date: Sat Aug 4 22:50:35 2012 +0200
|
34
|
+
|
35
|
+
Added valid? and invalid? DSL instance methods
|
36
|
+
|
1
37
|
commit c1220554066705edceb097b7c26c665d26785271
|
2
38
|
Author: Paweł Wilk <siefca@gnu.org>
|
3
39
|
Date: Fri Aug 3 00:51:17 2012 +0200
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Attribute Filters for Rails
|
2
2
|
===========================
|
3
3
|
|
4
|
-
**attribute-filters version `1.
|
4
|
+
**attribute-filters version `1.3`** (**`Reliable Sausage`**)
|
5
5
|
|
6
6
|
* https://rubygems.org/gems/attribute-filters
|
7
7
|
* https://github.com/siefca/attribute-filters/tree
|
data/attribute-filters.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "attribute-filters"
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.3.0.20120804225210"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Pawe\u{142} Wilk"]
|
9
9
|
s.cert_chain = ["/Users/siefca/.gem/gem-public_cert.pem"]
|
10
|
-
s.date = "2012-08-
|
10
|
+
s.date = "2012-08-04"
|
11
11
|
s.description = "Concise way of filtering model attributes in Rails."
|
12
12
|
s.email = ["pw@gnu.org"]
|
13
13
|
s.extra_rdoc_files = ["Manifest.txt"]
|
data/docs/HISTORY
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
=== 1.3.0 / 2012-08-04
|
2
|
+
|
3
|
+
* major bugfixes
|
4
|
+
|
5
|
+
* In AttributeSet::Query proxy class: proxy now uses send() to get attribute values
|
6
|
+
|
7
|
+
* major enhancements
|
8
|
+
|
9
|
+
* Added valid? and invalid? DSL instance methods
|
10
|
+
* Added all_attributes instance method
|
11
|
+
|
12
|
+
* minor enhancements
|
13
|
+
|
14
|
+
* Added is_a?() overrides in proxy classes
|
15
|
+
* Method attributes_to_filter now also takes attribute set as an argument
|
16
|
+
|
1
17
|
=== 1.2.2 / 2012-08-03
|
2
18
|
|
3
19
|
* major enhancements
|
data/docs/TODO
CHANGED
data/docs/USAGE.md
CHANGED
@@ -258,6 +258,18 @@ Instead of `attribute_sets` you may also use one of the aliases:
|
|
258
258
|
|
259
259
|
* `attributes_sets`, `properties_sets`
|
260
260
|
|
261
|
+
#### `all_attributes` ####
|
262
|
+
|
263
|
+
The [`all_attributes`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:all_attributes)
|
264
|
+
method **returns the attribute set containing all known attributes**.
|
265
|
+
|
266
|
+
Example:
|
267
|
+
|
268
|
+
```ruby
|
269
|
+
User.first.all_attributes
|
270
|
+
# => #<ActiveModel::AttributeSet: {"id", "username", "email", "password", "language", "created_at", "updated_at"}>
|
271
|
+
```
|
272
|
+
|
261
273
|
#### `filtered_attribute(attribute_name)` ####
|
262
274
|
|
263
275
|
The [`filtered_attribute`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:filtered_attribute)
|
@@ -298,7 +310,28 @@ If you'll try to get the value of an element that doesn't exist **the empty set
|
|
298
310
|
Instead of `attributes_to_sets` you may also use one of the aliases:
|
299
311
|
|
300
312
|
* `attribute_sets_map`
|
301
|
-
|
313
|
+
|
314
|
+
#### `valid?` and `invalid?` ####
|
315
|
+
|
316
|
+
Validation helpers are used to test if the attributes present in a set
|
317
|
+
are valid. When `valid?` is called then **all** attributes from a set
|
318
|
+
must be valid for the method to return `true`. When `invalid?` is called
|
319
|
+
then **any** invalid attribute will cause the expression to return `true`.
|
320
|
+
|
321
|
+
Be aware that calling one of these methods will run validation process
|
322
|
+
on an instance of a model. Besides, your ORM should have the `errors`
|
323
|
+
hash available in order to use it (Active Record has it).
|
324
|
+
|
325
|
+
Example:
|
326
|
+
|
327
|
+
```ruby
|
328
|
+
u = User.first
|
329
|
+
u.attributes_that(:should_be_stripped).valid?
|
330
|
+
# => true
|
331
|
+
u.attributes_that(:should_be_stripped).invalid?
|
332
|
+
# => false
|
333
|
+
```
|
334
|
+
|
302
335
|
### Syntactic sugar for queries ###
|
303
336
|
|
304
337
|
Querying attribute sets may be even more sweet when you add some syntactic sugar
|
@@ -443,6 +476,26 @@ is equivalent to:
|
|
443
476
|
# => #<ActiveModel::AttributeSet: {"username", "email"}>
|
444
477
|
```
|
445
478
|
|
479
|
+
##### Validation helpers #####
|
480
|
+
|
481
|
+
* **`valid?`**
|
482
|
+
* **`invalid?`**
|
483
|
+
|
484
|
+
Syntactic sugar for validation helpers is used when calls to these methods
|
485
|
+
are combined with selectors described above (presence selectors and elements selectors).
|
486
|
+
|
487
|
+
Examples:
|
488
|
+
|
489
|
+
```ruby
|
490
|
+
u = User.first
|
491
|
+
|
492
|
+
u.attributes_that(:should_be_stripped).all.valid?
|
493
|
+
# => true
|
494
|
+
|
495
|
+
u.attributes_that(:should_be_stripped).list.valid?
|
496
|
+
# => #<ActiveModel::AttributeSet: {"username", "email"}>
|
497
|
+
```
|
498
|
+
|
446
499
|
#### Querying attributes for set names ####
|
447
500
|
|
448
501
|
Querying attributes to know sets they belong to uses one
|
@@ -486,7 +539,7 @@ Example:
|
|
486
539
|
|
487
540
|
##### Set membership testing #####
|
488
541
|
|
489
|
-
*
|
542
|
+
* **`belongs_to?`**
|
490
543
|
* **`in?`**
|
491
544
|
* **`in_set?`**
|
492
545
|
* **`in_a_set?`**
|
@@ -578,7 +631,6 @@ class User < ActiveRecord::Base
|
|
578
631
|
def strip_names
|
579
632
|
for_attributes_that(:should_be_stripped) { |atr| atr.strip! }
|
580
633
|
end
|
581
|
-
|
582
634
|
end
|
583
635
|
```
|
584
636
|
|
@@ -830,7 +882,6 @@ class User < ActiveRecord::Base
|
|
830
882
|
def attributes_missing_to_trade
|
831
883
|
attributes_that_are(:required_to_trade).list.blank?
|
832
884
|
end
|
833
|
-
|
834
885
|
end
|
835
886
|
```
|
836
887
|
|
@@ -56,6 +56,7 @@ module ActiveModel
|
|
56
56
|
when :are, :is, :be, :should
|
57
57
|
return self
|
58
58
|
end
|
59
|
+
# Special selectors
|
59
60
|
if @next_method.nil?
|
60
61
|
case method_sym.to_sym
|
61
62
|
when :all, :any, :none, :one
|
@@ -64,6 +65,10 @@ module ActiveModel
|
|
64
65
|
when :list, :show
|
65
66
|
::ActiveModel::AttributeSet::Query.new(@set_object, @am_object).
|
66
67
|
next_step(:select, args, block)
|
68
|
+
when :valid?, :is_valid?, :are_valid?, :all_valid?, :are_all_valid?
|
69
|
+
self.all.valid?
|
70
|
+
when :invalid?, :is_not_valid?, :any_invalid?, :are_not_valid?, :not_valid?, :is_any_invalid?
|
71
|
+
self.any.invalid?
|
67
72
|
else
|
68
73
|
r = @set_object.method(method_sym).call(*args, &block)
|
69
74
|
return r if r.respond_to?(:__in_as_proxy) || !r.is_a?(::ActiveModel::AttributeSet)
|
@@ -72,7 +77,18 @@ module ActiveModel
|
|
72
77
|
else
|
73
78
|
m, args, block = @next_method
|
74
79
|
@next_method = nil
|
75
|
-
|
80
|
+
# m contains a method that we should call on a set of names (e.g. all? or any?)
|
81
|
+
# method_sym contains a method to be called on each attribute from a set (e.g. present?)
|
82
|
+
r = case method_sym
|
83
|
+
when :valid?
|
84
|
+
@am_object.valid?
|
85
|
+
@set_object.method(m).call(*args) { |atr| not @am_object.errors.has_key?(atr.to_sym) }
|
86
|
+
when :invalid?
|
87
|
+
@am_object.valid?
|
88
|
+
@set_object.method(m).call(*args) { |atr| @am_object.errors.has_key?(atr.to_sym) }
|
89
|
+
else
|
90
|
+
@set_object.method(m).call { |atr| @am_object.send(atr).method(method_sym).call(*args, &block) }
|
91
|
+
end
|
76
92
|
return r if r.respond_to?(:__in_as_proxy) || !r.is_a?(::ActiveModel::AttributeSet)
|
77
93
|
::ActiveModel::AttributeSet::Query.new(r, @am_object)
|
78
94
|
end
|
@@ -83,6 +99,10 @@ module ActiveModel
|
|
83
99
|
case name.to_sym
|
84
100
|
when :are, :is, :be, :should, :all, :any, :none, :one, :list, :show, :__in_as_proxy
|
85
101
|
true
|
102
|
+
when :invalid?, :is_not_valid?, :any_invalid?, :are_not_valid?, :not_valid?, :is_any_invalid?
|
103
|
+
true
|
104
|
+
when :valid?, :is_valid?, :are_valid?, :all_valid?, :are_all_valid?
|
105
|
+
true
|
86
106
|
else
|
87
107
|
@set_object.respond_to?(name)
|
88
108
|
end
|
@@ -43,6 +43,12 @@ module ActiveModel
|
|
43
43
|
alias_method :attributes_set, :attribute_set
|
44
44
|
alias_method :properties_that, :attribute_set
|
45
45
|
|
46
|
+
# Returns a set containing all attributes.
|
47
|
+
# @return [AttributeSet] attribute set
|
48
|
+
def all_attributes
|
49
|
+
ActiveModel::AttributeSet::Query.new(AttributeSet.new(attributes.keys), self)
|
50
|
+
end
|
51
|
+
|
46
52
|
# Gets all the defined attribute sets.
|
47
53
|
# @note Use +key+ method explicitly to check if the given set exists. The hash returned by this method
|
48
54
|
# will always return {AttributeSet} object. If there is no such set defined then the returned,
|
data.tar.gz.sig
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
2
|
-
��g2$�If��"?�� ��|��T�%!�5�ͣk�7��5��������j�L�7�6
|
3
|
-
�@|�7|l{�x��s�돊��*m
|
1
|
+
���A�������(��c##nbӝ5��]̜��a�%B�����.<]���f��㨞+�#=�Jݔ���FE0����Sq͒TU��FN�y{t2代��Cw��;/�cj��Q�%�T�rcδ7'�V�U�%����3D��`��ڍDeR�wDr�TW��{'x�{��q�<Av�Hc8���4 @AY��k5���S�l�9��N�Lܭ���R2����_8Wl���ץ�~]<��'F|{f��Z����#R-��-Cg�s����
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attribute-filters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -48,11 +48,11 @@ cert_chain:
|
|
48
48
|
-----END CERTIFICATE-----
|
49
49
|
|
50
50
|
'
|
51
|
-
date: 2012-08-
|
51
|
+
date: 2012-08-04 00:00:00.000000000 Z
|
52
52
|
dependencies:
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: railties
|
55
|
-
requirement: &
|
55
|
+
requirement: &2163264920 !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
57
57
|
requirements:
|
58
58
|
- - ~>
|
@@ -60,10 +60,10 @@ dependencies:
|
|
60
60
|
version: '3.0'
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
|
-
version_requirements: *
|
63
|
+
version_requirements: *2163264920
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: activemodel
|
66
|
-
requirement: &
|
66
|
+
requirement: &2163264460 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
68
68
|
requirements:
|
69
69
|
- - ~>
|
@@ -71,10 +71,10 @@ dependencies:
|
|
71
71
|
version: '3.0'
|
72
72
|
type: :runtime
|
73
73
|
prerelease: false
|
74
|
-
version_requirements: *
|
74
|
+
version_requirements: *2163264460
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: hoe-yard
|
77
|
-
requirement: &
|
77
|
+
requirement: &2163264020 !ruby/object:Gem::Requirement
|
78
78
|
none: false
|
79
79
|
requirements:
|
80
80
|
- - ! '>='
|
@@ -82,10 +82,10 @@ dependencies:
|
|
82
82
|
version: 0.1.2
|
83
83
|
type: :development
|
84
84
|
prerelease: false
|
85
|
-
version_requirements: *
|
85
|
+
version_requirements: *2163264020
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: rspec
|
88
|
-
requirement: &
|
88
|
+
requirement: &2163263540 !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
91
|
- - ! '>='
|
@@ -93,10 +93,10 @@ dependencies:
|
|
93
93
|
version: 2.6.0
|
94
94
|
type: :development
|
95
95
|
prerelease: false
|
96
|
-
version_requirements: *
|
96
|
+
version_requirements: *2163263540
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: yard
|
99
|
-
requirement: &
|
99
|
+
requirement: &2163263060 !ruby/object:Gem::Requirement
|
100
100
|
none: false
|
101
101
|
requirements:
|
102
102
|
- - ! '>='
|
@@ -104,10 +104,10 @@ dependencies:
|
|
104
104
|
version: 0.8.2
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
|
-
version_requirements: *
|
107
|
+
version_requirements: *2163263060
|
108
108
|
- !ruby/object:Gem::Dependency
|
109
109
|
name: rdoc
|
110
|
-
requirement: &
|
110
|
+
requirement: &2163262620 !ruby/object:Gem::Requirement
|
111
111
|
none: false
|
112
112
|
requirements:
|
113
113
|
- - ! '>='
|
@@ -115,10 +115,10 @@ dependencies:
|
|
115
115
|
version: 3.8.0
|
116
116
|
type: :development
|
117
117
|
prerelease: false
|
118
|
-
version_requirements: *
|
118
|
+
version_requirements: *2163262620
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: redcarpet
|
121
|
-
requirement: &
|
121
|
+
requirement: &2163262180 !ruby/object:Gem::Requirement
|
122
122
|
none: false
|
123
123
|
requirements:
|
124
124
|
- - ! '>='
|
@@ -126,10 +126,10 @@ dependencies:
|
|
126
126
|
version: 2.1.0
|
127
127
|
type: :development
|
128
128
|
prerelease: false
|
129
|
-
version_requirements: *
|
129
|
+
version_requirements: *2163262180
|
130
130
|
- !ruby/object:Gem::Dependency
|
131
131
|
name: supermodel
|
132
|
-
requirement: &
|
132
|
+
requirement: &2163261740 !ruby/object:Gem::Requirement
|
133
133
|
none: false
|
134
134
|
requirements:
|
135
135
|
- - ! '>='
|
@@ -137,10 +137,10 @@ dependencies:
|
|
137
137
|
version: 0.1.6
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
|
-
version_requirements: *
|
140
|
+
version_requirements: *2163261740
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: activerecord
|
143
|
-
requirement: &
|
143
|
+
requirement: &2163261300 !ruby/object:Gem::Requirement
|
144
144
|
none: false
|
145
145
|
requirements:
|
146
146
|
- - ! '>='
|
@@ -148,10 +148,10 @@ dependencies:
|
|
148
148
|
version: '3.0'
|
149
149
|
type: :development
|
150
150
|
prerelease: false
|
151
|
-
version_requirements: *
|
151
|
+
version_requirements: *2163261300
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: bundler
|
154
|
-
requirement: &
|
154
|
+
requirement: &2163277220 !ruby/object:Gem::Requirement
|
155
155
|
none: false
|
156
156
|
requirements:
|
157
157
|
- - ! '>='
|
@@ -159,10 +159,10 @@ dependencies:
|
|
159
159
|
version: 1.0.10
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
|
-
version_requirements: *
|
162
|
+
version_requirements: *2163277220
|
163
163
|
- !ruby/object:Gem::Dependency
|
164
164
|
name: hoe-bundler
|
165
|
-
requirement: &
|
165
|
+
requirement: &2163276780 !ruby/object:Gem::Requirement
|
166
166
|
none: false
|
167
167
|
requirements:
|
168
168
|
- - ! '>='
|
@@ -170,10 +170,10 @@ dependencies:
|
|
170
170
|
version: 1.1.0
|
171
171
|
type: :development
|
172
172
|
prerelease: false
|
173
|
-
version_requirements: *
|
173
|
+
version_requirements: *2163276780
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
175
|
name: hoe-gemspec
|
176
|
-
requirement: &
|
176
|
+
requirement: &2163276340 !ruby/object:Gem::Requirement
|
177
177
|
none: false
|
178
178
|
requirements:
|
179
179
|
- - ! '>='
|
@@ -181,10 +181,10 @@ dependencies:
|
|
181
181
|
version: 1.0.0
|
182
182
|
type: :development
|
183
183
|
prerelease: false
|
184
|
-
version_requirements: *
|
184
|
+
version_requirements: *2163276340
|
185
185
|
- !ruby/object:Gem::Dependency
|
186
186
|
name: hoe
|
187
|
-
requirement: &
|
187
|
+
requirement: &2163275900 !ruby/object:Gem::Requirement
|
188
188
|
none: false
|
189
189
|
requirements:
|
190
190
|
- - ~>
|
@@ -192,7 +192,7 @@ dependencies:
|
|
192
192
|
version: '2.16'
|
193
193
|
type: :development
|
194
194
|
prerelease: false
|
195
|
-
version_requirements: *
|
195
|
+
version_requirements: *2163275900
|
196
196
|
description: Concise way of filtering model attributes in Rails.
|
197
197
|
email:
|
198
198
|
- pw@gnu.org
|
@@ -252,7 +252,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
252
|
version: '0'
|
253
253
|
segments:
|
254
254
|
- 0
|
255
|
-
hash:
|
255
|
+
hash: 1784207712795011672
|
256
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
257
|
none: false
|
258
258
|
requirements:
|
metadata.gz.sig
CHANGED
Binary file
|