epitools 0.5.28 → 0.5.29

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 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
-