epitools 0.5.103 → 0.5.105

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +1 -1
  3. data/Rakefile +2 -2
  4. data/TODO +1 -1
  5. data/VERSION +1 -1
  6. data/lib/epitools.rb +1 -1
  7. data/lib/epitools/colored.rb +25 -25
  8. data/lib/epitools/core_ext/enumerable.rb +1 -1
  9. data/lib/epitools/core_ext/file.rb +6 -2
  10. data/lib/epitools/core_ext/hash.rb +43 -29
  11. data/lib/epitools/core_ext/misc.rb +21 -1
  12. data/lib/epitools/core_ext/object.rb +19 -19
  13. data/lib/epitools/core_ext/truthiness.rb +5 -5
  14. data/lib/epitools/daemonize.rb +1 -1
  15. data/lib/epitools/hexdump.rb +1 -1
  16. data/lib/epitools/iter.rb +26 -26
  17. data/lib/epitools/lcs.rb +3 -3
  18. data/lib/epitools/mimemagic.rb +7 -7
  19. data/lib/epitools/niceprint.rb +18 -18
  20. data/lib/epitools/numwords.rb +34 -34
  21. data/lib/epitools/path.rb +7 -0
  22. data/lib/epitools/permutations.rb +9 -9
  23. data/lib/epitools/pretty_backtrace.rb +11 -11
  24. data/lib/epitools/progressbar.rb +7 -7
  25. data/lib/epitools/rails.rb +2 -2
  26. data/lib/epitools/rash.rb +16 -16
  27. data/lib/epitools/ratio.rb +1 -1
  28. data/lib/epitools/sys.rb +47 -47
  29. data/lib/epitools/trie.rb +4 -4
  30. data/lib/epitools/typed_struct.rb +5 -5
  31. data/lib/epitools/wm.rb +6 -6
  32. data/lib/epitools/zopen.rb +2 -2
  33. data/spec/autoreq_spec.rb +5 -5
  34. data/spec/browser_spec.rb +1 -1
  35. data/spec/colored_spec.rb +5 -5
  36. data/spec/core_ext_spec.rb +1 -1
  37. data/spec/histogram_spec.rb +3 -3
  38. data/spec/iter_spec.rb +16 -16
  39. data/spec/lcs_spec.rb +5 -5
  40. data/spec/numwords_spec.rb +8 -8
  41. data/spec/permutations_spec.rb +9 -9
  42. data/spec/rash_spec.rb +7 -7
  43. data/spec/ratio_spec.rb +5 -5
  44. data/spec/sys_spec.rb +6 -6
  45. data/spec/term_spec.rb +7 -7
  46. data/spec/typed_struct_spec.rb +5 -5
  47. data/spec/wm_spec.rb +4 -4
  48. data/spec/zopen_spec.rb +11 -11
  49. metadata +2 -2
@@ -18,7 +18,7 @@ module WM
18
18
  # check the children
19
19
  results = windows.select { |w| w.process.children.any? {|pr| pr.pid == pid } }
20
20
  end
21
-
21
+
22
22
  results
23
23
  end
24
24
 
@@ -39,11 +39,11 @@ module WM
39
39
  fields = line.split
40
40
  fields[1] = (fields[1] == "*") # cast to boolean
41
41
  fields[5] = nil if fields[5] == "N/A" # N/A becomes nil
42
-
42
+
43
43
  name = fields[9..-1].join(" ")
44
-
44
+
45
45
  new *(fields.values_at(0,1,3,5,8) + [name])
46
- end
46
+ end
47
47
 
48
48
  def current?
49
49
  current
@@ -70,7 +70,7 @@ module WM
70
70
  # 0x048001f8 5 4080 311 186 1316 835 fizz Gorillaz - Highway (Under Construction)
71
71
  # 0x02c28577 4 3012 66 461 1143 548 fizz Terminal
72
72
  # 0x07c00003 0 14117 12 73 1298 948 fizz tr1984001_comp_soft.pdf
73
- # 0x02d767d8 2 3012 520 470 1143 548 fizz Terminal
73
+ # 0x02d767d8 2 3012 520 470 1143 548 fizz Terminal
74
74
 
75
75
  fields = line.split
76
76
  title = fields[8..-1].join ' '
@@ -371,7 +371,7 @@ module WM
371
371
  # p events
372
372
  eventstring = events.map { |e| e + "\n" }.join("")
373
373
 
374
- temp.write eventstring
374
+ temp.write eventstring
375
375
  temp.flush
376
376
  temp.seek 0
377
377
  # p [:temp, temp.read]
@@ -38,7 +38,7 @@ def zopen(path, mode="rb")
38
38
  else
39
39
  io = open(path)
40
40
  end
41
-
41
+
42
42
  if block_given?
43
43
  result = yield(io)
44
44
  io.close
@@ -46,5 +46,5 @@ def zopen(path, mode="rb")
46
46
  else
47
47
  io
48
48
  end
49
-
49
+
50
50
  end
@@ -15,24 +15,24 @@ describe "autoreq" do
15
15
  # !!defined?(Haml).should == false
16
16
  # lambda { Haml }.should_not raise_error
17
17
  # end
18
-
18
+
19
19
  # it "autoreqs a regular ruby file" do
20
20
  # defined?(Net).should == nil
21
-
21
+
22
22
  # module Net
23
23
  # autoreq :HTTP, 'net/http'
24
24
  # end
25
25
  # lambda { Net::HTTP }.should_not raise_error
26
26
  # end
27
-
27
+
28
28
  # it "autoreqs a gem with a block" do
29
29
  # defined?(Units).should == nil
30
-
30
+
31
31
  # autoreq :Units do
32
32
  # gem 'units', '~> 1.0'
33
33
  # require 'units'
34
34
  # end
35
35
  # lambda { Units }.should_not raise_error
36
36
  # end
37
-
37
+
38
38
  end
@@ -87,4 +87,4 @@ describe Browser::Cache do
87
87
  url.should == result.url
88
88
  end
89
89
 
90
- end
90
+ end
@@ -1,7 +1,7 @@
1
1
  require 'epitools'
2
2
 
3
3
  describe "Colored strings" do
4
-
4
+
5
5
  it "has string methods" do
6
6
  s = "string"
7
7
  s.should respond_to(:blue)
@@ -12,12 +12,12 @@ describe "Colored strings" do
12
12
  s.should respond_to(:purple)
13
13
  s.should respond_to(:magenta)
14
14
  lambda { s.light_blue }.should_not raise_error
15
- end
16
-
15
+ end
16
+
17
17
  it "can do bbs colors" do
18
18
  "<5>yay".colorize.should == "yay".magenta
19
19
  end
20
-
20
+
21
21
  it "can do tagged colors" do
22
22
  "<blue>hello".colorize.should == "hello".blue
23
23
  "<magenta>hello".colorize.should == "<purple>hello".colorize
@@ -25,6 +25,6 @@ describe "Colored strings" do
25
25
  lambda { "</blue>".colorize }.should raise_error
26
26
  "<black_on_yellow>hello".colorize.should == "hello".black_on_yellow
27
27
  end
28
-
28
+
29
29
  end
30
30
 
@@ -1063,4 +1063,4 @@ describe "Anything" do
1063
1063
  end
1064
1064
  end
1065
1065
 
1066
- end
1066
+ end
@@ -1,7 +1,7 @@
1
1
  require 'epitools/core_ext/array'
2
2
 
3
3
  describe "Array#histogram" do
4
-
4
+
5
5
  it "does 1..10" do
6
6
  nums = (1..10).to_a
7
7
  nums.histogram(2).should == [ 5, 5 ]
@@ -17,7 +17,7 @@ describe "Array#histogram" do
17
17
  nums = [0.12, 1.0, 2.2, 3.5, 4.7, 5.9, 6.6, 7.777, 8.898]
18
18
  nums.histogram(3).should == [3,3,3]
19
19
  end
20
-
20
+
21
21
  it "does ranges" do
22
22
  nums = (0..9).to_a
23
23
  nums.histogram(2, ranges: true).should == {
@@ -25,5 +25,5 @@ describe "Array#histogram" do
25
25
  4.5...9.0 => 5
26
26
  }
27
27
  end
28
-
28
+
29
29
  end
@@ -12,17 +12,17 @@ describe Iter do
12
12
  i.should_not == j
13
13
  end
14
14
  end
15
-
15
+
16
16
  it "to_a's" do
17
17
  @i.to_a.should == [1,2,3,4,5]
18
18
  end
19
-
19
+
20
20
 
21
21
  it "reverses" do
22
22
  @i.iterate(2) do |a, b|
23
23
  b.move_before(a)
24
24
  end
25
-
25
+
26
26
  @i.to_a.should == [5,4,3,2,1]
27
27
  end
28
28
 
@@ -32,40 +32,40 @@ describe Iter do
32
32
  b.prev.should == a
33
33
  end
34
34
  end
35
-
35
+
36
36
  it "removes" do
37
37
  @i.iterate {|x| x.remove if x % 2 == 1 }
38
- @i.to_a.should == [2,4]
38
+ @i.to_a.should == [2,4]
39
39
  end
40
-
40
+
41
41
  it "replaces" do
42
42
  @i.first.replace_with(-1)
43
- @i.to_a.should == [-1,2,3,4,5]
43
+ @i.to_a.should == [-1,2,3,4,5]
44
44
  @i.last.replace_with(8)
45
45
  @i.to_a.should == [-1,2,3,4,8]
46
46
  end
47
-
47
+
48
48
  it "slices, values, indexes, etc." do
49
49
  # todo: slice should return an iter
50
50
  @i.first.should == 1
51
- @i[0..1].should == @i.values_at(0,1)
52
- @i[0..-1].should == @i
51
+ @i[0..1].should == @i.values_at(0,1)
52
+ @i[0..-1].should == @i
53
53
  @i[-1].should == @i.last
54
54
  @i[-2..-1].should == @i.values_at(-2,-1)
55
55
  end
56
-
56
+
57
57
  it "move_first/last" do
58
58
  @i.first.move_last
59
59
  @i.to_a.should == [2,3,4,5,1]
60
-
60
+
61
61
  @i.last.move_first
62
62
  @i.should == [1,2,3,4,5]
63
63
  end
64
-
64
+
65
65
  it "sorts an array" do
66
66
  i = Iter.new [3,7,3,1,3]
67
67
  i.each { |a|
68
-
68
+
69
69
  }
70
- end
71
- end
70
+ end
71
+ end
@@ -1,23 +1,23 @@
1
1
  require 'epitools/lcs'
2
2
 
3
3
  describe "Longest common subsequence" do
4
-
4
+
5
5
  it "works!" do
6
6
  prefix_strings = [
7
7
  "shenanigans, gentlemen!",
8
8
  "shenanigans has been called",
9
9
  "shenanigans: a great restaurant."
10
10
  ]
11
-
11
+
12
12
  subsequence_strings = [
13
13
  "i call shenanigans on you!",
14
14
  "shenanigans is a great restaurant.",
15
15
  "you like this? shenanigans!"
16
16
  ]
17
-
17
+
18
18
  longest_common_prefix(prefix_strings).should == "shenanigans"
19
19
  longest_common_subsequence(*subsequence_strings[0..1]).should == 12
20
- end
21
-
20
+ end
21
+
22
22
  end
23
23
 
@@ -1,22 +1,22 @@
1
1
  require 'epitools'
2
2
 
3
3
  describe Numeric do
4
-
4
+
5
5
  it "to_wordses" do
6
6
  {
7
7
  10 => "ten",
8
8
  3_123 => "three thousand, one-hundred and twenty-three",
9
9
  123_124 => "one-hundred and twenty-three thousand, one-hundred and twenty-four",
10
-
10
+
11
11
  8_128_937_981_273_987_129_837_174_612_897_638_613 => "eight undecillion, one-hundred and twenty-eight decillion, nine-hundred and thirty-seven nonillion, nine-hundred and eighty-one octillion, two-hundred and seventy-three septillion, nine-hundred and eighty-seven sextillion, one-hundred and twenty-nine quintillion, eight-hundred and thirty-seven quadrillion, one-hundred and seventy-four trillion, six-hundred and twelve billion, eight-hundred and ninety-seven million, six-hundred and thirty-eight thousand, six-hundred and thirteen",
12
-
12
+
13
13
  3_486_597_230_495_871_304_981_320_498_123_498_263_984_739_841_834_091_823_094_812_039_481_231_623_987_461_293_874_698_123_649_817_236 => "three duotrigintillion, four-hundred and eighty-six untrigintillion, five-hundred and ninety-seven trigintillion, two-hundred and thirty novemvigintillion, four-hundred and ninety-five octovigintillion, eight-hundred and seventy-one septenvigintillion, three-hundred and four sexvigintillion, nine-hundred and eighty-one quinvigintillion, three-hundred and twenty quattuorvigintillion, four-hundred and ninety-eight trevigintillion, one-hundred and twenty-three duovigintillion, four-hundred and ninety-eight unvigintillion, two-hundred and sixty-three vigintillion, nine-hundred and eighty-four novemdecillion, seven-hundred and thirty-nine octodecillion, eight-hundred and fourty-one septendecillion, eight-hundred and thirty-four sexdecillion, ninety-one quindecillion, eight-hundred and twenty-three quattuordecillion, ninety-four tredecillion, eight-hundred and twelve duodecillion, thirty-nine undecillion, four-hundred and eighty-one decillion, two-hundred and thirty-one nonillion, six-hundred and twenty-three octillion, nine-hundred and eighty-seven septillion, four-hundred and sixty-one sextillion, two-hundred and ninety-three quintillion, eight-hundred and seventy-four quadrillion, six-hundred and ninety-eight trillion, one-hundred and twenty-three billion, six-hundred and fourty-nine million, eight-hundred and seventeen thousand, two-hundred and thirty-six",
14
-
15
- 1763241823498172490817349807213409238409123409128340981234781236487126348791263847961238794612839468917236489712364987162398746129834698172364987123 => "more than a googol! (148 digits)"
14
+
15
+ 1763241823498172490817349807213409238409123409128340981234781236487126348791263847961238794612839468917236489712364987162398746129834698172364987123 => "more than a googol! (148 digits)"
16
16
  }.each do |num, result|
17
17
  num.to_words.should == result
18
18
  end
19
-
19
+
20
20
  lambda{ 1.523.million.billion.to_words }.should_not raise_error
21
21
  end
22
22
 
@@ -27,7 +27,7 @@ describe Numeric do
27
27
  37.2872.duotrigintillion.should == 37287200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
28
28
  lambda { 10.googol }.should raise_error
29
29
  end
30
-
30
+
31
31
  it "handles 1.thousand.to_words properly" do
32
32
  1.thousand.to_words.should == "one thousand"
33
33
  end
@@ -35,5 +35,5 @@ describe Numeric do
35
35
  it "handles 1.quadrillion.to_words properly" do
36
36
  1.quadrillion.to_words.should == "one quadrillion"
37
37
  end
38
-
38
+
39
39
  end
@@ -4,26 +4,26 @@ require 'epitools'
4
4
  require 'epitools/permutations'
5
5
 
6
6
  describe "Permutations" do
7
-
7
+
8
8
  it "a*b" do
9
9
  ([1,2] * [3,4]).should == [ [1,3], [1,4], [2,3], [2,4] ]
10
- end
10
+ end
11
11
 
12
12
  it "a**2" do
13
13
  ([1,2] ** 2).should == [ [1,1], [1,2], [2,1], [2,2] ]
14
- end
15
-
14
+ end
15
+
16
16
  it "all_pairses" do
17
- [1,2,3,4].all_pairs.to_a.should == [
18
- [1,2],
19
- [1,3],
20
- [1,4],
17
+ [1,2,3,4].all_pairs.to_a.should == [
18
+ [1,2],
19
+ [1,3],
20
+ [1,4],
21
21
  [2,3],
22
22
  [2,4],
23
23
  [3,4],
24
24
  ]
25
25
 
26
- # reflexive
26
+ # reflexive
27
27
  [1,2,3].all_pairs(true).to_a.should == [
28
28
  [1,1],
29
29
  [1,2],
@@ -3,7 +3,7 @@ require 'epitools'
3
3
  describe Rash do
4
4
 
5
5
  attr_accessor :r
6
-
6
+
7
7
  before :each do
8
8
  @r = Rash.new(
9
9
  /hello/ => "hello",
@@ -15,7 +15,7 @@ describe Rash do
15
15
  #/.+/ => "EVERYTHING"
16
16
  )
17
17
  end
18
-
18
+
19
19
  it "string lookups" do
20
20
  r["other"].should == "whee"
21
21
  r["well hello there"].should == "hello"
@@ -27,22 +27,22 @@ describe Rash do
27
27
  r[/other/].should == "whee"
28
28
  end
29
29
 
30
- it "other objects" do
30
+ it "other objects" do
31
31
  r[true].should == false
32
32
  r[1].should == "awesome"
33
33
  end
34
-
34
+
35
35
  it "does ranges" do
36
36
  @r[250].should == "rangey"
37
37
  @r[999].should == "rangey"
38
38
  @r[1000].should == "rangey"
39
39
  @r[1001].should == nil
40
40
  end
41
-
41
+
42
42
  it "calls procs on matches when they're values" do
43
43
  r = Rash.new( /(ello)/ => proc { |m| m[1] } )
44
44
  r["hello"].should == "ello"
45
45
  r["ffffff"].should == nil
46
46
  end
47
-
48
- end
47
+
48
+ end
@@ -1,7 +1,7 @@
1
1
  require 'epitools/ratio'
2
2
 
3
3
  describe Ratio do
4
-
4
+
5
5
  before :each do
6
6
  @a = Ratio[1,1]
7
7
  @b = Ratio[1,2]
@@ -10,12 +10,12 @@ describe Ratio do
10
10
  it "adds" do
11
11
  ( @a + @b ).should == Ratio[2,3]
12
12
  end
13
-
13
+
14
14
  it "floats" do
15
15
  @a.to_f.should == 1.0
16
16
  @b.to_f.should == 0.5
17
17
  end
18
-
18
+
19
19
  it "percents" do
20
20
  @a.percent.should == "100.0%"
21
21
  @b.percent.should == "50.0%"
@@ -25,5 +25,5 @@ describe Ratio do
25
25
  Ratio(1,2).should == Ratio[1,2]
26
26
  Ratio(1,2).should == Ratio.new(1,2)
27
27
  end
28
-
29
- end
28
+
29
+ end
@@ -11,11 +11,11 @@ describe Sys::ProcessInfo do
11
11
  proc { Sys.windows? }.should_not raise_error
12
12
 
13
13
  %w[Linux Windows Darwin BSD].include?(Sys.os).should == true
14
-
14
+
15
15
  [:linux?, :mac?, :windows?, :bsd?].any?{|os| Sys.send(os)}.should == true
16
16
  end
17
-
18
-
17
+
18
+
19
19
  specify "list all processes" do
20
20
  # procs = Sys.ps
21
21
  #
@@ -35,7 +35,7 @@ describe Sys::ProcessInfo do
35
35
  # matches.should > 1
36
36
  end
37
37
 
38
-
38
+
39
39
  specify "refresh processes" do
40
40
 
41
41
  # STDOUT.sync = true
@@ -61,9 +61,9 @@ describe Sys::ProcessInfo do
61
61
  Sys.cross_platform_method(:cross_platform_test)
62
62
  proc{ Sys.cross_platform_test }.should raise_error
63
63
  end
64
-
64
+
65
65
  specify "interfaces" do
66
66
  Sys.interfaces.should_not be_blank
67
67
  end
68
-
68
+
69
69
  end