ect 0.0.1 → 1.0.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 +10 -2
- data/README.md +88 -1
- data/ect.gemspec +1 -1
- data/lib/ect.rb +18 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39640ca9b5241c26a75af47e0a1ecd2958921512
|
4
|
+
data.tar.gz: 5010a8c7eea35df1e08308d7c919674002b10ae9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aff7be833138964e1964a41411035fc15b5ac1c425d07e38f8305d8e1813445832664f7c21dee05d5aeb097cb20c0699ec5f332500e3fb419695384dac694be8
|
7
|
+
data.tar.gz: 59a427f2a7154d9337e28d5bd01ea3673ce6f5c529fa522f8c16f818b37111cd5a5884aad0015cd68119ff22011c31abc837236d89148500b406d4cd6a17b36f
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,15 @@
|
|
2
2
|
# ect CHANGELOG.md
|
3
3
|
|
4
4
|
|
5
|
-
## ect 1.0.0
|
5
|
+
## ect 1.0.0 released 2017-10-13
|
6
6
|
|
7
|
-
-
|
7
|
+
- Alias #inflect to Object#tap
|
8
|
+
- Implement Object#deflect
|
9
|
+
- Implement Enumerable#dissect
|
10
|
+
- Alias #bisect to Enumerable#partition
|
11
|
+
|
12
|
+
|
13
|
+
## ect 0.0.1 released 2017-10-12
|
14
|
+
|
15
|
+
- Empty initial gem push
|
8
16
|
|
data/README.md
CHANGED
@@ -3,7 +3,94 @@
|
|
3
3
|
|
4
4
|
[](http://badge.fury.io/rb/ect)
|
5
5
|
|
6
|
-
|
6
|
+
Ruby methods ending in `ect`.
|
7
|
+
|
8
|
+
The subject of last part of a [lightning talk](https://speakerdeck.com/jmettraux/ruby-methods-in-ect-hiroshima-dot-rb-number-058) for [Hiroshima.rb #058](https://hiroshimarb.connpass.com/event/65459/).
|
9
|
+
|
10
|
+
I like to chain methods ending in `ect`. I wanted to have more of them.
|
11
|
+
|
12
|
+
Mostly a joke.
|
13
|
+
|
14
|
+
|
15
|
+
## Object
|
16
|
+
|
17
|
+
### Object#inflect
|
18
|
+
|
19
|
+
> inflect |ɪnˈflɛkt|
|
20
|
+
>
|
21
|
+
> ORIGIN late Middle English (in sense 3): from Latin inflectere, from in- ‘into’ + flectere ‘to bend’.
|
22
|
+
|
23
|
+
An alias to `#tap`. Passes the instance to the block, returns the instance.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
%w[ fox lion crow donkey wolf ]
|
27
|
+
.inflect { |a| a << 'mole' }
|
28
|
+
.collect(&:capitalize)
|
29
|
+
```
|
30
|
+
|
31
|
+
### Object#deflect
|
32
|
+
|
33
|
+
> deflect |dɪˈflɛkt|
|
34
|
+
>
|
35
|
+
> ORIGIN mid 16th cent.: from Latin deflectere, from de- ‘away from’ + flectere ‘to bend’.
|
36
|
+
|
37
|
+
A very simple `yield(self)` (in Ruby 2.5.x it could thus become an alias to `#yiel_self`).
|
38
|
+
|
39
|
+
Passes the instance to the block, returns the result of the block. Change of direction.
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
[ animals_list_1, animals_list_2 ]
|
43
|
+
.deflect { |a, b| a.include?('mole') ? a : b }
|
44
|
+
.collect(&:capitalize)
|
45
|
+
```
|
46
|
+
|
47
|
+
## Enumerable
|
48
|
+
|
49
|
+
### Enumerable#bisect
|
50
|
+
|
51
|
+
> bisect |bʌɪˈsɛkt|
|
52
|
+
>
|
53
|
+
> ORIGIN mid 17th cent.: from bi-‘two’ + Latin sect- (from secare ‘to cut’).
|
54
|
+
|
55
|
+
An alias to `#partition`. Returns two arrays (the true array and the false array).
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
%w[ fox lion crow donkey wolf ]
|
59
|
+
.bisect { |a| a.length > 3 }
|
60
|
+
#
|
61
|
+
# => [ %w[ lion crow donkey wolf ],
|
62
|
+
# %w[ fox ] ]
|
63
|
+
```
|
64
|
+
|
65
|
+
### Enumerable#dissect
|
66
|
+
|
67
|
+
> dissect |dʌɪˈsɛkt, dɪ-|
|
68
|
+
>
|
69
|
+
> ORIGIN late 16th cent.: from Latin dissect- ‘cut up’, from the verb dissecare, from dis- ‘apart’ + secare ‘to cut’.
|
70
|
+
|
71
|
+
"Cuts" the incoming Enumerable instance in multiple arrays.
|
72
|
+
|
73
|
+
```ruby
|
74
|
+
a0, a1, a2 = (1..14).dissect { |i| i % 3 }
|
75
|
+
|
76
|
+
p a0 # => [ 3, 6, 9, 12 ]
|
77
|
+
p a1 # => [ 1, 4, 7, 10, 13 ]
|
78
|
+
p a2 # => [ 2, 5, 8, 11, 14 ]
|
79
|
+
```
|
80
|
+
|
81
|
+
A sparse answer is possible:
|
82
|
+
```ruby
|
83
|
+
a0, a1, a2 = (1..14)
|
84
|
+
.dissect { |i|
|
85
|
+
case m = i % 3
|
86
|
+
when 0, 2 then m
|
87
|
+
else 0
|
88
|
+
end }
|
89
|
+
|
90
|
+
p a0 # => [ 1, 3, 4, 6, 7, 9, 10, 12, 13 ]
|
91
|
+
p a1 # => nil
|
92
|
+
p a2 # => [ 2, 5, 8, 11, 14 ]
|
93
|
+
```
|
7
94
|
|
8
95
|
|
9
96
|
## LICENSE
|
data/ect.gemspec
CHANGED
data/lib/ect.rb
CHANGED
@@ -1,11 +1,28 @@
|
|
1
1
|
|
2
2
|
module Ect
|
3
3
|
|
4
|
-
VERSION = '0.0
|
4
|
+
VERSION = '1.0.0'
|
5
5
|
end
|
6
6
|
|
7
|
+
|
8
|
+
class Object
|
9
|
+
|
10
|
+
alias inflect tap
|
11
|
+
|
12
|
+
def deflect
|
13
|
+
|
14
|
+
yield(self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
7
19
|
module Enumerable
|
8
20
|
|
9
21
|
alias bisect partition
|
22
|
+
|
23
|
+
def dissect
|
24
|
+
|
25
|
+
inject([]) { |a, elt| (a[yield(elt)] ||= []) << elt; a }
|
26
|
+
end
|
10
27
|
end
|
11
28
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.6'
|
27
|
-
description: Methods ending in ect
|
27
|
+
description: Methods ending in ect. Mostly a joke.
|
28
28
|
email:
|
29
29
|
- jmettraux@gmail.com
|
30
30
|
executables: []
|