put 0.2.0 → 0.3.0
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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/README.md +25 -0
- data/lib/put/puts_thing/enum.rb +10 -0
- data/lib/put/version.rb +1 -1
- data/lib/put.rb +5 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed8c542e17e5ecbc293a508843be66ab105238b761ed40e585980a2402ec6124
|
|
4
|
+
data.tar.gz: f7fef7196819fe61112639c965a4f5eca999dc0c72c94f6360574f02c94242f1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1b19851583cc9248409052e468a9bd913731eb04fe93ba16358965634740bbba5260626478fc6f7b5c7f4e2180c46e9fd6bdebbb6b6b19722a67209bfa020d23
|
|
7
|
+
data.tar.gz: 8c6216e264c6abe21db898b59c880f5aaa7276032a2f9b5c0db623f2496268f632b81e041b9e9fff2cd970c3158104f3b36881ae432de79088fb2c5f4ccbbffb
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -205,6 +205,31 @@ As you might be able to guess, `Put.nils_last` puts the nils last:
|
|
|
205
205
|
} # => [:every, :counts, nil]
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
+
### Put.enum(value, order:, nils_first: false)
|
|
209
|
+
|
|
210
|
+
When you're sorting by a discrete attribute — a role, a status, a tier — that
|
|
211
|
+
doesn't have a natural order of its own, `Put.enum` sorts a value by its
|
|
212
|
+
position in a list you provide, instead of you writing a `case`/`when`
|
|
213
|
+
translation table by hand:
|
|
214
|
+
|
|
215
|
+
```ruby
|
|
216
|
+
[:director, :staff, :manager].sort_by { |role|
|
|
217
|
+
[Put.enum(role, order: [:staff, :manager, :director])]
|
|
218
|
+
} # => [:staff, :manager, :director]
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
A value that isn't in `order` sorts after every value that is, rather than
|
|
222
|
+
raising:
|
|
223
|
+
|
|
224
|
+
```ruby
|
|
225
|
+
[:manager, :contractor, :staff].sort_by { |role|
|
|
226
|
+
[Put.enum(role, order: [:staff, :manager, :director])]
|
|
227
|
+
} # => [:staff, :manager, :contractor]
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Like `Put.asc` and `Put.desc`, `Put.enum` also takes a `nils_first` keyword
|
|
231
|
+
argument (defaulting to `false`) for where `nil` values should sort.
|
|
232
|
+
|
|
208
233
|
### Put.debug(sorting_arrays)
|
|
209
234
|
|
|
210
235
|
If you see "comparison of Array with Array failed" and you don't have any idea
|
data/lib/put/version.rb
CHANGED
data/lib/put.rb
CHANGED
|
@@ -6,6 +6,7 @@ require_relative "put/puts_thing/anywhere"
|
|
|
6
6
|
require_relative "put/puts_thing/first"
|
|
7
7
|
require_relative "put/puts_thing/last"
|
|
8
8
|
require_relative "put/puts_thing/in_order"
|
|
9
|
+
require_relative "put/puts_thing/enum"
|
|
9
10
|
require_relative "put/puts_thing/ascending"
|
|
10
11
|
require_relative "put/puts_thing/descending"
|
|
11
12
|
require_relative "put/puts_thing/nil_order"
|
|
@@ -29,6 +30,10 @@ module Put
|
|
|
29
30
|
PutsThing::Ascending.new(value, nils_first: nils_first)
|
|
30
31
|
end
|
|
31
32
|
|
|
33
|
+
def self.enum(value, order:, nils_first: false)
|
|
34
|
+
PutsThing::Enum.new(value, order: order, nils_first: nils_first)
|
|
35
|
+
end
|
|
36
|
+
|
|
32
37
|
def self.nils_first(value)
|
|
33
38
|
PutsThing::NilsFirst.new(value)
|
|
34
39
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: put
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Searls
|
|
@@ -29,6 +29,7 @@ files:
|
|
|
29
29
|
- lib/put/puts_thing/anywhere.rb
|
|
30
30
|
- lib/put/puts_thing/ascending.rb
|
|
31
31
|
- lib/put/puts_thing/descending.rb
|
|
32
|
+
- lib/put/puts_thing/enum.rb
|
|
32
33
|
- lib/put/puts_thing/first.rb
|
|
33
34
|
- lib/put/puts_thing/in_order.rb
|
|
34
35
|
- lib/put/puts_thing/last.rb
|