epitools 0.5.21 → 0.5.22
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/TODO +2 -4
- data/VERSION +1 -1
- data/lib/epitools/core_ext/enumerable.rb +13 -2
- data/lib/epitools/core_ext/object.rb +18 -3
- data/lib/epitools/core_ext/string.rb +0 -8
- data/lib/epitools/minimal.rb +27 -0
- data/spec/path_spec.rb +1 -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: fe4475f902e2c9728b707d9aa36f2fd8922ea7e0
|
4
|
+
data.tar.gz: 9c86c70534eb727596fcd018afd7f7c0e4edf258
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a251525b9b9856f72e0c46644be4126bec6fb23b5cc286acefc9c1f8b23ea613c25c928d0b526baea440de6ba99a8c39a1380ac79306ded00759ae98190a09e
|
7
|
+
data.tar.gz: 7fb5bc4889d33df063834e767391586cbb2bbf59fc391f5e2eb86f422040f4d8e966864a15dabf7de62d1de752fa7a07b959ce19b380571961f42f306631fdc3
|
data/TODO
CHANGED
@@ -6,10 +6,8 @@
|
|
6
6
|
|_ Fix rename/mv
|
7
7
|
|_ Full README with more real-world examples (grep scripts/)
|
8
8
|
- compare folders using Path#ls_r and Path#md5
|
9
|
-
|_
|
10
|
-
|_
|
11
|
-
|_ Relative Path class
|
12
|
-
|_ Class hierarchy (Path, FilePath, URLPath)
|
9
|
+
|_ Documentation: categorize methods for large classes (the way Pathname does)
|
10
|
+
|_ Organize into a class hierarchy (Path, FilePath, URLPath, RelativePath)
|
13
11
|
|_ (Un)Archivers (zip, rar, etc.)
|
14
12
|
|
15
13
|
+ Logger
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.22
|
@@ -1,5 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
1
|
module Enumerable
|
4
2
|
|
5
3
|
#
|
@@ -346,6 +344,19 @@ module Enumerable
|
|
346
344
|
end
|
347
345
|
alias_method :iter, :to_iter
|
348
346
|
|
347
|
+
#
|
348
|
+
# Counts how many instances of each object are in the collection,
|
349
|
+
# returning a hash.
|
350
|
+
#
|
351
|
+
# eg: [:a, :b, :c, :c, :c, :c].counts #=> {:a=>1, :b=>1, :c=>4}
|
352
|
+
#
|
353
|
+
def counts
|
354
|
+
h = Hash.of_integers
|
355
|
+
each { |x| h[x] += 1 }
|
356
|
+
h
|
357
|
+
end
|
358
|
+
alias_method :counted, :counts
|
359
|
+
alias_method :grouped, :counts
|
349
360
|
|
350
361
|
end
|
351
362
|
|
@@ -24,11 +24,26 @@ class Object
|
|
24
24
|
#
|
25
25
|
# (All this method does is dup the object, then call "key=(value)" for each
|
26
26
|
# key/value in the options hash.)
|
27
|
+
#
|
28
|
+
# == BONUS FEATURE! ==
|
29
|
+
#
|
30
|
+
# If you supply a block, it just gives you the object, and
|
31
|
+
# returns whatever your block returns.
|
32
|
+
#
|
33
|
+
# Example:
|
34
|
+
# >> {a: 10, b: 2}.with { |hash| hash[:a] / hash[:b] }
|
35
|
+
# => 5
|
36
|
+
#
|
37
|
+
# Good for chaining lots of operations together in a REPL.
|
27
38
|
#
|
28
39
|
def with(options={})
|
29
|
-
|
30
|
-
|
31
|
-
|
40
|
+
if block_given?
|
41
|
+
yield self
|
42
|
+
else
|
43
|
+
obj = dup
|
44
|
+
options.each { |key, value| obj.send "#{key}=", value }
|
45
|
+
obj
|
46
|
+
end
|
32
47
|
end
|
33
48
|
|
34
49
|
#
|
@@ -244,14 +244,6 @@ class String
|
|
244
244
|
end
|
245
245
|
alias_method :from_marshal, :unmarshal
|
246
246
|
|
247
|
-
#
|
248
|
-
# Convert the string to a Path object (for representing files/directories).
|
249
|
-
#
|
250
|
-
def to_Path
|
251
|
-
Path[self]
|
252
|
-
end
|
253
|
-
alias_method :to_P, :to_Path
|
254
|
-
|
255
247
|
#
|
256
248
|
# Convert this string into a string describing this many of the string.
|
257
249
|
# (Note: Doesn't know anything about proper grammar.)
|
data/lib/epitools/minimal.rb
CHANGED
@@ -141,6 +141,21 @@ class Object
|
|
141
141
|
send(method, *args, &block) if respond_to? method
|
142
142
|
end
|
143
143
|
|
144
|
+
#
|
145
|
+
# Return this object. If given a block, yields this object
|
146
|
+
# and returns the result of the block.
|
147
|
+
#
|
148
|
+
# eg: stuff.group_by(&:self)
|
149
|
+
#
|
150
|
+
def self
|
151
|
+
if block_given?
|
152
|
+
yield self
|
153
|
+
else
|
154
|
+
self
|
155
|
+
end
|
156
|
+
end
|
157
|
+
alias_method :fap, :self
|
158
|
+
|
144
159
|
end
|
145
160
|
|
146
161
|
#
|
@@ -177,6 +192,18 @@ class Module
|
|
177
192
|
end
|
178
193
|
|
179
194
|
|
195
|
+
class String
|
196
|
+
|
197
|
+
#
|
198
|
+
# Convert the string to a Path object (for representing files/directories).
|
199
|
+
#
|
200
|
+
def to_Path
|
201
|
+
Path[self]
|
202
|
+
end
|
203
|
+
alias_method :to_P, :to_Path
|
204
|
+
|
205
|
+
end
|
206
|
+
|
180
207
|
#
|
181
208
|
# Path("/some/path") is an alias for Path["/some/path"]
|
182
209
|
#
|
data/spec/path_spec.rb
CHANGED
@@ -324,7 +324,7 @@ describe Path do
|
|
324
324
|
Path.which("ruby").should_not be_nil
|
325
325
|
Path.which("asdfasdfhkajlsdhfkljashdf").should be_nil
|
326
326
|
Path.which("ruby").class.should == Path
|
327
|
-
Path.which("ps", "sh", "tar").should == ["/bin/ps", "/bin/sh", "/bin/tar"]
|
327
|
+
Path.which("ps", "sh", "tar").map(&:path).should == ["/bin/ps", "/bin/sh", "/usr/bin/tar"]
|
328
328
|
end
|
329
329
|
|
330
330
|
it "Path[]s another path" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epitools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- epitron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
122
|
version: '0'
|
123
123
|
requirements: []
|
124
124
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.0.
|
125
|
+
rubygems_version: 2.0.3
|
126
126
|
signing_key:
|
127
127
|
specification_version: 3
|
128
128
|
summary: Not utils... METILS!
|