monkey-lib 0.1.6
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/LICENSE +27 -0
- data/README.rdoc +51 -0
- data/Rakefile +49 -0
- data/lib/monkey-lib.rb +1 -0
- data/lib/monkey.rb +4 -0
- data/lib/monkey/engine.rb +89 -0
- data/lib/monkey/hash.rb +4 -0
- data/lib/monkey/hash/sub_hash.rb +23 -0
- data/lib/monkey/object.rb +2 -0
- data/lib/monkey/object/backports.rb +24 -0
- data/lib/monkey/object/instance_yield.rb +38 -0
- data/lib/monkey/string.rb +2 -0
- data/lib/monkey/string/like_pathname.rb +38 -0
- data/spec/monkey/engine_spec.rb +18 -0
- data/spec/monkey/hash/sub_hash_spec.rb +15 -0
- data/spec/monkey/object/backports_spec.rb +24 -0
- data/spec/monkey/object/instance_yield_spec.rb +32 -0
- data/spec/monkey/string/like_pathname_spec.rb +272 -0
- data/spec/spec_helper.rb +1 -0
- metadata +93 -0
data/LICENSE
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
copyright (c) 2009 Konstantin Haase. All rights reserved.
|
2
|
+
|
3
|
+
Developed by: Konstantin Haase
|
4
|
+
http://github.com/rkh/monkey-lib
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to
|
8
|
+
deal with the Software without restriction, including without limitation the
|
9
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
10
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
1. Redistributions of source code must retain the above copyright notice,
|
13
|
+
this list of conditions and the following disclaimers.
|
14
|
+
2. Redistributions in binary form must reproduce the above copyright
|
15
|
+
notice, this list of conditions and the following disclaimers in the
|
16
|
+
documentation and/or other materials provided with the distribution.
|
17
|
+
3. Neither the name of Konstantin Haase, nor the names of other contributors
|
18
|
+
may be used to endorse or promote products derived from this Software without
|
19
|
+
specific prior written permission.
|
20
|
+
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24
|
+
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
26
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
27
|
+
WITH THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
Sort of my own ruby extlib. There is a spec for everything and it is very clean.
|
2
|
+
It does avoid monkey patching and relies on modules.
|
3
|
+
|
4
|
+
= Template for extentiones
|
5
|
+
|
6
|
+
Say we want to extend Object by adding some methods dealing with magic.
|
7
|
+
This would go to the file lib/monkey/object/magic_stuff.rb:
|
8
|
+
|
9
|
+
module Monkey
|
10
|
+
module Object
|
11
|
+
|
12
|
+
# It's magic!
|
13
|
+
module MagicStuff
|
14
|
+
|
15
|
+
::Object.send :include, self
|
16
|
+
|
17
|
+
def hokus_pokus
|
18
|
+
Spell.perform(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def vanish_in_thin_air
|
22
|
+
class << self
|
23
|
+
instance_methods.each { |m| undef_method(m) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
Add to lib/monkey/object.rb:
|
33
|
+
|
34
|
+
require "monkey/object/magic_stuff"
|
35
|
+
|
36
|
+
If that file didn't exist before, add to lib/monkey.rb:
|
37
|
+
|
38
|
+
require "monkey/object"
|
39
|
+
|
40
|
+
Write a spec in spec/monkey/object/magic_stuff_spec.rb:
|
41
|
+
|
42
|
+
require __FILE__.sub("monkey/object/magic_stuff_spec.rb", "spec_helper")
|
43
|
+
require "monkey/object/magic_stuff"
|
44
|
+
|
45
|
+
describe Monkey::Object::MagicStuff do
|
46
|
+
|
47
|
+
it "performs magic" do
|
48
|
+
# ...
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "spec/rake/spectask"
|
2
|
+
require "rake/clean"
|
3
|
+
require "rake/rdoctask"
|
4
|
+
require "rake/gempackagetask"
|
5
|
+
require "rubygems/specification"
|
6
|
+
|
7
|
+
MONKEY_VERSION = "0.1.6"
|
8
|
+
|
9
|
+
spec = Gem::Specification.new do |s|
|
10
|
+
s.name = "monkey-lib"
|
11
|
+
s.version = MONKEY_VERSION
|
12
|
+
s.authors = ["Konstantin Haase"]
|
13
|
+
s.description = "collection of sane ruby extensions"
|
14
|
+
s.email = "konstantin.mailinglists@googlemail.com"
|
15
|
+
s.extra_rdoc_files = Dir["*.rdoc", "LICENSE", "lib/**/*.rb"]
|
16
|
+
s.files = Dir["LICENSE", "Rakefile", "README.rdoc", "lib/**/*.rb", "spec/**/*.rb"]
|
17
|
+
s.has_rdoc = true
|
18
|
+
s.homepage = "http://github.com/rkh/monkey-lib"
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.summary = s.description
|
21
|
+
s.add_dependency "extlib"
|
22
|
+
end
|
23
|
+
|
24
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
25
|
+
pkg.gem_spec = spec
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "install the gem locally"
|
29
|
+
task :install => [:package] do
|
30
|
+
sh %{gem install pkg/monkey-lib-#{MONKEY_VERSION}.gem}
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "create a gemspec file"
|
34
|
+
task :make_spec do
|
35
|
+
File.open("monkey-lib.gemspec", "w") do |file|
|
36
|
+
file.puts spec.to_ruby
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Rake::RDocTask.new("doc") do |rdoc|
|
41
|
+
rdoc.rdoc_dir = 'doc'
|
42
|
+
rdoc.options += %w[--all --inline-source --line-numbers --main README.rdoc --quiet
|
43
|
+
--tab-width 2 --title monkey-lib]
|
44
|
+
rdoc.rdoc_files.add ['*.rdoc', 'lib/**/*.rb']
|
45
|
+
end
|
46
|
+
|
47
|
+
Spec::Rake::SpecTask.new('spec') do |t|
|
48
|
+
t.spec_files = Dir.glob 'spec/**/*_spec.rb'
|
49
|
+
end
|
data/lib/monkey-lib.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "monkey"
|
data/lib/monkey.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
module Monkey
|
2
|
+
|
3
|
+
# Makes sure we always have RUBY_ENGINE, RUBY_ENGINE_VERSION and RUBY_DESCRIPTION
|
4
|
+
module Engine
|
5
|
+
|
6
|
+
include Rubinius if defined? Rubinius
|
7
|
+
|
8
|
+
unless defined? RUBY_ENGINE
|
9
|
+
if defined? JRUBY_VERSION
|
10
|
+
::RUBY_ENGINE = "jruby"
|
11
|
+
elsif defined? Rubinius
|
12
|
+
::RUBY_ENGINE = "rbx"
|
13
|
+
else
|
14
|
+
::RUBY_ENGINE = "ruby"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
unless RUBY_ENGINE.frozen?
|
19
|
+
RUBY_ENGINE.replace "rbx" if RUBY_ENGINE == "rubinius"
|
20
|
+
RUBY_ENGINE.downcase!
|
21
|
+
RUBY_ENGINE.freeze
|
22
|
+
end
|
23
|
+
|
24
|
+
::RUBY_ENGINE_VERSION = const_get("#{RUBY_ENGINE.upcase}_VERSION")
|
25
|
+
|
26
|
+
unless defined? RUBY_DESCRIPTION
|
27
|
+
::RUBY_DESCRIPTION = "#{RUBY_ENGINE} #{RUBY_ENGINE_VERSION} "
|
28
|
+
unless RUBY_ENGINE == "ruby"
|
29
|
+
::RUBY_DESCRIPTION << "(ruby #{RUBY_VERSION}"
|
30
|
+
::RUBY_DESCRIPTION << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
|
31
|
+
::RUBY_DESCRIPTION << ") "
|
32
|
+
end
|
33
|
+
if defined? RUBY_RELEASE_DATE
|
34
|
+
::RUBY_DESCRIPTION << "("
|
35
|
+
::RUBY_DESCRIPTION << BUILDREV[0..8] << " " if defined? BUILDREV
|
36
|
+
::RUBY_DESCRIPTION << RUBY_RELEASE_DATE << ") "
|
37
|
+
end
|
38
|
+
::RUBY_DESCRIPTION << "[#{RUBY_PLATFORM}]"
|
39
|
+
end
|
40
|
+
|
41
|
+
def jruby?
|
42
|
+
RUBY_ENGINE == "jruby"
|
43
|
+
end
|
44
|
+
|
45
|
+
module_function :jruby?
|
46
|
+
|
47
|
+
def mri?
|
48
|
+
RUBY_ENGINE == "ruby"
|
49
|
+
end
|
50
|
+
|
51
|
+
module_function :mri?
|
52
|
+
|
53
|
+
def rbx?
|
54
|
+
RUBY_ENGINE == "rbx"
|
55
|
+
end
|
56
|
+
|
57
|
+
alias rubinius? rbx?
|
58
|
+
module_function :rbx?
|
59
|
+
module_function :rubinius?
|
60
|
+
|
61
|
+
def ironruby?
|
62
|
+
RUBY_ENGINE == "ironruby"
|
63
|
+
end
|
64
|
+
|
65
|
+
module_function :ironruby?
|
66
|
+
|
67
|
+
def macruby?
|
68
|
+
RUBY_ENGINE == "macruby"
|
69
|
+
end
|
70
|
+
|
71
|
+
module_function :macruby?
|
72
|
+
|
73
|
+
def ruby_engine(pretty = true)
|
74
|
+
return RUBY_ENGINE unless pretty
|
75
|
+
case RUBY_ENGINE
|
76
|
+
when "ruby" then "CRuby"
|
77
|
+
when "rbx" then "Rubinius"
|
78
|
+
when /ruby$/ then RUBY_ENGINE.capitalize.gsub("ruby", "Ruby")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
module_function :ruby_engine
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
extend Engine
|
87
|
+
include Engine
|
88
|
+
|
89
|
+
end
|
data/lib/monkey/hash.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Monkey
|
2
|
+
module Hash
|
3
|
+
|
4
|
+
# Adds sub hash ablilty (like Hash#[], but returning a hash rather than an array).
|
5
|
+
module SubHash
|
6
|
+
|
7
|
+
::Hash.send :include, self
|
8
|
+
|
9
|
+
# Example:
|
10
|
+
# {:a => 42, :b => 23, :c => 1337}.sub_hash :a, :b, :d
|
11
|
+
# # => {:a => 42, :b => 23}
|
12
|
+
def sub_hash(*keys)
|
13
|
+
keys.inject({}) do |hash, key|
|
14
|
+
hash.merge! key => self[key] if include? key
|
15
|
+
hash
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
alias subhash sub_hash
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Monkey
|
2
|
+
module Object
|
3
|
+
|
4
|
+
# Backports from newer / alternate ruby implementations.
|
5
|
+
module Backports
|
6
|
+
|
7
|
+
::Object.send :include, self
|
8
|
+
|
9
|
+
# From Ruby >= 1.8.7
|
10
|
+
def tap
|
11
|
+
yield self
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
# From Rubinius
|
16
|
+
def metaclass
|
17
|
+
class << self
|
18
|
+
self
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Monkey
|
2
|
+
module Object
|
3
|
+
|
4
|
+
# Adds the private method instance_eval which is like instance_eval
|
5
|
+
# and yield depending on whether a block takes an argument or not.
|
6
|
+
#
|
7
|
+
# class Foo
|
8
|
+
#
|
9
|
+
# def foo
|
10
|
+
# 42
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# def bar(&block)
|
14
|
+
# instance_yield block
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# conf = Foo.new
|
20
|
+
# conf.bar { foo }
|
21
|
+
# conf.bar { |c| c.foo }
|
22
|
+
module InstanceYield
|
23
|
+
|
24
|
+
::Object.send :include, self
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# See InstanceYield description.
|
29
|
+
def instance_yield(block = nil, &alternate_block)
|
30
|
+
raise ArgumentError, "too many blocks given" if block && alternate_block
|
31
|
+
block ||= alternate_block
|
32
|
+
raise LocalJumpError, "no block given (yield)" unless block
|
33
|
+
block.arity > 0 ? yield(self) : instance_eval(&block)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require "pathname"
|
2
|
+
require "extlib/pathname"
|
3
|
+
|
4
|
+
module Monkey
|
5
|
+
module String
|
6
|
+
|
7
|
+
# Adds Pathname behaviour to String.
|
8
|
+
module LikePathname
|
9
|
+
|
10
|
+
::String.send :include, self
|
11
|
+
|
12
|
+
Pathname.instance_methods(false).each do |m|
|
13
|
+
# Syntax error in Ruby < 1.9:
|
14
|
+
# define_method(m) { |*a, &b| ... }
|
15
|
+
next if "".respond_to? m or m.to_s == "to_path"
|
16
|
+
class_eval <<-EOS
|
17
|
+
def #{m}(*a, &b)
|
18
|
+
result = Pathname(self).#{m}(*a, &b)
|
19
|
+
return result unless result.is_a? Pathname
|
20
|
+
result.to_s
|
21
|
+
end
|
22
|
+
EOS
|
23
|
+
end
|
24
|
+
|
25
|
+
#def method_missing(meth, *args, &block)
|
26
|
+
# pathname = Pathname self
|
27
|
+
# return super unless pathname.respond_to? meth
|
28
|
+
# result = pathname.send(meth, *args, &block)
|
29
|
+
# return result.to_s if result.is_a? Pathname
|
30
|
+
# result
|
31
|
+
#end
|
32
|
+
|
33
|
+
alias exists? exist?
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require __FILE__.sub("monkey/engine_spec.rb", "spec_helper")
|
2
|
+
require "monkey/engine"
|
3
|
+
|
4
|
+
describe Monkey::Engine do
|
5
|
+
|
6
|
+
it "defines RUBY_VERSION" do
|
7
|
+
defined?(RUBY_VERSION).should == "constant"
|
8
|
+
end
|
9
|
+
|
10
|
+
it "defines RUBY_ENGINE_VERSION" do
|
11
|
+
defined?(RUBY_ENGINE_VERSION).should == "constant"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "defines RUBY_DESCRIPTION" do
|
15
|
+
defined?(RUBY_DESCRIPTION).should == "constant"
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require __FILE__.sub("monkey/hash/sub_hash_spec.rb", "spec_helper")
|
2
|
+
require "monkey/hash/sub_hash"
|
3
|
+
|
4
|
+
describe Monkey::Hash::SubHash do
|
5
|
+
|
6
|
+
it "returns a hash with only the key-value-pairs requested for sub_hash" do
|
7
|
+
{:a => 10, :b => 20}.sub_hash(:a).should == {:a => 10}
|
8
|
+
{:a => 10, :b => 20}.sub_hash(:a, :b).should == {:a => 10, :b => 20}
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should ignore keys passed to sub_hash, but not present" do
|
12
|
+
{:a => 10, :b => 20}.sub_hash(:a, :c).should == {:a => 10}
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require __FILE__.sub("monkey/object/backports_spec.rb", "spec_helper")
|
2
|
+
require "monkey/object/backports"
|
3
|
+
|
4
|
+
describe Monkey::Object::Backports do
|
5
|
+
|
6
|
+
it "returns returns the reciever of #tap" do
|
7
|
+
obj = Object.new
|
8
|
+
obj.tap {}.should == obj
|
9
|
+
"example".tap {}.should == "example"
|
10
|
+
end
|
11
|
+
|
12
|
+
it "passes the reciever of #tap to the given block" do
|
13
|
+
"foo".tap { |s| s.replace "bar" }.should == "bar"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "returns eigenclass for #metaclass" do
|
17
|
+
obj = Object.new
|
18
|
+
eigenclass = class << obj
|
19
|
+
self
|
20
|
+
end
|
21
|
+
obj.metaclass.should == eigenclass
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require __FILE__.sub("monkey/object/instance_yield_spec.rb", "spec_helper")
|
2
|
+
require "monkey/object/instance_yield"
|
3
|
+
|
4
|
+
describe Monkey::Object::InstanceYield do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@obj = Object.new
|
8
|
+
@obj.stub! :foo
|
9
|
+
end
|
10
|
+
|
11
|
+
it "calls a block if block takes at least one argument" do
|
12
|
+
foo = nil
|
13
|
+
@obj.should_not_receive :foo
|
14
|
+
@obj.send :instance_yield do |x|
|
15
|
+
foo
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it "passes object as first argument to blog" do
|
20
|
+
@obj.send :instance_yield do |x|
|
21
|
+
x.should == @obj
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it "passes the block to instance_eval if block doesn't take arguments" do
|
26
|
+
@obj.should_receive :foo
|
27
|
+
@obj.send :instance_yield do
|
28
|
+
foo
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,272 @@
|
|
1
|
+
require __FILE__.sub("monkey/string/like_pathname_spec.rb", "spec_helper")
|
2
|
+
require "monkey/string/like_pathname"
|
3
|
+
|
4
|
+
describe Monkey::String::LikePathname do
|
5
|
+
|
6
|
+
before do
|
7
|
+
@strings = ["/usr/bin/ruby", ".", "..", ENV["HOME"]]
|
8
|
+
@methods = Pathname.instance_methods(false).reject do |m|
|
9
|
+
String.methods.include? m or m.to_s == "to_path"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it "exposes sub_ext to String if in ruby 1.9" do
|
14
|
+
@strings.each do |s|
|
15
|
+
s.sub_ext(".png").should == Pathname(s).sub_ext(".png").to_s
|
16
|
+
end if RUBY_VERSION >= "1.9"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "exposes cleanpath to String" do
|
20
|
+
@strings.each do |s|
|
21
|
+
s.cleanpath.should == Pathname(s).cleanpath.to_s
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it "exposes realpath to String" do
|
26
|
+
@strings.each do |s|
|
27
|
+
s.realpath.should == Pathname(s).realpath.to_s
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "exposes parent to String" do
|
32
|
+
@strings.each do |s|
|
33
|
+
s.parent.should == Pathname(s).parent.to_s
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "exposes mountpoint? to String" do
|
38
|
+
@strings.each do |s|
|
39
|
+
s.mountpoint?.should == Pathname(s).mountpoint?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it "exposes root? to String" do
|
44
|
+
@strings.each do |s|
|
45
|
+
s.root?.should == Pathname(s).root?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it "exposes absolute? to String" do
|
50
|
+
@strings.each do |s|
|
51
|
+
s.absolute?.should == Pathname(s).absolute?
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it "exposes relative? to String" do
|
56
|
+
@strings.each do |s|
|
57
|
+
s.relative?.should == Pathname(s).relative?
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "exposes each_filename to String if in ruby 1.9" do
|
62
|
+
@strings.each do |s|
|
63
|
+
s.each_filename.to_a.should == Pathname(s).each_filename.to_a
|
64
|
+
end if RUBY_VERSION >= "1.9"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "exposes join to String" do
|
68
|
+
@strings.each do |s|
|
69
|
+
s.join.should == Pathname(s).join.to_s
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
it "exposes children to String" do
|
74
|
+
@strings.each do |s|
|
75
|
+
s.children.should == Pathname(s).children if s.directory?
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
it "exposes atime to String" do
|
80
|
+
@strings.each do |s|
|
81
|
+
s.atime.should == Pathname(s).atime
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it "exposes ctime to String" do
|
86
|
+
@strings.each do |s|
|
87
|
+
s.ctime.should == Pathname(s).ctime
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
it "exposes mtime to String" do
|
92
|
+
@strings.each do |s|
|
93
|
+
s.mtime.should == Pathname(s).mtime
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it "exposes ftype to String" do
|
98
|
+
@strings.each do |s|
|
99
|
+
s.ftype.should == Pathname(s).ftype.to_s
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
it "exposes basename to String" do
|
104
|
+
@strings.each do |s|
|
105
|
+
s.basename.should == Pathname(s).basename.to_s
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
it "exposes dirname to String" do
|
110
|
+
@strings.each do |s|
|
111
|
+
s.dirname.should == Pathname(s).dirname.to_s
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
it "exposes extname to String" do
|
116
|
+
@strings.each do |s|
|
117
|
+
s.extname.should == Pathname(s).extname.to_s
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
it "exposes expand_path to String" do
|
122
|
+
@strings.each do |s|
|
123
|
+
s.expand_path.should == Pathname(s).expand_path.to_s
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
it "exposes blockdev? to String" do
|
128
|
+
@strings.each do |s|
|
129
|
+
s.blockdev?.should == Pathname(s).blockdev?
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
it "exposes chardev? to String" do
|
134
|
+
@strings.each do |s|
|
135
|
+
s.chardev?.should == Pathname(s).chardev?
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
it "exposes executable? to String" do
|
140
|
+
@strings.each do |s|
|
141
|
+
s.executable?.should == Pathname(s).executable?
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
it "exposes executable_real? to String" do
|
146
|
+
@strings.each do |s|
|
147
|
+
s.executable_real?.should == Pathname(s).executable_real?
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
it "exposes exist? to String" do
|
152
|
+
@strings.each do |s|
|
153
|
+
s.exist?.should == Pathname(s).exist?
|
154
|
+
s.exists?.should == Pathname(s).exist?
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
it "exposes grpowned? to String" do
|
159
|
+
@strings.each do |s|
|
160
|
+
s.grpowned?.should == Pathname(s).grpowned?
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
it "exposes directory? to String" do
|
165
|
+
@strings.each do |s|
|
166
|
+
s.directory?.should == Pathname(s).directory?
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
it "exposes file? to String" do
|
171
|
+
@strings.each do |s|
|
172
|
+
s.file?.should == Pathname(s).file?
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
it "exposes pipe? to String" do
|
177
|
+
@strings.each do |s|
|
178
|
+
s.pipe?.should == Pathname(s).pipe?
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
it "exposes socket? to String" do
|
183
|
+
@strings.each do |s|
|
184
|
+
s.socket?.should == Pathname(s).socket?
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
it "exposes owned? to String" do
|
189
|
+
@strings.each do |s|
|
190
|
+
s.owned?.should == Pathname(s).owned?
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
it "exposes readable? to String" do
|
195
|
+
@strings.each do |s|
|
196
|
+
s.readable?.should == Pathname(s).readable?
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
it "exposes world_readable? to String in ruby 1.9" do
|
201
|
+
@strings.each do |s|
|
202
|
+
s.world_readable?.should == Pathname(s).world_readable?
|
203
|
+
end if RUBY_VERSION >= "1.9"
|
204
|
+
end
|
205
|
+
|
206
|
+
it "exposes readable_real? to String" do
|
207
|
+
@strings.each do |s|
|
208
|
+
s.readable_real?.should == Pathname(s).readable_real?
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
it "exposes setuid? to String" do
|
213
|
+
@strings.each do |s|
|
214
|
+
s.setuid?.should == Pathname(s).setuid?
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
it "exposes setgid? to String" do
|
219
|
+
@strings.each do |s|
|
220
|
+
s.setgid?.should == Pathname(s).setgid?
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
it "exposes size? to String" do
|
225
|
+
@strings.each do |s|
|
226
|
+
s.size?.should == Pathname(s).size?
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
it "exposes sticky? to String" do
|
231
|
+
@strings.each do |s|
|
232
|
+
s.sticky?.should == Pathname(s).sticky?
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
it "exposes symlink? to String" do
|
237
|
+
@strings.each do |s|
|
238
|
+
s.symlink?.should == Pathname(s).symlink?
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
it "exposes writable? to String" do
|
243
|
+
@strings.each do |s|
|
244
|
+
s.writable?.should == Pathname(s).writable?
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
it "exposes world_writable? to String in ruby 1.9" do
|
249
|
+
@strings.each do |s|
|
250
|
+
s.world_writable?.should == Pathname(s).world_writable?
|
251
|
+
end if RUBY_VERSION >= "1.9"
|
252
|
+
end
|
253
|
+
|
254
|
+
it "exposes writable_real? to String" do
|
255
|
+
@strings.each do |s|
|
256
|
+
s.writable_real?.should == Pathname(s).writable_real?
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
it "exposes zero? to String" do
|
261
|
+
@strings.each do |s|
|
262
|
+
s.zero?.should == Pathname(s).zero?
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
it "exposes entries to String in ruby 1.9" do
|
267
|
+
@strings.each do |s|
|
268
|
+
s.entries.should == Pathname(s).entries if s.directory?
|
269
|
+
end if RUBY_VERSION >= "1.9"
|
270
|
+
end
|
271
|
+
|
272
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path(__FILE__.sub("spec/spec_helper.rb", "lib"))
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: monkey-lib
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Konstantin Haase
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-07-22 00:00:00 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: extlib
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
description: collection of sane ruby extensions
|
26
|
+
email: konstantin.mailinglists@googlemail.com
|
27
|
+
executables: []
|
28
|
+
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files:
|
32
|
+
- README.rdoc
|
33
|
+
- LICENSE
|
34
|
+
- lib/monkey/engine.rb
|
35
|
+
- lib/monkey/hash/sub_hash.rb
|
36
|
+
- lib/monkey/hash.rb
|
37
|
+
- lib/monkey/object/backports.rb
|
38
|
+
- lib/monkey/object/instance_yield.rb
|
39
|
+
- lib/monkey/object.rb
|
40
|
+
- lib/monkey/string/like_pathname.rb
|
41
|
+
- lib/monkey/string.rb
|
42
|
+
- lib/monkey-lib.rb
|
43
|
+
- lib/monkey.rb
|
44
|
+
files:
|
45
|
+
- LICENSE
|
46
|
+
- Rakefile
|
47
|
+
- README.rdoc
|
48
|
+
- lib/monkey/engine.rb
|
49
|
+
- lib/monkey/hash/sub_hash.rb
|
50
|
+
- lib/monkey/hash.rb
|
51
|
+
- lib/monkey/object/backports.rb
|
52
|
+
- lib/monkey/object/instance_yield.rb
|
53
|
+
- lib/monkey/object.rb
|
54
|
+
- lib/monkey/string/like_pathname.rb
|
55
|
+
- lib/monkey/string.rb
|
56
|
+
- lib/monkey-lib.rb
|
57
|
+
- lib/monkey.rb
|
58
|
+
- spec/monkey/engine_spec.rb
|
59
|
+
- spec/monkey/hash/sub_hash_spec.rb
|
60
|
+
- spec/monkey/object/backports_spec.rb
|
61
|
+
- spec/monkey/object/instance_yield_spec.rb
|
62
|
+
- spec/monkey/string/like_pathname_spec.rb
|
63
|
+
- spec/spec_helper.rb
|
64
|
+
has_rdoc: true
|
65
|
+
homepage: http://github.com/rkh/monkey-lib
|
66
|
+
licenses: []
|
67
|
+
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
|
71
|
+
require_paths:
|
72
|
+
- lib
|
73
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "0"
|
78
|
+
version:
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
85
|
+
requirements: []
|
86
|
+
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 1.3.5
|
89
|
+
signing_key:
|
90
|
+
specification_version: 3
|
91
|
+
summary: collection of sane ruby extensions
|
92
|
+
test_files: []
|
93
|
+
|