epitools 0.5.28 → 0.5.29

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d32ac8076b033d8da1448cab48227f4a8b98554a
4
- data.tar.gz: 941aa9e77565040789d32818e7677d02f40606e1
3
+ metadata.gz: 9bd295ef4f56858d08b947caa73cdbc3e9bed57b
4
+ data.tar.gz: 335ab48442074262d802aada39a9fc51a53cd351
5
5
  SHA512:
6
- metadata.gz: ed41d70fe80e33f88afebb7d720d77fbfd878c33167f10fffaa0d0a0352689c8bab9bd1c9d21306d74f5c35058c712bc811257c6b163ce252195533463429cba
7
- data.tar.gz: e18b095e7a28681f000e2f79d16b6326522f44ebef27f3baaa714d3f6604557ce8f5d62178f7284e3f5873a98ef1d45d105a15053a0dd0c3653ac8a9f0c530dd
6
+ metadata.gz: 58ebc78bf95e4bf09b8ab5e482e5c97edf4f5da6402994aca2147f8f27996a531dbb03ba848d438dfa87afe029189aaa1e503b838f9206415265a00166e127f8
7
+ data.tar.gz: afec7cf64783fd9073a6074af82049a5b2add2f0e2355f5e17a9ed809b4f01a58febbf40fd716008bb55a44cf660875af86de71d3e721cd4e2913f29c10b98d9
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.28
1
+ 0.5.29
@@ -50,12 +50,35 @@ class Array
50
50
  end
51
51
 
52
52
  #
53
- # Pick the middle element.
53
+ # Pick the middle element
54
54
  #
55
55
  def middle
56
56
  self[(size-1) / 2]
57
57
  end
58
58
 
59
+ #
60
+ # Find the statistical mean
61
+ #
62
+ def mean
63
+ sum / size.to_f
64
+ end
65
+ alias_method :average, :mean
66
+
67
+ #
68
+ # Find the statistical median (middle value in the sorted dataset)
69
+ #
70
+ def median
71
+ sort.middle
72
+ end
73
+
74
+
75
+ #
76
+ # Find the statistical "mode" (most frequently occurring value)
77
+ #
78
+ def mode
79
+ counts.max_by { |k,v| v }.first
80
+ end
81
+
59
82
  #
60
83
  # XOR operator
61
84
  #
@@ -140,7 +140,7 @@ module Enumerable
140
140
  #
141
141
  # Sum the elements
142
142
  #
143
- def sum
143
+ def sum(&block)
144
144
  if block_given?
145
145
  map(&block).reduce(:+)
146
146
  else
@@ -362,8 +362,17 @@ module Enumerable
362
362
  end
363
363
  h
364
364
  end
365
- alias_method :counted, :counts
366
- alias_method :grouped, :counts
365
+ alias_method :count_by, :counts
366
+ alias_method :group_counts, :counts
367
+
368
+
369
+ #
370
+ # group_by the elements themselves
371
+ #
372
+ def groups
373
+ group_by(&:self)
374
+ end
375
+ alias_method :grouped, :groups
367
376
 
368
377
  end
369
378
 
@@ -13,7 +13,7 @@ end
13
13
  class Binding
14
14
 
15
15
  #
16
- # Get a variables in this binding
16
+ # Get a variable in this binding
17
17
  #
18
18
  def [](key)
19
19
  eval(key.to_s)
@@ -31,7 +31,6 @@ class Binding
31
31
  #
32
32
  # Return all the local variables in the binding
33
33
  #
34
-
35
34
  if RUBY_VERSION["1.8"]
36
35
  def local_variables
37
36
  eval("local_variables").map(&:to_sym)
@@ -44,6 +43,19 @@ class Binding
44
43
 
45
44
  alias_method :keys, :local_variables
46
45
 
46
+ #
47
+ # Combine the variables in two bindings (the latter having precedence)
48
+ #
49
+ def merge(other)
50
+ self.eval do
51
+ other.eval do
52
+ binding
53
+ end
54
+ end
55
+ end
56
+
57
+ alias_method :|, :merge
58
+
47
59
  end
48
60
 
49
61
 
@@ -243,3 +255,9 @@ def STDIN.purge
243
255
  # No more input!
244
256
  end
245
257
  end
258
+
259
+
260
+ class DateTime
261
+ def to_i; to_time.to_i; end
262
+ def to_f; to_time.to_f; end
263
+ end
@@ -99,13 +99,34 @@ class Numeric
99
99
 
100
100
  end
101
101
 
102
+
103
+ def ln
104
+ Math.log(self)
105
+ end
106
+
107
+
102
108
  # Math.log is different in 1.8
103
109
  if RUBY_VERSION["1.8"]
104
- def log(n); Math.log(self) / Math.log(n); end
110
+
111
+ def log(n=nil)
112
+ if n
113
+ Math.log(self) / Math.log(n)
114
+ else
115
+ Math.log(self)
116
+ end
117
+ end
118
+
105
119
  else
106
- def log(n); Math.log(self, n); end
107
- end
108
120
 
121
+ def log(n=nil)
122
+ if n
123
+ Math.log(self, n)
124
+ else
125
+ Math.log(self)
126
+ end
127
+ end
128
+
129
+ end
109
130
 
110
131
  BYTE_SIZE_TABLE = {
111
132
  # power # units
@@ -74,7 +74,7 @@ class String
74
74
  alias_method :strip_ansi, :strip_color
75
75
 
76
76
  #
77
- # Like #lines, but skips empty lines and removes \n's.
77
+ # Like #each_line, but skips empty lines and removes \n's.
78
78
  #
79
79
  def nice_lines
80
80
  # note: $/ is the platform's newline separator
@@ -84,6 +84,16 @@ class String
84
84
  alias_method :nicelines, :nice_lines
85
85
  alias_method :clean_lines, :nice_lines
86
86
 
87
+ #
88
+ # Like #each_line, but removes trailing \n
89
+ #
90
+ def each_chomped
91
+ each_line { |line| yield line.chomp }
92
+ end
93
+ alias_method :chomped_lines, :each_chomped
94
+ alias_method :chomp_lines, :each_chomped
95
+
96
+
87
97
  #
88
98
  # Wrap the lines in the string so they're at most "width" wide.
89
99
  # (If no width is specified, defaults to the width of the terminal.)
data/spec/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format specdoc
3
+ -I../lib
@@ -352,6 +352,16 @@ describe Array do
352
352
  a << 6
353
353
  a.middle.should == 3
354
354
  end
355
+
356
+ it "means, medians, modes" do
357
+ a = [1,2,3,4,4,5,5,5,6]
358
+ # 0 1 2 3 4 5 6 7 8
359
+ # ^- median
360
+
361
+ a.median.should == 4
362
+ a.mode.should == 5
363
+ a.mean.should == a.sum.to_f / a.size
364
+ end
355
365
 
356
366
  it "/'s" do
357
367
  a = [1,2,3,4,5]
@@ -424,6 +434,7 @@ describe Enumerable do
424
434
 
425
435
  it "sums" do
426
436
  [1,2,3,4,5].sum.should == 15
437
+ [1,2,3,4,5].sum { 1 }.should == 5
427
438
  end
428
439
 
429
440
  it "averages" 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.28
4
+ version: 0.5.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-24 00:00:00.000000000 Z
11
+ date: 2013-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -81,6 +81,7 @@ files:
81
81
  - lib/epitools/typed_struct.rb
82
82
  - lib/epitools/wm.rb
83
83
  - lib/epitools/zopen.rb
84
+ - spec/.rspec
84
85
  - spec/autoreq_spec.rb
85
86
  - spec/browser_spec.rb
86
87
  - spec/clitools_spec.rb
@@ -95,7 +96,6 @@ files:
95
96
  - spec/permutations_spec.rb
96
97
  - spec/rash_spec.rb
97
98
  - spec/ratio_spec.rb
98
- - spec/spec.opts
99
99
  - spec/spec_helper.rb
100
100
  - spec/sys_spec.rb
101
101
  - spec/term_spec.rb
data/spec/spec.opts DELETED
@@ -1,5 +0,0 @@
1
- --color
2
- --format specdoc
3
- --loadby mtime
4
- --reverse
5
-