sane 0.20.3 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.20.3
1
+ 0.21.0
@@ -0,0 +1,77 @@
1
+ # stolen originally from enumerable-extra
2
+ module Enumerable
3
+ # Returns a new array containing the results of running +method+ once for
4
+ # every element in the enumerable object. If both arguments and a block
5
+ # are provided the arguments are processed first, then passed to
6
+ # the block.
7
+ #
8
+ # If no method is provided, then it behaves as the standard MRI method.
9
+ #
10
+ # Examples:
11
+ #
12
+ # array = ['foo', 'bar']
13
+ #
14
+ # # No arguments
15
+ # array.map_by(:capitalize) => ['Foo', 'Bar']
16
+ #
17
+ def map_by(method)
18
+ array = []
19
+ method = method.to_sym unless method.is_a?(Symbol)
20
+
21
+ each{ |obj|
22
+ temp = obj.send(method)
23
+ array << temp
24
+ }
25
+ array
26
+ end
27
+
28
+ # Reset the aliases
29
+ alias collect_by map_by
30
+ end
31
+
32
+ class Array
33
+ # Returns a new array containing the results of running +block+ once for
34
+ # every element in the +array+.
35
+ #
36
+ # Examples:
37
+ #
38
+ # array = ['foo', 'bar']
39
+ #
40
+ # # No arguments
41
+ # array.map_by(:capitalize) => ['Foo', 'Bar']
42
+ #
43
+ # # With arguments and a block
44
+ # array.map_by(:capitalize)
45
+ #--
46
+ # The Array class actually has its own implementation of the +map+ method,
47
+ # hence the duplication.
48
+ #
49
+ def map_by(method)
50
+ array = []
51
+ method = method.to_sym unless method.is_a?(Symbol)
52
+ each{ |obj|
53
+ temp = obj.send(method)
54
+ array << temp
55
+ }
56
+ array
57
+ end
58
+
59
+ # Same as Array#map, but modifies the receiver in place. Also note that
60
+ # a block is _not_ required. If no block is given, an array of values
61
+ # is returned instead
62
+ #
63
+ def map_by!(method)
64
+ method = method.to_sym unless method.is_a?(Symbol)
65
+ i = 0
66
+ length = self.size
67
+ while(i < length)
68
+ self[i] = self[i].send(method)
69
+ i+=1
70
+ end
71
+ self
72
+ end
73
+
74
+ # Set the aliases
75
+ alias collect_by map_by
76
+ alias collect_by! map_by!
77
+ end
data/lib/sane/pp.rb CHANGED
@@ -3,9 +3,8 @@
3
3
  module Kernel
4
4
  private
5
5
  def pp(*objs)
6
- undef :pp # avoid a warning
7
- require('pp') || load('pp.rb') # allow for them to have loaded pp before sane
6
+ require('pp')
8
7
  pp(*objs) # use the new method
9
- end
8
+ end unless respond_to? :pp
10
9
 
11
10
  end
@@ -0,0 +1,4 @@
1
+ require 'pp'
2
+ require 'rubygems'
3
+ require 'sane'
4
+ pp [1,2,3]
@@ -0,0 +1,4 @@
1
+ require 'pp'
2
+ require 'rubygems'
3
+ require 'sane'
4
+ pp [1,2,3]
@@ -0,0 +1,9 @@
1
+ class A
2
+ def go
3
+ undef :go
4
+ def go
5
+ 3
6
+ end
7
+ end
8
+ end
9
+ A.new.go
data/spec/spec.sane.rb CHANGED
@@ -1,8 +1,22 @@
1
- require 'rubygems' if RUBY_VERSION < '1.9'
2
- require File.dirname(File.expand_path( __FILE__)) + '/../lib/sane'
3
-
1
+ $:.unshift File.expand_path('../lib')
2
+ require 'rubygems'
3
+ require 'fast_require' if RUBY_VERSION >= '1.9'
4
+ require File.dirname(__FILE__) + '/../lib/sane'
4
5
  require 'spec/autorun'
5
6
 
7
+ class Object
8
+ alias :yes :should # a.yes == [3]
9
+ def yes!
10
+ self
11
+ end
12
+ end
13
+
14
+ class FalseClass
15
+ def yes!
16
+ raise 'failed' # a.true!
17
+ end
18
+ end
19
+
6
20
  describe Sane do
7
21
 
8
22
  before do
@@ -86,6 +100,10 @@ describe Sane do
86
100
  it "should allow for map_by" do
87
101
  ["1"].map_by(:to_i).should == [1]
88
102
  ["1"].collect_by(:to_i).should == [1]
103
+ a = ["1"]
104
+ a.map_by!(:to_i)
105
+ a.yes == [1]
106
+ a == [1]
89
107
  end
90
108
 
91
109
  it "should allow for contain? and include?" do
@@ -95,8 +113,8 @@ describe Sane do
95
113
  end
96
114
 
97
115
  it "should have include and contain for arrays" do
98
- assert ['a'].include?( "a" )
99
- assert ['a'].contain?( "a" )
116
+ assert ['a'].include?( "a")
117
+ assert ['a'].contain?( "a")
100
118
  end
101
119
 
102
120
  it "should have blank? and empty? for arrays and strings" do
@@ -120,6 +138,11 @@ describe Sane do
120
138
 
121
139
  it "should have an auto-loading pp method" do
122
140
  pp 1,2,3
141
+ pp 1,2,3
142
+ end
143
+
144
+ it "should work if you require 'pp' before hand" do
145
+ system("ruby -v -I../lib files/pp_before_hand.rb").should be_true
123
146
  end
124
147
 
125
148
  it "should have require_relative" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sane
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.20.3
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Pack
@@ -56,13 +56,13 @@ files:
56
56
  - lib/sane/array_select_bang.rb
57
57
  - lib/sane/bugs.rb
58
58
  - lib/sane/contain.rb
59
- - lib/sane/enumerable-extra.rb
60
59
  - lib/sane/file.rb
61
60
  - lib/sane/file_filename.rb
62
61
  - lib/sane/float.rb
63
62
  - lib/sane/hash_hashes.rb
64
63
  - lib/sane/hash_minus_hash.rb
65
64
  - lib/sane/irb_startup_options.rb
65
+ - lib/sane/map_by.rb
66
66
  - lib/sane/pp.rb
67
67
  - lib/sane/pps.rb
68
68
  - lib/sane/require_relative.rb
@@ -70,6 +70,8 @@ files:
70
70
  - lib/sane/string_blank.rb
71
71
  - lib/sane/test.rb
72
72
  - lib/sane/test/assertions.rb
73
+ - spec/files/pp_after.rb
74
+ - spec/files/pp_before_hand.rb
73
75
  - spec/go2.rb
74
76
  - spec/spec.sane.rb
75
77
  - spec/subdir/go.rb
@@ -104,6 +106,9 @@ signing_key:
104
106
  specification_version: 3
105
107
  summary: Helpers for ruby core to make it easier to work with--things that are missing from core but should arguably be there
106
108
  test_files:
109
+ - spec/files/pp_after.rb
110
+ - spec/files/pp_before_hand.rb
111
+ - spec/files/test.rb
107
112
  - spec/go2.rb
108
113
  - spec/spec.sane.rb
109
114
  - spec/subdir/go.rb
@@ -1,163 +0,0 @@
1
- module Enumerable
2
- EXTRA_VERSION = '0.1.0'
3
-
4
- alias old_map map
5
- alias old_collect collect
6
- =begin unused as it clashes with rails' own #sum
7
- apparently
8
- C:\dev\ruby\bridal>ruby test\functional\store_controller_test.rb
9
- test/functional/../test_helper
10
- C:/dev/ruby/bridal/config/../lib/sane-0.1.4/lib/enumerable-extra.rb:12:in `+': can't convert String into Array (TypeError)
11
- from C:/dev/ruby/bridal/config/../lib/sane-0.1.4/lib/enumerable-extra.rb:12:in `sum'
12
- from C:/dev/ruby/bridal/config/../lib/sane-0.1.4/lib/enumerable-extra.rb:12:in `each'
13
- from C:/dev/ruby/bridal/config/../lib/sane-0.1.4/lib/enumerable-extra.rb:12:in `sum'
14
- from C:/dev/ruby/bridal/vendor/rails/actionpack/lib/action_controller/layout.rb:189:in `layout_list'
15
-
16
- 2.1
17
-
18
- # Returns the numeric total of the elements of +enum+, using +total+ as
19
- # an accumulator (0 by default). Raises an error if any of the elements
20
- # are non-numeric.
21
- #
22
- def sum(total = 0)
23
- each{ |val| total += val }
24
- total
25
- end
26
- =end
27
-
28
- # Returns a new array containing the results of running +method+ once for
29
- # every element in the enumerable object. If both arguments and a block
30
- # are provided the arguments are processed first, then passed to
31
- # the block.
32
- #
33
- # If no method is provided, then it behaves as the standard MRI method.
34
- #
35
- # Examples:
36
- #
37
- # array = ['foo', 'bar']
38
- #
39
- # # No arguments
40
- # array.map(:capitalize) => ['Foo', 'Bar']
41
- #
42
- # # With arguments
43
- # array.map(:+, 'x') => ['foox', 'barx']
44
- #
45
- # # With arguments and a block
46
- # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
47
- #
48
- def map(method=nil, *args, &block)
49
- if method
50
- array = []
51
- method = method.to_sym unless method.is_a?(Symbol)
52
-
53
- each{ |obj|
54
- temp = obj.send(method, *args)
55
- if block
56
- array << block.call(temp)
57
- else
58
- array << temp
59
- end
60
- }
61
-
62
- array
63
- else
64
- old_map(&block)
65
- end
66
- end
67
-
68
- # Reset the aliases
69
- alias collect map
70
- end
71
-
72
- class Array
73
- alias old_map map
74
- alias old_map! map!
75
- alias old_collect collect
76
- alias old_collect! collect!
77
- #alias old_select select
78
-
79
- # Returns a new array containing the results of running +block+ once for
80
- # every element in the +array+.
81
- #
82
- # Examples:
83
- #
84
- # array = ['foo', 'bar']
85
- #
86
- # # No arguments
87
- # array.map(:capitalize) => ['Foo', 'Bar']
88
- #
89
- # # With arguments
90
- # array.map(:+, 'x') => ['foox', 'barx']
91
- #
92
- # # With arguments and a block
93
- # array.map(:capitalize){ |e| e + 'x' } => ['Foox', 'Barx']
94
- #--
95
- # The Array class actually has its own implementation of the +map+ method,
96
- # hence the duplication.
97
- #
98
- def map(method=nil, *args, &block)
99
- if method
100
- array = []
101
- method = method.to_sym unless method.is_a?(Symbol)
102
-
103
- each{ |obj|
104
- temp = obj.send(method, *args)
105
- if block
106
- array << block.call(temp)
107
- else
108
- array << temp
109
- end
110
- }
111
- array
112
- else
113
- old_map(&block)
114
- end
115
- end
116
-
117
- # Same as Array#map, but modifies the receiver in place. Also note that
118
- # a block is _not_ required. If no block is given, an array of values
119
- # is returned instead
120
- #
121
- def map!(method=nil, *args, &block)
122
- self.replace(map(method, *args, &block))
123
- end
124
-
125
- =begin
126
- def select(method=nil, condition = nil, *args, &block)
127
- array = [] unless block
128
- if method
129
- if block
130
- warn 'block ignored when arguments provided'
131
- end
132
-
133
- if condition.nil?
134
- raise 'condition must be provided if method is provided'
135
- end
136
-
137
- method = method.to_sym unless method.is_a?(Symbol)
138
-
139
- each{ |obj|
140
- if args.length > 0
141
- if obj.send(method, condition, *args)
142
- array << obj
143
- end
144
- else
145
- if obj.send(method, condition)
146
- array << obj
147
- end
148
- end
149
- }
150
-
151
- return array
152
- else
153
- old_select(&block)
154
- end
155
- end
156
- =end
157
-
158
- # Reset the aliases
159
- alias collect map
160
- alias collect! map!
161
- alias collect_by collect
162
- alias map_by map
163
- end