attribute-filters 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|