epitools 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.9
1
+ 0.1.10
data/epitools.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{epitools}
8
- s.version = "0.1.9"
8
+ s.version = "0.1.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["epitron"]
12
- s.date = %q{2010-07-21}
12
+ s.date = %q{2010-09-16}
13
13
  s.description = %q{Miscellaneous utility libraries to make my life easier.}
14
14
  s.email = %q{chris@ill-logic.com}
15
15
  s.extra_rdoc_files = [
@@ -54,14 +54,14 @@ Gem::Specification.new do |s|
54
54
  s.rubygems_version = %q{1.3.7}
55
55
  s.summary = %q{NOT UTILS... METILS!}
56
56
  s.test_files = [
57
- "spec/rash_spec.rb",
58
- "spec/ratio_spec.rb",
59
- "spec/metaclass_spec.rb",
60
- "spec/basetypes_spec.rb",
57
+ "spec/basetypes_spec.rb",
61
58
  "spec/lcs_spec.rb",
62
- "spec/zopen_spec.rb",
59
+ "spec/metaclass_spec.rb",
63
60
  "spec/permutations_spec.rb",
64
- "spec/spec_helper.rb"
61
+ "spec/rash_spec.rb",
62
+ "spec/ratio_spec.rb",
63
+ "spec/spec_helper.rb",
64
+ "spec/zopen_spec.rb"
65
65
  ]
66
66
 
67
67
  if s.respond_to? :specification_version then
@@ -203,7 +203,7 @@ module Enumerable
203
203
  # The same as "map", except that if an element is an Array or Enumerable, map is called
204
204
  # recursively on that element.
205
205
  #
206
- # eg: [ [1,2], [3,4] ].map_recursive{|e| e ** 2 } #=> [ [1,4], [9,16] ]
206
+ # eg: [ [1,2], [3,4] ].map_recursively{|e| e ** 2 } #=> [ [1,4], [9,16] ]
207
207
  #
208
208
  def recursive_map(*args, &block)
209
209
  map(*args) do |e|
@@ -215,8 +215,8 @@ module Enumerable
215
215
  end
216
216
  end
217
217
 
218
- alias_method :map_recursive, :recursive_map
219
218
  alias_method :map_recursively, :recursive_map
219
+ alias_method :map_recursive, :recursive_map
220
220
 
221
221
 
222
222
  #
@@ -407,23 +407,23 @@ end
407
407
 
408
408
 
409
409
 
410
- #
411
- # Magic "its" Mapping
412
- # -------------------
413
- #
414
- # The pure-Ruby way:
415
- # User.find(:all).map{|x| x.contacts.map{|y| y.last_name.capitalize }}
416
- #
417
- # With Symbol#to_proc:
418
- # User.find(:all).map{|x|x.contacts.map(&:last_name).map(&:capitalize)}
419
- #
420
- # Magic "its" way:
421
- # User.find(:all).map &its.contacts.map(&its.last_name.capitalize)
422
- #
423
-
424
410
  module Kernel
425
411
 
426
412
  protected
413
+
414
+ #
415
+ # Magic "its" Mapping
416
+ # -------------------
417
+ #
418
+ # The pure-Ruby way:
419
+ # User.find(:all).map{|x| x.contacts.map{|y| y.last_name.capitalize }}
420
+ #
421
+ # With Symbol#to_proc:
422
+ # User.find(:all).map{|x|x.contacts.map(&:last_name).map(&:capitalize)}
423
+ #
424
+ # Magic "its" way:
425
+ # User.find(:all).map &its.contacts.map(&its.last_name.capitalize)
426
+ #
427
427
  def it()
428
428
  It.new
429
429
  end
@@ -458,16 +458,6 @@ class BlankSlate
458
458
  instance_methods.each { |m| undef_method m unless m =~ /^__/ }
459
459
  end
460
460
 
461
- #
462
- # Funky #not method
463
- # -----------------
464
- #
465
- # >> 10.even?
466
- # => true
467
- # >> 10.not.even?
468
- # => false
469
- #
470
-
471
461
  class NotWrapper < BlankSlate
472
462
  def initialize(orig)
473
463
  @orig = orig
@@ -489,9 +479,19 @@ end
489
479
 
490
480
 
491
481
  class Object
482
+
483
+ #
484
+ # Negates a boolean, chained-method style:
485
+ #
486
+ # >> 10.even?
487
+ # => true
488
+ # >> 10.not.even?
489
+ # => false
490
+ #
492
491
  def not
493
492
  NotWrapper.new(self)
494
493
  end
494
+
495
495
  end
496
496
 
497
497
 
@@ -1,36 +1,39 @@
1
- # String#to_proc
2
- #
3
- # See http://weblog.raganwald.com/2007/10/stringtoproc.html
4
- #
5
- # Ported from the String Lambdas in Oliver Steele's Functional Javascript
6
- # http://osteele.com/sources/javascript/functional/
7
- #
8
- # This work is licensed under the MIT License:
9
- #
10
- # (c) 2007 Reginald Braithwaite
11
- # Portions Copyright (c) 2006 Oliver Steele
12
- #
13
- # Permission is hereby granted, free of charge, to any person obtaining
14
- # a copy of this software and associated documentation files (the
15
- # "Software"), to deal in the Software without restriction, including
16
- # without limitation the rights to use, copy, modify, merge, publish,
17
- # distribute, sublicense, and/or sell copies of the Software, and to
18
- # permit persons to whom the Software is furnished to do so, subject to
19
- # the following conditions:
20
- #
21
- # The above copyright notice and this permission notice shall be
22
- # included in all copies or substantial portions of the Software.
23
- #
24
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
-
32
1
  class String
2
+
33
3
  unless public_method_defined? :to_proc
4
+
5
+ #
6
+ # String#to_proc
7
+ #
8
+ # See http://weblog.raganwald.com/2007/10/stringtoproc.html
9
+ #
10
+ # Ported from the String Lambdas in Oliver Steele's Functional Javascript
11
+ # http://osteele.com/sources/javascript/functional/
12
+ #
13
+ # This work is licensed under the MIT License:
14
+ #
15
+ # (c) 2007 Reginald Braithwaite
16
+ # Portions Copyright (c) 2006 Oliver Steele
17
+ #
18
+ # Permission is hereby granted, free of charge, to any person obtaining
19
+ # a copy of this software and associated documentation files (the
20
+ # "Software"), to deal in the Software without restriction, including
21
+ # without limitation the rights to use, copy, modify, merge, publish,
22
+ # distribute, sublicense, and/or sell copies of the Software, and to
23
+ # permit persons to whom the Software is furnished to do so, subject to
24
+ # the following conditions:
25
+ #
26
+ # The above copyright notice and this permission notice shall be
27
+ # included in all copies or substantial portions of the Software.
28
+ #
29
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
30
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
31
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
32
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
33
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
34
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
35
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36
+ #
34
37
  def to_proc &block
35
38
  params = []
36
39
  expr = self
@@ -63,9 +66,13 @@ class String
63
66
  eval_block("Proc.new { |#{params.join(', ')}| #{expr} }", block)
64
67
  end
65
68
  end
69
+
66
70
  private
71
+
67
72
  def eval_block(code, block)
68
73
  eval code, block && block.binding
69
74
  end
70
- end
75
+
76
+ end # unless public_method_defined? :to_proc
77
+
71
78
  end
@@ -60,17 +60,10 @@ describe Integer do
60
60
  it "integer?" do
61
61
 
62
62
  {
63
- nil => false,
64
- "123" => true,
65
- "000" => true,
66
- 123 => true,
67
- 123.45 => true,
68
- "123asdf" => false,
69
- "asdfasdf" => false,
70
- Object.new => false,
71
-
72
- }.each do |object, expected_result|
73
- object.integer?.should == expected_result
63
+ true => [ "123", "000", 123, 123.45 ],
64
+ false => [ "123asdf", "asdfasdf", Object.new, nil ]
65
+ }.each do |expected_result, objects|
66
+ objects.each { |object| object.integer?.should == expected_result }
74
67
  end
75
68
 
76
69
  end
@@ -97,11 +90,11 @@ end
97
90
  describe Enumerable do
98
91
 
99
92
  it "splits" do
100
- [1,2,3,4,5].split_at{|e| e == 3}.should == [[1,2],[4,5]]
101
- [1,2,3,4,5].split_after{|e| e == 3}.should == [[1,2,3],[4,5]]
102
- [1,2,3,4,5].split_before{|e| e == 3}.should == [[1,2],[3,4,5]]
93
+ [1,2,3,4,5].split_at {|e| e == 3}.should == [ [1,2], [4,5] ]
94
+ [1,2,3,4,5].split_after {|e| e == 3}.should == [ [1,2,3], [4,5] ]
95
+ [1,2,3,4,5].split_before {|e| e == 3}.should == [ [1,2], [3,4,5] ]
103
96
 
104
- "a\nb\n---\nc\nd\n".split_at(/---/).map_recursive(&:strip).should == [ %w[a b], %w[c d] ]
97
+ "a\nb\n---\nc\nd\n".split_at(/---/).map_recursively(&:strip).should == [ %w[a b], %w[c d] ]
105
98
  end
106
99
 
107
100
  it "handles nested things" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epitools
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 9
10
- version: 0.1.9
9
+ - 10
10
+ version: 0.1.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - epitron
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-21 00:00:00 -04:00
18
+ date: 2010-09-16 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -109,11 +109,11 @@ signing_key:
109
109
  specification_version: 3
110
110
  summary: NOT UTILS... METILS!
111
111
  test_files:
112
- - spec/rash_spec.rb
113
- - spec/ratio_spec.rb
114
- - spec/metaclass_spec.rb
115
112
  - spec/basetypes_spec.rb
116
113
  - spec/lcs_spec.rb
117
- - spec/zopen_spec.rb
114
+ - spec/metaclass_spec.rb
118
115
  - spec/permutations_spec.rb
116
+ - spec/rash_spec.rb
117
+ - spec/ratio_spec.rb
119
118
  - spec/spec_helper.rb
119
+ - spec/zopen_spec.rb