visionmedia-rext 0.2.2 → 0.3.0
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 +6 -0
- data/Manifest +2 -1
- data/README.rdoc +3 -0
- data/lib/rext/object/helpers.rb +21 -0
- data/lib/rext/string.rb +1 -1
- data/lib/rext/string/encode.rb +80 -0
- data/lib/rext/string/helpers.rb +2 -24
- data/lib/rext/version.rb +1 -1
- data/rext.gemspec +5 -5
- data/spec/array_spec.rb +1 -0
- data/spec/date_spec.rb +1 -0
- data/spec/enumerable_spec.rb +1 -0
- data/spec/hash_spec.rb +2 -1
- data/spec/integer_spec.rb +1 -0
- data/spec/module_spec.rb +1 -0
- data/spec/numeric_spec.rb +1 -0
- data/spec/object_spec.rb +32 -0
- data/spec/spec.opts +1 -0
- data/spec/string_spec.rb +32 -14
- data/spec/time_spec.rb +1 -0
- metadata +7 -5
- data/lib/rext/string/escape.rb +0 -32
data/History.rdoc
CHANGED
data/Manifest
CHANGED
@@ -22,7 +22,7 @@ lib/rext/object/metaclass.rb
|
|
22
22
|
lib/rext/object.rb
|
23
23
|
lib/rext/proc/helpers.rb
|
24
24
|
lib/rext/proc.rb
|
25
|
-
lib/rext/string/
|
25
|
+
lib/rext/string/encode.rb
|
26
26
|
lib/rext/string/helpers.rb
|
27
27
|
lib/rext/string.rb
|
28
28
|
lib/rext/time/helpers.rb
|
@@ -41,6 +41,7 @@ spec/integer_spec.rb
|
|
41
41
|
spec/module_spec.rb
|
42
42
|
spec/numeric_spec.rb
|
43
43
|
spec/object_spec.rb
|
44
|
+
spec/spec.opts
|
44
45
|
spec/spec_helper.rb
|
45
46
|
spec/string_spec.rb
|
46
47
|
spec/time_spec.rb
|
data/README.rdoc
CHANGED
@@ -38,6 +38,7 @@ Below are the methods currently provided by Rext.
|
|
38
38
|
- meta_eval
|
39
39
|
- indifferent_hash
|
40
40
|
- returning
|
41
|
+
- try
|
41
42
|
|
42
43
|
* String
|
43
44
|
- url_encode
|
@@ -63,6 +64,8 @@ Below are the methods currently provided by Rext.
|
|
63
64
|
- switchify
|
64
65
|
- word_frequency
|
65
66
|
- frequency_of_word
|
67
|
+
- to_md5
|
68
|
+
- to_sha512
|
66
69
|
|
67
70
|
* Integer
|
68
71
|
- ordanalize
|
data/lib/rext/object/helpers.rb
CHANGED
@@ -38,4 +38,25 @@ class Object
|
|
38
38
|
value
|
39
39
|
end
|
40
40
|
|
41
|
+
##
|
42
|
+
# Retry a _block_ of statements upto a number of _times_.
|
43
|
+
# When no error is raised the value returned by _block_ is
|
44
|
+
# simply returned.
|
45
|
+
#
|
46
|
+
# === Examples
|
47
|
+
#
|
48
|
+
# try 3 do
|
49
|
+
# open 'http://vision-media.ca'
|
50
|
+
# end
|
51
|
+
# # => allows 3 tries to fetch the response
|
52
|
+
#
|
53
|
+
|
54
|
+
def try times = 1, options = {}, &block
|
55
|
+
val = yield
|
56
|
+
rescue options[:on] || Exception
|
57
|
+
retry if (times -= 1) > 0
|
58
|
+
else
|
59
|
+
val
|
60
|
+
end
|
61
|
+
|
41
62
|
end
|
data/lib/rext/string.rb
CHANGED
@@ -0,0 +1,80 @@
|
|
1
|
+
|
2
|
+
require 'rack'
|
3
|
+
|
4
|
+
class String
|
5
|
+
|
6
|
+
##
|
7
|
+
# Return 32 character md5 string.
|
8
|
+
#
|
9
|
+
# === Examples
|
10
|
+
#
|
11
|
+
# 'test'.to_md5 # => 098f6bcd4621d373cade4e832627b4f6
|
12
|
+
#
|
13
|
+
|
14
|
+
def to_md5
|
15
|
+
Digest::MD5.hexdigest self
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Return 128 character sha512 string.
|
20
|
+
#
|
21
|
+
# === Examples
|
22
|
+
#
|
23
|
+
# 'test'.to_sha512 # => ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff
|
24
|
+
#
|
25
|
+
|
26
|
+
def to_sha512
|
27
|
+
Digest::SHA512.hexdigest self
|
28
|
+
end
|
29
|
+
|
30
|
+
##
|
31
|
+
# Return Base 64 decoded string.
|
32
|
+
#
|
33
|
+
# === Examples
|
34
|
+
#
|
35
|
+
# 'Y29va2llcw=='.base64_decode # => cookies
|
36
|
+
#
|
37
|
+
|
38
|
+
def base64_decode
|
39
|
+
unpack('m').first
|
40
|
+
end
|
41
|
+
|
42
|
+
##
|
43
|
+
# Return Base 64 encoded string.
|
44
|
+
#
|
45
|
+
# === Examples
|
46
|
+
#
|
47
|
+
# 'cookies'.base64_encode # => Y29va2llcw==
|
48
|
+
#
|
49
|
+
|
50
|
+
def base64_encode
|
51
|
+
[self].pack('m').chop
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# URL encode. Shortcut for Rack::Utils.encode.
|
56
|
+
|
57
|
+
def url_encode
|
58
|
+
Rack::Utils.escape self
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# URL decode. Shortcut for Rack::Utils.unescape.
|
63
|
+
|
64
|
+
def url_decode
|
65
|
+
Rack::Utils.unescape self
|
66
|
+
end
|
67
|
+
|
68
|
+
##
|
69
|
+
# Escape html entities. Shortcut for Rack::Utils.escape_html.
|
70
|
+
#
|
71
|
+
# === Examples
|
72
|
+
#
|
73
|
+
# 'im <strong>strong</strong>.escape_html # => im <strong>strong</strong>
|
74
|
+
#
|
75
|
+
|
76
|
+
def escape_html
|
77
|
+
Rack::Utils.escape_html self
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
data/lib/rext/string/helpers.rb
CHANGED
@@ -1,32 +1,10 @@
|
|
1
1
|
|
2
2
|
require 'extlib'
|
3
|
+
require 'digest/sha2'
|
4
|
+
require 'digest/md5'
|
3
5
|
|
4
6
|
class String
|
5
7
|
|
6
|
-
##
|
7
|
-
# Return Base 64 decoded string.
|
8
|
-
#
|
9
|
-
# === Examples
|
10
|
-
#
|
11
|
-
# 'Y29va2llcw=='.base64_decode # => cookies
|
12
|
-
#
|
13
|
-
|
14
|
-
def base64_decode
|
15
|
-
unpack('m').first
|
16
|
-
end
|
17
|
-
|
18
|
-
##
|
19
|
-
# Return Base 64 encoded string.
|
20
|
-
#
|
21
|
-
# === Examples
|
22
|
-
#
|
23
|
-
# 'cookies'.base64_encode # => Y29va2llcw==
|
24
|
-
#
|
25
|
-
|
26
|
-
def base64_encode
|
27
|
-
[self].pack('m').chop
|
28
|
-
end
|
29
|
-
|
30
8
|
##
|
31
9
|
# Returns a File instance.
|
32
10
|
#
|
data/lib/rext/version.rb
CHANGED
data/rext.gemspec
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rext}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.3.0"
|
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-08-11}
|
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/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/
|
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/
|
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/encode.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/encode.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.opts", "spec/spec_helper.rb", "spec/string_spec.rb", "spec/time_spec.rb", "tasks/benchmark.rake", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
|
14
14
|
s.homepage = %q{http://github.com/visionmedia/rext}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rext", "--main", "README.rdoc"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{rext}
|
18
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.5}
|
19
19
|
s.summary = %q{Ruby extensions}
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
data/spec/array_spec.rb
CHANGED
data/spec/date_spec.rb
CHANGED
data/spec/enumerable_spec.rb
CHANGED
data/spec/hash_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
3
|
require 'rext/hash'
|
3
4
|
|
4
5
|
describe Hash do
|
@@ -20,7 +21,7 @@ describe Hash do
|
|
20
21
|
end
|
21
22
|
|
22
23
|
it "should stringify numbers and symbols" do
|
23
|
-
{ :interval => 15, :icon => :jpeg }.switchify.should == ['--
|
24
|
+
{ :interval => 15, :icon => :jpeg }.switchify.sort.should == ['--icon', '--interval', '15', 'jpeg']
|
24
25
|
end
|
25
26
|
|
26
27
|
it "should work with little switches" do
|
data/spec/integer_spec.rb
CHANGED
data/spec/module_spec.rb
CHANGED
data/spec/numeric_spec.rb
CHANGED
data/spec/object_spec.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
3
|
require 'rext/object'
|
3
4
|
|
4
5
|
describe Object do
|
@@ -51,6 +52,37 @@ describe Object do
|
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
55
|
+
describe "#try" do
|
56
|
+
it "should try the block once with no args" do
|
57
|
+
times = 0
|
58
|
+
try { times += 1 }
|
59
|
+
times.should == 1
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should try the block multiple times when failing" do
|
63
|
+
times = 0
|
64
|
+
try(3) { times += 1; raise 'foo' }
|
65
|
+
times.should == 3
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should try the block one time when succesful" do
|
69
|
+
times = 0
|
70
|
+
try(3) { times += 1 }
|
71
|
+
times.should == 1
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return the value returned by the block" do
|
75
|
+
val = try(3) { 'test' }
|
76
|
+
val.should == 'test'
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should allow specific exceptions to be rescued" do
|
80
|
+
lambda { try(3){ raise ArgumentError, 'foo' } }.should_not raise_error
|
81
|
+
lambda { try(3, :on => ArgumentError){ raise ArgumentError, 'foo' } }.should_not raise_error
|
82
|
+
lambda { try(3, :on => TypeError){ raise ArgumentError, 'foo' } }.should raise_error(ArgumentError)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
54
86
|
describe "#returning" do
|
55
87
|
it "should return the value given to it" do
|
56
88
|
def frequency_of enum
|
data/spec/spec.opts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/spec/string_spec.rb
CHANGED
@@ -1,9 +1,40 @@
|
|
1
1
|
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
3
|
require 'rext/string'
|
3
4
|
|
4
5
|
describe String do
|
5
|
-
describe "
|
6
|
+
describe "encode" do
|
7
|
+
describe "#to_md5" do
|
8
|
+
it "should return an md5 hash" do
|
9
|
+
'test'.to_md5.should == '098f6bcd4621d373cade4e832627b4f6'
|
10
|
+
'test'.to_md5.should == 'test'.to_md5
|
11
|
+
'test'.to_md5.should_not == 'tests'.to_md5
|
12
|
+
end
|
13
|
+
end
|
6
14
|
|
15
|
+
describe "#to_sha512" do
|
16
|
+
it "should return an md5 hash" do
|
17
|
+
'test'.to_sha512.should == 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff'
|
18
|
+
'test'.to_sha512.should == 'test'.to_sha512
|
19
|
+
'test'.to_sha512.should_not == 'tests'.to_sha512
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#base64_encode" do
|
24
|
+
it "should base64 encode a string" do
|
25
|
+
'tj'.base64_encode.should == 'dGo='
|
26
|
+
"foo \n bar\n\n".base64_encode.base64_decode.should == "foo \n bar\n\n"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#base64_decode" do
|
31
|
+
it "should decode a base64 string" do
|
32
|
+
'dGo='.base64_decode.should == 'tj'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "helpers" do
|
7
38
|
describe "#word_frequency" do
|
8
39
|
it "should return a hash with word keys and count values" do
|
9
40
|
'mm i love cookies mm'.word_frequency.
|
@@ -38,19 +69,6 @@ describe String do
|
|
38
69
|
end
|
39
70
|
end
|
40
71
|
|
41
|
-
describe "#base64_encode" do
|
42
|
-
it "should base64 encode a string" do
|
43
|
-
'tj'.base64_encode.should == 'dGo='
|
44
|
-
"foo \n bar\n\n".base64_encode.base64_decode.should == "foo \n bar\n\n"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "#base64_decode" do
|
49
|
-
it "should decode a base64 string" do
|
50
|
-
'dGo='.base64_decode.should == 'tj'
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
72
|
describe "#path" do
|
55
73
|
it "should return an instance of a pathname" do
|
56
74
|
'History.rdoc'.path.should be_an_instance_of(Pathname)
|
data/spec/time_spec.rb
CHANGED
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.
|
4
|
+
version: 0.3.0
|
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-08-11 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -41,7 +41,7 @@ extra_rdoc_files:
|
|
41
41
|
- lib/rext/object.rb
|
42
42
|
- lib/rext/proc/helpers.rb
|
43
43
|
- lib/rext/proc.rb
|
44
|
-
- lib/rext/string/
|
44
|
+
- lib/rext/string/encode.rb
|
45
45
|
- lib/rext/string/helpers.rb
|
46
46
|
- lib/rext/string.rb
|
47
47
|
- lib/rext/time/helpers.rb
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- lib/rext/object.rb
|
79
79
|
- lib/rext/proc/helpers.rb
|
80
80
|
- lib/rext/proc.rb
|
81
|
-
- lib/rext/string/
|
81
|
+
- lib/rext/string/encode.rb
|
82
82
|
- lib/rext/string/helpers.rb
|
83
83
|
- lib/rext/string.rb
|
84
84
|
- lib/rext/time/helpers.rb
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- spec/module_spec.rb
|
98
98
|
- spec/numeric_spec.rb
|
99
99
|
- spec/object_spec.rb
|
100
|
+
- spec/spec.opts
|
100
101
|
- spec/spec_helper.rb
|
101
102
|
- spec/string_spec.rb
|
102
103
|
- spec/time_spec.rb
|
@@ -106,6 +107,7 @@ files:
|
|
106
107
|
- tasks/spec.rake
|
107
108
|
has_rdoc: false
|
108
109
|
homepage: http://github.com/visionmedia/rext
|
110
|
+
licenses:
|
109
111
|
post_install_message:
|
110
112
|
rdoc_options:
|
111
113
|
- --line-numbers
|
@@ -131,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
133
|
requirements: []
|
132
134
|
|
133
135
|
rubyforge_project: rext
|
134
|
-
rubygems_version: 1.
|
136
|
+
rubygems_version: 1.3.5
|
135
137
|
signing_key:
|
136
138
|
specification_version: 3
|
137
139
|
summary: Ruby extensions
|
data/lib/rext/string/escape.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'rack'
|
3
|
-
|
4
|
-
class String
|
5
|
-
|
6
|
-
##
|
7
|
-
# URL encode. Shortcut for Rack::Utils.encode.
|
8
|
-
|
9
|
-
def url_encode
|
10
|
-
Rack::Utils.escape self
|
11
|
-
end
|
12
|
-
|
13
|
-
##
|
14
|
-
# URL decode. Shortcut for Rack::Utils.unescape.
|
15
|
-
|
16
|
-
def url_decode
|
17
|
-
Rack::Utils.unescape self
|
18
|
-
end
|
19
|
-
|
20
|
-
##
|
21
|
-
# Escape html entities. Shortcut for Rack::Utils.escape_html.
|
22
|
-
#
|
23
|
-
# === Examples
|
24
|
-
#
|
25
|
-
# 'im <strong>strong</strong>.escape_html # => im <strong>strong</strong>
|
26
|
-
#
|
27
|
-
|
28
|
-
def escape_html
|
29
|
-
Rack::Utils.escape_html self
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|