attribute-filters 1.3.0 → 1.3.1
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.
- data.tar.gz.sig +0 -0
- data/ChangeLog +30 -0
- data/README.md +11 -2
- data/attribute-filters.gemspec +2 -2
- data/docs/HISTORY +11 -0
- data/docs/TODO +4 -2
- data/docs/USAGE.md +119 -11
- data/lib/attribute-filters/attribute_set_attrquery.rb +26 -1
- data/lib/attribute-filters/common_filters.rb +16 -0
- data/lib/attribute-filters/dsl_sets.rb +33 -4
- data/lib/attribute-filters/version.rb +1 -1
- metadata +29 -29
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,3 +1,33 @@
|
|
1
|
+
commit bd3f936868d7afcf22501c781e093f73b6dc8e9b
|
2
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
3
|
+
Date: Sun Aug 5 14:31:12 2012 +0200
|
4
|
+
|
5
|
+
Release 1.3.1
|
6
|
+
|
7
|
+
commit 8ba61780246a7677249ba875df0b6edd38cda5e8
|
8
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
9
|
+
Date: Sun Aug 5 14:26:29 2012 +0200
|
10
|
+
|
11
|
+
Added is_accessible?, is_inaccessible? and is_protected? queries to AttrQuery proxy class
|
12
|
+
|
13
|
+
commit 3cbdc984df09e7d3bdbca4d45713a686adac83a2
|
14
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
15
|
+
Date: Sun Aug 5 11:44:45 2012 +0200
|
16
|
+
|
17
|
+
Documentation updated
|
18
|
+
|
19
|
+
commit bddd9b06992b23355007f67431e4990bd4fbec49
|
20
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
21
|
+
Date: Sun Aug 5 01:53:05 2012 +0200
|
22
|
+
|
23
|
+
Added all_attributes, all_accessible_attributes, all_protected_attributes, all_inaccessible_attributes
|
24
|
+
|
25
|
+
commit c385eef1f671dbe27831a713f3a255d9f92154c8
|
26
|
+
Author: Paweł Wilk <siefca@gnu.org>
|
27
|
+
Date: Sun Aug 5 01:51:44 2012 +0200
|
28
|
+
|
29
|
+
Added squish common filter
|
30
|
+
|
1
31
|
commit fd6696a66397299042f11ba1feb4e82aeb1f2919
|
2
32
|
Author: Paweł Wilk <siefca@gnu.org>
|
3
33
|
Date: Sun Aug 5 00:36:11 2012 +0200
|
data/README.md
CHANGED
@@ -136,14 +136,14 @@ some base class that all your models inherit form or (better) into your own
|
|
136
136
|
handy module that is included in all your models. Alternatively you can
|
137
137
|
use predefined filters from `ActiveModel::AttributeFilters::Common` module.
|
138
138
|
|
139
|
-
|
139
|
+
Usage and more examples
|
140
140
|
-----------------------
|
141
141
|
|
142
142
|
You can use it to filter attributes (as presented above) but you can also
|
143
143
|
use it to express some logic
|
144
144
|
[on your own](http://rubydoc.info/gems/attribute-filters/file/docs/USAGE.md#Custom_applications).
|
145
145
|
|
146
|
-
* See [USAGE](http://rubydoc.info/gems/attribute-filters/file/docs/USAGE.md) for examples and detailed information about the usage
|
146
|
+
* **See [USAGE](http://rubydoc.info/gems/attribute-filters/file/docs/USAGE.md) for examples and detailed information about the usage.**
|
147
147
|
* See [whole documentation](http://rubydoc.info/gems/attribute-filters/) to browse all documents.
|
148
148
|
|
149
149
|
### Sneak peeks ###
|
@@ -160,6 +160,15 @@ use it to express some logic
|
|
160
160
|
|
161
161
|
@user.the_attribute(:username).list.sets
|
162
162
|
# => #<ActiveModel::AttributeSet: {:should_be_downcased, :should_be_stripped}>
|
163
|
+
|
164
|
+
@user.the_attribute(:username).is.accessible?
|
165
|
+
# => true
|
166
|
+
|
167
|
+
@user.is_the_attribute(:username).protected?
|
168
|
+
# => false
|
169
|
+
|
170
|
+
@user.all_attributes.list.valid?
|
171
|
+
# => #<ActiveModel::AttributeSet: {"username", "email"}>
|
163
172
|
```
|
164
173
|
|
165
174
|
How it works?
|
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.3.
|
5
|
+
s.version = "1.3.1.20120805142734"
|
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-05"
|
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,14 @@
|
|
1
|
+
=== 1.3.1 / 2012-08-05
|
2
|
+
|
3
|
+
* major enhancements
|
4
|
+
|
5
|
+
* Added accessible?, inaccessible?, protected? attribute checks
|
6
|
+
* Added all_accessible_attributes, all_protected_attributes, all_inaccessible_attributes
|
7
|
+
|
8
|
+
* minor enhancements
|
9
|
+
|
10
|
+
* Added squish common filter
|
11
|
+
|
1
12
|
=== 1.3.0 / 2012-08-04
|
2
13
|
|
3
14
|
* major bugfixes
|
data/docs/TODO
CHANGED
data/docs/USAGE.md
CHANGED
@@ -207,12 +207,25 @@ is a wrapper that calls `attributes_to_sets` which returns
|
|
207
207
|
a hash containing **all filtered attributes and arrays of sets**
|
208
208
|
that the attributes belong to.
|
209
209
|
|
210
|
-
|
211
210
|
### Querying sets in objects ###
|
212
211
|
|
213
212
|
It is possible to access attribute sets from within the ActiveModel (or ORM, like ActiveRecord) objects.
|
214
213
|
To do that you may use instance methods that are designed for that purpose.
|
215
214
|
|
215
|
+
#### `attribute_set` ####
|
216
|
+
|
217
|
+
The [`attribute_set`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:attribute_set)
|
218
|
+
method called withount an argument **returns the attribute set containing all attributes for a current object**.
|
219
|
+
|
220
|
+
Example:
|
221
|
+
|
222
|
+
```ruby
|
223
|
+
User.first.attribute_set
|
224
|
+
# => #<ActiveModel::AttributeSet: {"id", "username", "email", "password", "language", "created_at", "updated_at"}>
|
225
|
+
```
|
226
|
+
|
227
|
+
It works the same as the `all_attributes` method.
|
228
|
+
|
216
229
|
#### `attribute_set(set_name)` ####
|
217
230
|
|
218
231
|
The [`attribute_set`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:attribute_set)
|
@@ -267,9 +280,73 @@ Example:
|
|
267
280
|
|
268
281
|
```ruby
|
269
282
|
User.first.all_attributes
|
270
|
-
# => #<ActiveModel::AttributeSet: {"id", "username", "email", "password", "language", "created_at", "updated_at"}>
|
283
|
+
# => #<ActiveModel::AttributeSet: {"id", "username", "email", "password", "language", "created_at", "updated_at"}>
|
284
|
+
```
|
285
|
+
|
286
|
+
Be aware that this method requires that the used ORM has `attributes` data structure available for any model object.
|
287
|
+
|
288
|
+
Instead of `all_attributes` you may also use the alias:
|
289
|
+
|
290
|
+
* `all_attributes_set`
|
291
|
+
|
292
|
+
or call the instance method `attribute_set` without arguments.
|
293
|
+
|
294
|
+
#### `all_accessible_attributes` ####
|
295
|
+
|
296
|
+
The [`all_accessible_attributes`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:all_accessible_attributes)
|
297
|
+
method **returns the attribute set containing all accessible attributes**.
|
298
|
+
|
299
|
+
Example:
|
300
|
+
|
301
|
+
```ruby
|
302
|
+
User.first.all_accessible_attributes
|
303
|
+
# => #<ActiveModel::AttributeSet: {"username", "email", "language"}>
|
271
304
|
```
|
272
305
|
|
306
|
+
Be aware that this method requires that the used ORM has `accessible_attributes` data structure available for any model class.
|
307
|
+
|
308
|
+
Instead of `all_accessible_attributes` you may also use the alias:
|
309
|
+
|
310
|
+
* `accessible_attributes_set`
|
311
|
+
|
312
|
+
#### `all_protected_attributes` ####
|
313
|
+
|
314
|
+
The [`all_protected_attributes`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:all_protected_attributes)
|
315
|
+
method **returns the attribute set containing all protected attributes**.
|
316
|
+
|
317
|
+
Example:
|
318
|
+
|
319
|
+
```ruby
|
320
|
+
User.first.all_protected_attributes
|
321
|
+
# => #<ActiveModel::AttributeSet: {"id"}>
|
322
|
+
```
|
323
|
+
|
324
|
+
Be aware that this method requires that the used ORM has `protected_attributes` data structure available for any model class.
|
325
|
+
|
326
|
+
Instead of `all_protected_attributes` you may also use the alias:
|
327
|
+
|
328
|
+
* `protected_attributes_set`
|
329
|
+
|
330
|
+
#### `all_inaccessible_attributes` ####
|
331
|
+
|
332
|
+
The [`all_inaccessible_attributes`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:all_inaccessible_attributes)
|
333
|
+
method **returns the attribute set containing all inaccessible attributes**. Inaccessible attributes are attributes
|
334
|
+
that aren't listed as accessible, which includes protected attributes and attributes for which the `attr_accessible` clause
|
335
|
+
wasn't used.
|
336
|
+
|
337
|
+
Example:
|
338
|
+
|
339
|
+
```ruby
|
340
|
+
User.first.all_inaccessible_attributes
|
341
|
+
# => #<ActiveModel::AttributeSet: {"id", "password", "created_at", "updated_at"}>
|
342
|
+
```
|
343
|
+
|
344
|
+
Be aware that this method requires that the used ORM has `accessible_attributes` data structure available for any model class.
|
345
|
+
|
346
|
+
Instead of `all_inaccessible_attributes` you may also use the alias:
|
347
|
+
|
348
|
+
* `inaccessible_attributes_set`
|
349
|
+
|
273
350
|
#### `filtered_attribute(attribute_name)` ####
|
274
351
|
|
275
352
|
The [`filtered_attribute`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters:filtered_attribute)
|
@@ -496,6 +573,9 @@ Examples:
|
|
496
573
|
# => #<ActiveModel::AttributeSet: {"username", "email"}>
|
497
574
|
```
|
498
575
|
|
576
|
+
Be aware that calling these methods causes model object to be validated. The required condition
|
577
|
+
to use these methods is the ORM that has `errors` hash (Active Record has it).
|
578
|
+
|
499
579
|
#### Querying attributes for set names ####
|
500
580
|
|
501
581
|
Querying attributes to know sets they belong to uses one
|
@@ -583,6 +663,29 @@ with question mark. Otherwise you may get false positives
|
|
583
663
|
or a strange errors when trying to test if attribute belongs
|
584
664
|
to a set. The real method call will override your check.
|
585
665
|
|
666
|
+
##### Set accessibility querying #####
|
667
|
+
|
668
|
+
* **`accessible?`**
|
669
|
+
* **`inaccessible?`**
|
670
|
+
* **`protected?`**
|
671
|
+
* **`is_accessible?`**
|
672
|
+
* **`is_inaccessible?`**
|
673
|
+
* **`is_protected?`**
|
674
|
+
|
675
|
+
The methods above allow to you to test if certain attribute is accessible, inaccessible or protected.
|
676
|
+
|
677
|
+
Examples:
|
678
|
+
|
679
|
+
```ruby
|
680
|
+
u = User.first
|
681
|
+
u.the_attribute(:id).is.accessible?
|
682
|
+
# => false
|
683
|
+
u.the_attribute(:id).is.protected?
|
684
|
+
# => true
|
685
|
+
u.the_attribute(:id).is.inaccessible?
|
686
|
+
# => true
|
687
|
+
```
|
688
|
+
|
586
689
|
Attribute filters
|
587
690
|
-----------------
|
588
691
|
|
@@ -825,6 +928,7 @@ Here is a list of the predefined filtering methods:
|
|
825
928
|
* `upcase_attributes` (submodule: `Upcase` or `Case`)
|
826
929
|
* `strip_attributes` (submodule: `Strip`)
|
827
930
|
* `squeeze_attributes` (submodule: `Squeeze`)
|
931
|
+
* `squish_attributes` (submodule: `Squish`)
|
828
932
|
|
829
933
|
Example:
|
830
934
|
|
@@ -832,11 +936,11 @@ Example:
|
|
832
936
|
class User < ActiveRecord::Base
|
833
937
|
include ActiveModel::AttributeFilters::Common
|
834
938
|
|
835
|
-
the_attribute user: [:
|
836
|
-
the_attribute email: [:
|
837
|
-
the_attribute name: [:
|
939
|
+
the_attribute user: [:should_be_squished, :should_be_downcased ]
|
940
|
+
the_attribute email: [:should_be_squished, :should_be_downcased ]
|
941
|
+
the_attribute name: [:should_be_squished, :should_be_downcased, :should_be_titleized ]
|
838
942
|
|
839
|
-
before_validation :
|
943
|
+
before_validation :squish_attributes
|
840
944
|
before_validation :downcase_attributes
|
841
945
|
before_validation :titleize_attributes
|
842
946
|
end
|
@@ -846,20 +950,24 @@ or (better):
|
|
846
950
|
|
847
951
|
```ruby
|
848
952
|
class User < ActiveRecord::Base
|
849
|
-
include ActiveModel::AttributeFilters::Common::
|
953
|
+
include ActiveModel::AttributeFilters::Common::Squish
|
850
954
|
include ActiveModel::AttributeFilters::Common::Downcase
|
851
955
|
include ActiveModel::AttributeFilters::Common::Titleize
|
852
956
|
|
853
|
-
the_attribute user: [:
|
854
|
-
the_attribute email: [:
|
855
|
-
the_attribute name: [:
|
957
|
+
the_attribute user: [:should_be_squished, :should_be_downcased ]
|
958
|
+
the_attribute email: [:should_be_squished, :should_be_downcased ]
|
959
|
+
the_attribute name: [:should_be_squished, :should_be_downcased, :should_be_titleized ]
|
856
960
|
|
857
|
-
before_validation :
|
961
|
+
before_validation :squished_attributes
|
858
962
|
before_validation :downcase_attributes
|
859
963
|
before_validation :titleize_attributes
|
860
964
|
end
|
861
965
|
```
|
862
966
|
|
967
|
+
See the
|
968
|
+
[`ActiveModel::AttributeFilters::Common`](http://rubydoc.info/gems/attribute-filters/ActiveModel/AttributeFilters/Common)
|
969
|
+
for detailed descriptions.
|
970
|
+
|
863
971
|
Custom applications
|
864
972
|
-------------------
|
865
973
|
|
@@ -15,6 +15,18 @@ module ActiveModel
|
|
15
15
|
# that allows sweet constructs like:
|
16
16
|
# the_attribute(:x).is.in_set?
|
17
17
|
class AttrQuery < Query
|
18
|
+
# Creates new query object.
|
19
|
+
#
|
20
|
+
# @param set_object [AttributeSet] attribute set containing set names for which the query will be made
|
21
|
+
# @param am_object [Object] model object which has access to attributes (may be an instance of ActiveRecord or similar)
|
22
|
+
# @param attribute_name [Sting,Symbol] name of attribute the query is made for
|
23
|
+
def initialize(set_object, am_object, attribute_name)
|
24
|
+
@set_object = set_object
|
25
|
+
@am_object = am_object
|
26
|
+
@attribute_name = attribute_name.to_s
|
27
|
+
@next_method = nil
|
28
|
+
end
|
29
|
+
|
18
30
|
# This is a proxy method that causes some calls to be
|
19
31
|
# intercepted. Is allows to create semi-natural
|
20
32
|
# syntax when querying attribute sets containing set names.
|
@@ -42,12 +54,23 @@ module ActiveModel
|
|
42
54
|
when :are, :is, :one, :is_one, :in, :list, :be, :should,
|
43
55
|
:the, :a, :sets, :in_sets, :set, :in_a_set, :in_set, :belongs_to
|
44
56
|
self
|
57
|
+
|
45
58
|
when :belongs_to?, :in?, :in_set?, :in_a_set?, :in_the_set?,
|
46
59
|
:the_set?, :set?, :is_one_that?, :one_that?, :that?
|
47
60
|
if args.present? && args.is_a?(::Array)
|
48
61
|
args = args.map{ |a| a.to_sym if a.respond_to?(:to_sym) }
|
49
62
|
end
|
50
63
|
@set_object.include?(*args, &block)
|
64
|
+
|
65
|
+
when :accessible?, :is_accessible?
|
66
|
+
@am_object.all_accessible_attributes.include?(@attribute_name)
|
67
|
+
|
68
|
+
when :inaccessible?, :is_inaccessible?
|
69
|
+
@am_object.all_inaccessible_attributes.include?(@attribute_name)
|
70
|
+
|
71
|
+
when :protected?, :is_protected?
|
72
|
+
@am_object.all_protected_attributes.include?(@attribute_name)
|
73
|
+
|
51
74
|
else
|
52
75
|
set_name_str = method_sym.to_s.dup
|
53
76
|
if !@set_object.respond_to?(method_sym) && set_name_str.slice!(/\?\z/) == '?'
|
@@ -63,7 +86,9 @@ module ActiveModel
|
|
63
86
|
case name.to_sym
|
64
87
|
when :are, :is, :one, :is_one, :in, :list, :be, :should, :the, :a, :sets, :in_sets,
|
65
88
|
:set, :in_a_set, :in_set, :in?, :in_set?, :in_a_set?, :in_the_set?, :the_set?, :set?,
|
66
|
-
:is_one_that?, :one_that?, :that?, :belongs_to?, :belongs_to
|
89
|
+
:is_one_that?, :one_that?, :that?, :belongs_to?, :belongs_to,
|
90
|
+
:protected?, :is_protected?, :inaccessible?, :is_inaccessible?,
|
91
|
+
:accessible?, :is_accessible?
|
67
92
|
true
|
68
93
|
else
|
69
94
|
@set_object.respond_to?(name) || name.to_s.slice(-1,1) == '?'
|
@@ -112,6 +112,22 @@ module ActiveModel
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
# Squeezes white characters in attributes, removes leading and trailing spaces and newlines.
|
116
|
+
module Squish
|
117
|
+
# Squeezes white characters in attributes, removes leading and trailing spaces and newlines.
|
118
|
+
#
|
119
|
+
# The attrubutes to be squished are taken from the attribute set
|
120
|
+
# called +should_be_squished+. This method is safe to be
|
121
|
+
# used with multibyte strings (containing diacritics).
|
122
|
+
#
|
123
|
+
# @return [void]
|
124
|
+
def squish_attributes
|
125
|
+
filter_attrs_from_set(:should_be_squished) do |atr|
|
126
|
+
atr.mb_chars.squish.to_s
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
115
131
|
# Titleizes attributes.
|
116
132
|
module Titleize
|
117
133
|
# Titleizes attributes.
|
@@ -19,7 +19,9 @@ module ActiveModel
|
|
19
19
|
base.extend ClassMethods
|
20
20
|
end
|
21
21
|
|
22
|
-
# Returns the attribute set of the given name
|
22
|
+
# Returns the attribute set of the given name or the set containing
|
23
|
+
# all attributes (if the argument is not given).
|
24
|
+
#
|
23
25
|
# @note The returned value is a duplicate. Adding or removing
|
24
26
|
# elements to it will have no effect. Altering attribute sets
|
25
27
|
# is possible on a class-level only, since attribute sets
|
@@ -27,8 +29,12 @@ module ActiveModel
|
|
27
29
|
#
|
28
30
|
# @param set_name [Symbol] name of attribute set
|
29
31
|
# @return [AttributeSet] attribute set
|
30
|
-
def attribute_set(set_name)
|
31
|
-
|
32
|
+
def attribute_set(set_name=nil)
|
33
|
+
if set_name.nil?
|
34
|
+
all_attributes
|
35
|
+
else
|
36
|
+
ActiveModel::AttributeSet::Query.new(self.class.attribute_set(set_name), self)
|
37
|
+
end
|
32
38
|
end
|
33
39
|
alias_method :attributes_that_are, :attribute_set
|
34
40
|
alias_method :from_attributes_that, :attribute_set
|
@@ -48,6 +54,29 @@ module ActiveModel
|
|
48
54
|
def all_attributes
|
49
55
|
ActiveModel::AttributeSet::Query.new(AttributeSet.new(attributes.keys), self)
|
50
56
|
end
|
57
|
+
alias_method :all_attributes_set, :all_attributes
|
58
|
+
|
59
|
+
# Returns a set containing all accessible attributes.
|
60
|
+
# @return [AttributeSet] attribute set
|
61
|
+
def all_accessible_attributes
|
62
|
+
all_attributes & self.class.accessible_attributes
|
63
|
+
end
|
64
|
+
alias_method :accessible_attributes_set, :all_accessible_attributes
|
65
|
+
|
66
|
+
# Returns a set containing all protected attributes.
|
67
|
+
# @return [AttributeSet] attribute set
|
68
|
+
def all_protected_attributes
|
69
|
+
all_attributes & self.class.protected_attributes
|
70
|
+
end
|
71
|
+
alias_method :protected_attributes_set, :all_protected_attributes
|
72
|
+
|
73
|
+
# Returns a set containing all attributes that are not accessible attributes.
|
74
|
+
# @return [AttributeSet] attribute set
|
75
|
+
def all_inaccessible_attributes
|
76
|
+
all_attributes - self.class.accessible_attributes
|
77
|
+
end
|
78
|
+
alias_method :all_non_accessible_attributes, :all_inaccessible_attributes
|
79
|
+
alias_method :inaccessible_attributes_set, :all_inaccessible_attributes
|
51
80
|
|
52
81
|
# Gets all the defined attribute sets.
|
53
82
|
# @note Use +key+ method explicitly to check if the given set exists. The hash returned by this method
|
@@ -71,7 +100,7 @@ module ActiveModel
|
|
71
100
|
# @param attribute_name [Symbol] name of attribute set
|
72
101
|
# @return [AttributeSet] attribute set
|
73
102
|
def filtered_attribute(attribute_name)
|
74
|
-
ActiveModel::AttributeSet::AttrQuery.new(self.class.filter_attribute(attribute_name), self)
|
103
|
+
ActiveModel::AttributeSet::AttrQuery.new(self.class.filter_attribute(attribute_name), self, attribute_name)
|
75
104
|
end
|
76
105
|
alias_method :the_attribute, :filtered_attribute
|
77
106
|
alias_method :is_the_attribute, :filtered_attribute
|
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.3.
|
4
|
+
version: 1.3.1
|
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-05 00:00:00.000000000 Z
|
52
52
|
dependencies:
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: railties
|
55
|
-
requirement: &
|
55
|
+
requirement: &2168470740 !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: *2168470740
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: activemodel
|
66
|
-
requirement: &
|
66
|
+
requirement: &2168470280 !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: *2168470280
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: hoe-yard
|
77
|
-
requirement: &
|
77
|
+
requirement: &2168469840 !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: *2168469840
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: rspec
|
88
|
-
requirement: &
|
88
|
+
requirement: &2168469360 !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: *2168469360
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: yard
|
99
|
-
requirement: &
|
99
|
+
requirement: &2168468880 !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: *2168468880
|
108
108
|
- !ruby/object:Gem::Dependency
|
109
109
|
name: rdoc
|
110
|
-
requirement: &
|
110
|
+
requirement: &2168468440 !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: *2168468440
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: redcarpet
|
121
|
-
requirement: &
|
121
|
+
requirement: &2168468000 !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: *2168468000
|
130
130
|
- !ruby/object:Gem::Dependency
|
131
131
|
name: supermodel
|
132
|
-
requirement: &
|
132
|
+
requirement: &2168467560 !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: *2168467560
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: activerecord
|
143
|
-
requirement: &
|
143
|
+
requirement: &2168467120 !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: *2168467120
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: bundler
|
154
|
-
requirement: &
|
154
|
+
requirement: &2168466680 !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: *2168466680
|
163
163
|
- !ruby/object:Gem::Dependency
|
164
164
|
name: hoe-bundler
|
165
|
-
requirement: &
|
165
|
+
requirement: &2168466240 !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: *2168466240
|
174
174
|
- !ruby/object:Gem::Dependency
|
175
175
|
name: hoe-gemspec
|
176
|
-
requirement: &
|
176
|
+
requirement: &2168465800 !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: *2168465800
|
185
185
|
- !ruby/object:Gem::Dependency
|
186
186
|
name: hoe
|
187
|
-
requirement: &
|
187
|
+
requirement: &2168465360 !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: *2168465360
|
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: 1058669619257225272
|
256
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
257
|
none: false
|
258
258
|
requirements:
|
metadata.gz.sig
CHANGED
Binary file
|