visionmedia-rext 0.1.0 → 0.2.1
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.
- data/History.rdoc +14 -0
- data/Manifest +0 -3
- data/README.rdoc +6 -6
- data/lib/rext/array/helpers.rb +6 -6
- data/lib/rext/enumerable/helpers.rb +16 -1
- data/lib/rext/module/helpers.rb +25 -0
- data/lib/rext/numeric/bytes.rb +5 -5
- data/lib/rext/object/helpers.rb +20 -0
- data/lib/rext/string/helpers.rb +2 -2
- data/lib/rext/version.rb +1 -1
- data/rext.gemspec +5 -6
- data/spec/enumerable_spec.rb +24 -15
- data/spec/module_spec.rb +18 -0
- data/spec/numeric_spec.rb +10 -0
- data/spec/object_spec.rb +16 -0
- metadata +3 -8
- data/lib/rext/compat/basic_object.rb +0 -16
- data/lib/rext/compat.rb +0 -6
- data/spec/compat_spec.rb +0 -28
data/History.rdoc
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
|
2
|
+
=== 0.2.1 / 2009-06-10
|
3
|
+
|
4
|
+
* Removed BasicObject due to compatibility issues with other libraries
|
5
|
+
|
6
|
+
=== 0.2.0 / 2009-06-10
|
7
|
+
|
8
|
+
* Added Enumerable#includes_all?
|
9
|
+
|
10
|
+
=== 0.1.1 / 2009-06-10
|
11
|
+
|
12
|
+
* Removed sketchy BasicObject #method_added hack for now
|
13
|
+
* Added Module#setup
|
14
|
+
* Added / Implemented Object#returning
|
15
|
+
|
2
16
|
=== 0.1.0 / 2009-05-04
|
3
17
|
|
4
18
|
* Added Module#call_method
|
data/Manifest
CHANGED
@@ -4,8 +4,6 @@ History.rdoc
|
|
4
4
|
lib/rext/all.rb
|
5
5
|
lib/rext/array/helpers.rb
|
6
6
|
lib/rext/array.rb
|
7
|
-
lib/rext/compat/basic_object.rb
|
8
|
-
lib/rext/compat.rb
|
9
7
|
lib/rext/date/helpers.rb
|
10
8
|
lib/rext/date.rb
|
11
9
|
lib/rext/enumerable/helpers.rb
|
@@ -36,7 +34,6 @@ Rakefile
|
|
36
34
|
README.rdoc
|
37
35
|
rext.gemspec
|
38
36
|
spec/array_spec.rb
|
39
|
-
spec/compat_spec.rb
|
40
37
|
spec/date_spec.rb
|
41
38
|
spec/enumerable_spec.rb
|
42
39
|
spec/hash_spec.rb
|
data/README.rdoc
CHANGED
@@ -37,6 +37,7 @@ Below are the methods currently provided by Rext.
|
|
37
37
|
- meta_def
|
38
38
|
- meta_eval
|
39
39
|
- indifferent_hash
|
40
|
+
- returning
|
40
41
|
|
41
42
|
* String
|
42
43
|
- url_encode
|
@@ -60,6 +61,8 @@ Below are the methods currently provided by Rext.
|
|
60
61
|
- files
|
61
62
|
- path
|
62
63
|
- switchify
|
64
|
+
- word_frequency
|
65
|
+
- frequency_of_word
|
63
66
|
|
64
67
|
* Integer
|
65
68
|
- ordanalize
|
@@ -84,18 +87,15 @@ Below are the methods currently provided by Rext.
|
|
84
87
|
|
85
88
|
* Module
|
86
89
|
- chain
|
90
|
+
- call_method
|
87
91
|
|
88
92
|
* Proc
|
89
93
|
- yield_or_eval
|
90
94
|
|
91
95
|
* Enumerable
|
92
96
|
- group_by
|
93
|
-
-
|
94
|
-
|
95
|
-
== Compatibility
|
96
|
-
|
97
|
-
Rext provides methods which support Ruby 1.8.x and 1.9.x, as
|
98
|
-
well as forward compatibility for features such as BasicObject.
|
97
|
+
- includes_all?
|
98
|
+
- every
|
99
99
|
|
100
100
|
== Contrib
|
101
101
|
|
data/lib/rext/array/helpers.rb
CHANGED
@@ -51,13 +51,13 @@ class Array
|
|
51
51
|
#
|
52
52
|
|
53
53
|
def chunk n, pad_with = nil, &block
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
returning [] do |chunks|
|
55
|
+
each_slice n do |chunk|
|
56
|
+
chunk.pad n, pad_with unless pad_with == false
|
57
|
+
yield chunk if block
|
58
|
+
chunks << chunk
|
59
|
+
end
|
59
60
|
end
|
60
|
-
chunks
|
61
61
|
end
|
62
62
|
alias :in_groups_of :chunk
|
63
63
|
|
@@ -20,7 +20,9 @@ module Enumerable
|
|
20
20
|
# * Enumerable#proxy
|
21
21
|
#
|
22
22
|
|
23
|
-
class Proxy
|
23
|
+
class Proxy
|
24
|
+
instance_methods.each { |m| undef_method m unless m.match(/^__/) }
|
25
|
+
|
24
26
|
def initialize object, meth
|
25
27
|
@object, @method = object, meth
|
26
28
|
end
|
@@ -71,4 +73,17 @@ module Enumerable
|
|
71
73
|
block ? proxy(:map).instance_eval(&block) : proxy(:map)
|
72
74
|
end
|
73
75
|
|
76
|
+
##
|
77
|
+
# Check if all +args+ are included.
|
78
|
+
#
|
79
|
+
# === Examples
|
80
|
+
#
|
81
|
+
# permissions = 'save', 'edit', 'delete'
|
82
|
+
# permissions.includes_all? 'save', 'edit' # => true
|
83
|
+
#
|
84
|
+
|
85
|
+
def includes_all? *args
|
86
|
+
args.all? { |arg| include? arg }
|
87
|
+
end
|
88
|
+
|
74
89
|
end
|
data/lib/rext/module/helpers.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
|
2
|
+
require 'rext/object/metaclass'
|
3
|
+
|
2
4
|
class Module
|
3
5
|
|
4
6
|
##
|
@@ -50,4 +52,27 @@ class Module
|
|
50
52
|
}
|
51
53
|
end
|
52
54
|
|
55
|
+
##
|
56
|
+
# Equivalent to defining self.included and
|
57
|
+
# instance evaluating the module passed.
|
58
|
+
#
|
59
|
+
# === Examples
|
60
|
+
#
|
61
|
+
# def self.included mod
|
62
|
+
# mod.instance_eval do
|
63
|
+
# include InstanceMethods
|
64
|
+
# end
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# setup do
|
68
|
+
# include InstanceMethods
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
|
72
|
+
def setup &block
|
73
|
+
meta_def :included do |mod|
|
74
|
+
mod.instance_eval &block
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
53
78
|
end
|
data/lib/rext/numeric/bytes.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
|
2
2
|
class Numeric
|
3
3
|
|
4
|
-
def bytes;
|
5
|
-
def kilobytes; self
|
6
|
-
def megabytes; self
|
7
|
-
def gigabytes; self
|
8
|
-
def terabytes; self
|
4
|
+
def bytes; self end
|
5
|
+
def kilobytes; self << 10 end
|
6
|
+
def megabytes; self << 20 end
|
7
|
+
def gigabytes; self << 30 end
|
8
|
+
def terabytes; self << 40 end
|
9
9
|
|
10
10
|
alias :byte :bytes
|
11
11
|
alias :kilobyte :kilobytes
|
data/lib/rext/object/helpers.rb
CHANGED
@@ -18,4 +18,24 @@ class Object
|
|
18
18
|
Hash.new { |hash, key| hash[key.to_s] if key.is_a? Symbol }
|
19
19
|
end
|
20
20
|
|
21
|
+
##
|
22
|
+
# Yield and return +value+.
|
23
|
+
#
|
24
|
+
# === Examples
|
25
|
+
#
|
26
|
+
# people = []
|
27
|
+
# people << 'tj'
|
28
|
+
# people << 'foo'
|
29
|
+
#
|
30
|
+
# returning [] do |people|
|
31
|
+
# people << 'tj'
|
32
|
+
# people << 'foo'
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
|
36
|
+
def returning value, &block
|
37
|
+
yield value
|
38
|
+
value
|
39
|
+
end
|
40
|
+
|
21
41
|
end
|
data/lib/rext/string/helpers.rb
CHANGED
@@ -249,6 +249,8 @@ class String
|
|
249
249
|
word_frequency[word]
|
250
250
|
end
|
251
251
|
|
252
|
+
class InvalidSwitchError < StandardError; end
|
253
|
+
|
252
254
|
##
|
253
255
|
# Returns the switch equivilant of this string.
|
254
256
|
#
|
@@ -260,8 +262,6 @@ class String
|
|
260
262
|
# ''.switchify # => InvalidSwitchError
|
261
263
|
#
|
262
264
|
|
263
|
-
class InvalidSwitchError < StandardError; end
|
264
|
-
|
265
265
|
def switchify
|
266
266
|
raise InvalidSwitchError, 'switch must have a length > 0' if length.zero?
|
267
267
|
length > 1 ? "--#{dasherize}" : "-#{self}"
|
data/lib/rext/version.rb
CHANGED
data/rext.gemspec
CHANGED
@@ -2,21 +2,20 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rext}
|
5
|
-
s.version = "0.1
|
5
|
+
s.version = "0.2.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["TJ Holowaychuk"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-06-10}
|
10
10
|
s.description = %q{Ruby extensions}
|
11
11
|
s.email = %q{tj@vision-media.ca}
|
12
|
-
s.extra_rdoc_files = ["lib/rext/all.rb", "lib/rext/array/helpers.rb", "lib/rext/array.rb", "lib/rext/
|
13
|
-
s.files = ["benchmarks/enumerable.rb", "benchmarks/proc.rb", "History.rdoc", "lib/rext/all.rb", "lib/rext/array/helpers.rb", "lib/rext/array.rb", "lib/rext/
|
14
|
-
s.has_rdoc = true
|
12
|
+
s.extra_rdoc_files = ["lib/rext/all.rb", "lib/rext/array/helpers.rb", "lib/rext/array.rb", "lib/rext/date/helpers.rb", "lib/rext/date.rb", "lib/rext/enumerable/helpers.rb", "lib/rext/enumerable.rb", "lib/rext/hash/helpers.rb", "lib/rext/hash.rb", "lib/rext/integer/helpers.rb", "lib/rext/integer.rb", "lib/rext/module/helpers.rb", "lib/rext/module.rb", "lib/rext/numeric/bytes.rb", "lib/rext/numeric/time.rb", "lib/rext/numeric.rb", "lib/rext/object/helpers.rb", "lib/rext/object/metaclass.rb", "lib/rext/object.rb", "lib/rext/proc/helpers.rb", "lib/rext/proc.rb", "lib/rext/string/escape.rb", "lib/rext/string/helpers.rb", "lib/rext/string.rb", "lib/rext/time/helpers.rb", "lib/rext/time.rb", "lib/rext/version.rb", "lib/rext.rb", "README.rdoc", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
|
13
|
+
s.files = ["benchmarks/enumerable.rb", "benchmarks/proc.rb", "History.rdoc", "lib/rext/all.rb", "lib/rext/array/helpers.rb", "lib/rext/array.rb", "lib/rext/date/helpers.rb", "lib/rext/date.rb", "lib/rext/enumerable/helpers.rb", "lib/rext/enumerable.rb", "lib/rext/hash/helpers.rb", "lib/rext/hash.rb", "lib/rext/integer/helpers.rb", "lib/rext/integer.rb", "lib/rext/module/helpers.rb", "lib/rext/module.rb", "lib/rext/numeric/bytes.rb", "lib/rext/numeric/time.rb", "lib/rext/numeric.rb", "lib/rext/object/helpers.rb", "lib/rext/object/metaclass.rb", "lib/rext/object.rb", "lib/rext/proc/helpers.rb", "lib/rext/proc.rb", "lib/rext/string/escape.rb", "lib/rext/string/helpers.rb", "lib/rext/string.rb", "lib/rext/time/helpers.rb", "lib/rext/time.rb", "lib/rext/version.rb", "lib/rext.rb", "Manifest", "Rakefile", "README.rdoc", "rext.gemspec", "spec/array_spec.rb", "spec/date_spec.rb", "spec/enumerable_spec.rb", "spec/hash_spec.rb", "spec/integer_spec.rb", "spec/module_spec.rb", "spec/numeric_spec.rb", "spec/object_spec.rb", "spec/spec_helper.rb", "spec/string_spec.rb", "spec/time_spec.rb", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
|
15
14
|
s.homepage = %q{http://github.com/visionmedia/rext}
|
16
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rext", "--main", "README.rdoc"]
|
17
16
|
s.require_paths = ["lib"]
|
18
17
|
s.rubyforge_project = %q{rext}
|
19
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.4}
|
20
19
|
s.summary = %q{Ruby extensions}
|
21
20
|
|
22
21
|
if s.respond_to? :specification_version then
|
data/spec/enumerable_spec.rb
CHANGED
@@ -2,22 +2,18 @@
|
|
2
2
|
require 'rext/enumerable'
|
3
3
|
|
4
4
|
describe Enumerable do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
describe "helpers" do
|
6
|
+
describe "#includes_all?" do
|
7
|
+
it "should return true when all arguments are present" do
|
8
|
+
[1,2,3].includes_all?(1,2).should be_true
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return true when not all arguments are present" do
|
12
|
+
[1,1,3,3,4].includes_all?(1,3,6).should be_false
|
13
|
+
[1,1,3,3,4].includes_all?(6,3,1).should be_false
|
14
|
+
end
|
10
15
|
end
|
11
16
|
|
12
|
-
it "should allow mapping shortcuts using a block" do
|
13
|
-
people = []
|
14
|
-
people << mock('Person', :name => 'TJ')
|
15
|
-
people << mock('Person', :name => 'Scott')
|
16
|
-
people.every { name.length }.should == [2, 5]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "helpers" do
|
21
17
|
describe "#group_by" do
|
22
18
|
before :each do
|
23
19
|
@enum = 'foo', :bar, 1, 2, 3
|
@@ -40,6 +36,19 @@ describe Enumerable do
|
|
40
36
|
@enum.group_by.class.should == @results
|
41
37
|
end
|
42
38
|
end
|
39
|
+
|
40
|
+
describe "#every" do
|
41
|
+
it "should map a method call" do
|
42
|
+
list = %w( cookies icecream sugar )
|
43
|
+
list.every.length.should == [7, 8 ,5]
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should allow mapping shortcuts using a block" do
|
47
|
+
people = []
|
48
|
+
people << mock('Person', :name => 'TJ')
|
49
|
+
people << mock('Person', :name => 'Scott')
|
50
|
+
people.every { name.length }.should == [2, 5]
|
51
|
+
end
|
52
|
+
end
|
43
53
|
end
|
44
|
-
|
45
54
|
end
|
data/spec/module_spec.rb
CHANGED
@@ -18,5 +18,23 @@ describe Module do
|
|
18
18
|
lambda { foo.does_not_exist }.should raise_error(NoMethodError)
|
19
19
|
end
|
20
20
|
end
|
21
|
+
|
22
|
+
describe "#setup" do
|
23
|
+
it "should define included instance evaluated in context to the module passed" do
|
24
|
+
module BarFoo
|
25
|
+
setup do
|
26
|
+
include InstanceMethods
|
27
|
+
end
|
28
|
+
|
29
|
+
module InstanceMethods
|
30
|
+
def bar_foo
|
31
|
+
'wahoo'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
FooBar.send :include, BarFoo
|
36
|
+
FooBar.new.bar_foo.should == 'wahoo'
|
37
|
+
end
|
38
|
+
end
|
21
39
|
end
|
22
40
|
end
|
data/spec/numeric_spec.rb
CHANGED
@@ -17,4 +17,14 @@ describe Numeric do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
describe "bytes" do
|
22
|
+
it "should return bytes, kilobytes, megabytes, gigabytes, and terabytes" do
|
23
|
+
5.bytes.should == 5
|
24
|
+
5.kilobytes.should == 5120
|
25
|
+
5.megabytes.should == 5242880
|
26
|
+
5.gigabytes.should == 5368709120
|
27
|
+
5.terabytes.should == 5497558138880
|
28
|
+
end
|
29
|
+
end
|
20
30
|
end
|
data/spec/object_spec.rb
CHANGED
@@ -50,4 +50,20 @@ describe Object do
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
53
|
+
|
54
|
+
describe "#returning" do
|
55
|
+
it "should return the value given to it" do
|
56
|
+
def frequency_of enum
|
57
|
+
returning Hash.new(0) do |hash|
|
58
|
+
enum.each do |value|
|
59
|
+
hash[value] += 1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
frequency_of(%w( foo bar foo foo )).should == {
|
64
|
+
'foo' => 3,
|
65
|
+
'bar' => 1,
|
66
|
+
}
|
67
|
+
end
|
68
|
+
end
|
53
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: visionmedia-rext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TJ Holowaychuk
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-06-10 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -23,8 +23,6 @@ extra_rdoc_files:
|
|
23
23
|
- lib/rext/all.rb
|
24
24
|
- lib/rext/array/helpers.rb
|
25
25
|
- lib/rext/array.rb
|
26
|
-
- lib/rext/compat/basic_object.rb
|
27
|
-
- lib/rext/compat.rb
|
28
26
|
- lib/rext/date/helpers.rb
|
29
27
|
- lib/rext/date.rb
|
30
28
|
- lib/rext/enumerable/helpers.rb
|
@@ -62,8 +60,6 @@ files:
|
|
62
60
|
- lib/rext/all.rb
|
63
61
|
- lib/rext/array/helpers.rb
|
64
62
|
- lib/rext/array.rb
|
65
|
-
- lib/rext/compat/basic_object.rb
|
66
|
-
- lib/rext/compat.rb
|
67
63
|
- lib/rext/date/helpers.rb
|
68
64
|
- lib/rext/date.rb
|
69
65
|
- lib/rext/enumerable/helpers.rb
|
@@ -94,7 +90,6 @@ files:
|
|
94
90
|
- README.rdoc
|
95
91
|
- rext.gemspec
|
96
92
|
- spec/array_spec.rb
|
97
|
-
- spec/compat_spec.rb
|
98
93
|
- spec/date_spec.rb
|
99
94
|
- spec/enumerable_spec.rb
|
100
95
|
- spec/hash_spec.rb
|
@@ -109,7 +104,7 @@ files:
|
|
109
104
|
- tasks/docs.rake
|
110
105
|
- tasks/gemspec.rake
|
111
106
|
- tasks/spec.rake
|
112
|
-
has_rdoc:
|
107
|
+
has_rdoc: false
|
113
108
|
homepage: http://github.com/visionmedia/rext
|
114
109
|
post_install_message:
|
115
110
|
rdoc_options:
|
@@ -1,16 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'rext/module/helpers'
|
3
|
-
|
4
|
-
class BasicObject
|
5
|
-
instance_methods.each { |m| undef_method m unless m.match(/^__/) }
|
6
|
-
end
|
7
|
-
|
8
|
-
module RemoveBasicObjectMethods
|
9
|
-
def method_added name
|
10
|
-
BasicObject.send :undef_method, name if self == Object
|
11
|
-
super
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
Object.extend RemoveBasicObjectMethods
|
16
|
-
Kernel.extend RemoveBasicObjectMethods
|
data/lib/rext/compat.rb
DELETED
data/spec/compat_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'rext/compat'
|
3
|
-
|
4
|
-
describe Rext do
|
5
|
-
describe "compatibility" do
|
6
|
-
describe BasicObject do
|
7
|
-
|
8
|
-
before :each do
|
9
|
-
@object = BasicObject.new
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should have no methods" do
|
13
|
-
lambda { @object.send }.should raise_error(NoMethodError)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should preserve __* methods" do
|
17
|
-
lambda { @object.__send__ }.should_not raise_error(NoMethodError)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should now allow additional ancestor methods to be accessed" do
|
21
|
-
module Kernel; def foo; end end
|
22
|
-
class Object; def foo; end end
|
23
|
-
lambda { @object.foo }.should raise_error(NoMethodError)
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|