zucker 4 → 5
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/CHANGELOG +15 -1
- data/Rakefile +44 -0
- data/lib/zucker.rb +71 -10
- data/lib/zucker/1/D.rb +2 -0
- data/lib/zucker/1/aliases.rb +2 -0
- data/lib/zucker/1/all.rb +2 -0
- data/lib/zucker/1/array.rb +2 -0
- data/lib/zucker/1/array2proc.rb +2 -0
- data/lib/zucker/1/binding.rb +2 -0
- data/lib/zucker/1/blank.rb +2 -0
- data/lib/zucker/1/class2proc.rb +2 -0
- data/lib/zucker/1/debug.rb +2 -0
- data/lib/zucker/1/default.rb +2 -0
- data/lib/zucker/1/egonil.rb +2 -0
- data/lib/zucker/1/enumerable.rb +2 -0
- data/lib/zucker/1/hash.rb +2 -0
- data/lib/zucker/1/hash2proc.rb +2 -0
- data/lib/zucker/1/iterate.rb +2 -0
- data/lib/zucker/1/ivars.rb +2 -0
- data/lib/zucker/1/kernel.rb +2 -0
- data/lib/zucker/1/mcopy.rb +2 -0
- data/lib/zucker/1/mm.rb +2 -0
- data/lib/zucker/1/regexp2proc.rb +2 -0
- data/lib/zucker/1/sandbox.rb +2 -0
- data/lib/zucker/1/square_brackets_for.rb +2 -0
- data/lib/zucker/1/string.rb +2 -0
- data/lib/zucker/1/unary.rb +2 -0
- data/lib/zucker/1/union.rb +2 -0
- data/lib/zucker/2/D.rb +2 -0
- data/lib/zucker/2/aliases.rb +2 -0
- data/lib/zucker/2/all.rb +2 -0
- data/lib/zucker/2/array.rb +2 -0
- data/lib/zucker/2/array2proc.rb +2 -0
- data/lib/zucker/2/binding.rb +2 -0
- data/lib/zucker/2/blank.rb +2 -0
- data/lib/zucker/2/class2proc.rb +2 -0
- data/lib/zucker/2/debug.rb +2 -0
- data/lib/zucker/2/default.rb +2 -0
- data/lib/zucker/2/egonil.rb +2 -0
- data/lib/zucker/2/enumerable.rb +2 -0
- data/lib/zucker/2/hash.rb +2 -0
- data/lib/zucker/2/hash2proc.rb +2 -0
- data/lib/zucker/2/info.rb +2 -0
- data/lib/zucker/2/iterate.rb +2 -0
- data/lib/zucker/2/ivars.rb +2 -0
- data/lib/zucker/2/kernel.rb +2 -0
- data/lib/zucker/2/mcopy.rb +2 -0
- data/lib/zucker/2/mm.rb +2 -0
- data/lib/zucker/2/regexp2proc.rb +2 -0
- data/lib/zucker/2/sandbox.rb +2 -0
- data/lib/zucker/2/square_brackets_for.rb +2 -0
- data/lib/zucker/2/string.rb +2 -0
- data/lib/zucker/2/unary.rb +2 -0
- data/lib/zucker/2/union.rb +2 -0
- data/lib/zucker/3/D.rb +2 -0
- data/lib/zucker/3/alias_for.rb +2 -0
- data/lib/zucker/3/aliases.rb +2 -0
- data/lib/zucker/3/all.rb +2 -0
- data/lib/zucker/3/array.rb +2 -0
- data/lib/zucker/3/array2proc.rb +2 -0
- data/lib/zucker/3/binding.rb +2 -0
- data/lib/zucker/3/blank.rb +2 -0
- data/lib/zucker/3/class2proc.rb +2 -0
- data/lib/zucker/3/debug.rb +2 -0
- data/lib/zucker/3/default.rb +2 -0
- data/lib/zucker/3/egonil.rb +2 -0
- data/lib/zucker/3/enumerable.rb +2 -0
- data/lib/zucker/3/hash.rb +2 -0
- data/lib/zucker/3/hash2proc.rb +2 -0
- data/lib/zucker/3/info.rb +2 -0
- data/lib/zucker/3/iterate.rb +2 -0
- data/lib/zucker/3/ivars.rb +2 -0
- data/lib/zucker/3/kernel.rb +2 -0
- data/lib/zucker/3/mcopy.rb +2 -0
- data/lib/zucker/3/mm.rb +2 -0
- data/lib/zucker/3/not.rb +2 -0
- data/lib/zucker/3/regexp2proc.rb +2 -0
- data/lib/zucker/3/sandbox.rb +2 -0
- data/lib/zucker/3/square_brackets_for.rb +2 -0
- data/lib/zucker/3/string.rb +2 -0
- data/lib/zucker/3/tap.rb +2 -0
- data/lib/zucker/3/unary.rb +2 -0
- data/lib/zucker/3/union.rb +2 -0
- data/lib/zucker/{D.rb → 4/D.rb} +2 -0
- data/lib/zucker/4/alias_for.rb +21 -0
- data/lib/zucker/4/aliases.rb +35 -0
- data/lib/zucker/4/all.rb +8 -0
- data/lib/zucker/4/array.rb +25 -0
- data/lib/zucker/4/array2proc.rb +18 -0
- data/lib/zucker/4/binding.rb +27 -0
- data/lib/zucker/4/blank.rb +28 -0
- data/lib/zucker/4/class2proc.rb +12 -0
- data/lib/zucker/4/debug.rb +8 -0
- data/lib/zucker/4/default.rb +40 -0
- data/lib/zucker/4/egonil.rb +16 -0
- data/lib/zucker/4/engine.rb +69 -0
- data/lib/zucker/4/enumerable.rb +14 -0
- data/lib/zucker/4/hash.rb +21 -0
- data/lib/zucker/4/hash2proc.rb +16 -0
- data/lib/zucker/4/info.rb +173 -0
- data/lib/zucker/4/iterate.rb +25 -0
- data/lib/zucker/4/ivars.rb +28 -0
- data/lib/zucker/4/kernel.rb +27 -0
- data/lib/zucker/4/mcopy.rb +10 -0
- data/lib/zucker/4/mm.rb +33 -0
- data/lib/zucker/4/not.rb +19 -0
- data/lib/zucker/4/os.rb +50 -0
- data/lib/zucker/{q.rb → 4/q.rb} +2 -0
- data/lib/zucker/4/regexp2proc.rb +12 -0
- data/lib/zucker/4/sandbox.rb +23 -0
- data/lib/zucker/4/square_brackets_for.rb +22 -0
- data/lib/zucker/4/string.rb +54 -0
- data/lib/zucker/4/tap.rb +11 -0
- data/lib/zucker/4/unary.rb +24 -0
- data/lib/zucker/4/union.rb +16 -0
- data/lib/zucker/4/version.rb +115 -0
- data/lib/zucker/5/alias_for.rb +21 -0
- data/lib/zucker/5/aliases.rb +51 -0
- data/lib/zucker/5/all.rb +4 -0
- data/lib/zucker/5/array.rb +25 -0
- data/lib/zucker/5/array2proc.rb +18 -0
- data/lib/zucker/5/binding.rb +34 -0
- data/lib/zucker/5/blank.rb +28 -0
- data/lib/zucker/5/cc.rb +25 -0
- data/lib/zucker/5/class2proc.rb +12 -0
- data/lib/zucker/5/control.rb +4 -0
- data/lib/zucker/5/dd.rb +24 -0
- data/lib/zucker/5/debug.rb +4 -0
- data/lib/zucker/5/default.rb +4 -0
- data/lib/zucker/5/egonil.rb +16 -0
- data/lib/zucker/5/engine.rb +69 -0
- data/lib/zucker/5/enumerable.rb +14 -0
- data/lib/zucker/5/env.rb +4 -0
- data/lib/zucker/5/extensions.rb +4 -0
- data/lib/zucker/5/hash.rb +27 -0
- data/lib/zucker/5/hash2proc.rb +16 -0
- data/lib/zucker/5/info.rb +177 -0
- data/lib/zucker/5/iterate.rb +26 -0
- data/lib/zucker/5/ivars.rb +28 -0
- data/lib/zucker/5/kernel.rb +34 -0
- data/lib/zucker/5/mcopy.rb +10 -0
- data/lib/zucker/5/mm.rb +34 -0
- data/lib/zucker/5/not.rb +19 -0
- data/lib/zucker/5/object.rb +4 -0
- data/lib/zucker/5/oo.rb +17 -0
- data/lib/zucker/5/os.rb +49 -0
- data/lib/zucker/5/qq.rb +12 -0
- data/lib/zucker/5/regexp2proc.rb +12 -0
- data/lib/zucker/5/sandbox.rb +25 -0
- data/lib/zucker/5/shortcuts.rb +4 -0
- data/lib/zucker/5/square_brackets_for.rb +21 -0
- data/lib/zucker/5/string.rb +54 -0
- data/lib/zucker/5/tap.rb +11 -0
- data/lib/zucker/5/to_proc.rb +4 -0
- data/lib/zucker/5/unary.rb +24 -0
- data/lib/zucker/5/union.rb +16 -0
- data/lib/zucker/5/version.rb +118 -0
- data/lib/zucker/alias_for.rb +2 -0
- data/lib/zucker/aliases.rb +19 -1
- data/lib/zucker/all.rb +3 -5
- data/lib/zucker/array.rb +2 -0
- data/lib/zucker/array2proc.rb +2 -0
- data/lib/zucker/binding.rb +5 -0
- data/lib/zucker/blank.rb +2 -0
- data/lib/zucker/cc.rb +25 -0
- data/lib/zucker/class2proc.rb +2 -0
- data/lib/zucker/control.rb +4 -0
- data/lib/zucker/dd.rb +23 -0
- data/lib/zucker/debug.rb +2 -4
- data/lib/zucker/default.rb +2 -36
- data/lib/zucker/egonil.rb +2 -0
- data/lib/zucker/engine.rb +3 -1
- data/lib/zucker/enumerable.rb +2 -0
- data/lib/zucker/env.rb +4 -0
- data/lib/zucker/extensions.rb +4 -0
- data/lib/zucker/hash.rb +8 -0
- data/lib/zucker/hash2proc.rb +2 -0
- data/lib/zucker/info.rb +23 -17
- data/lib/zucker/iterate.rb +3 -0
- data/lib/zucker/ivars.rb +2 -0
- data/lib/zucker/kernel.rb +12 -3
- data/lib/zucker/mcopy.rb +2 -0
- data/lib/zucker/mm.rb +5 -2
- data/lib/zucker/not.rb +2 -0
- data/lib/zucker/object.rb +4 -0
- data/lib/zucker/oo.rb +17 -0
- data/lib/zucker/os.rb +5 -2
- data/lib/zucker/qq.rb +12 -0
- data/lib/zucker/regexp2proc.rb +2 -0
- data/lib/zucker/sandbox.rb +4 -0
- data/lib/zucker/shortcuts.rb +4 -0
- data/lib/zucker/square_brackets_for.rb +13 -12
- data/lib/zucker/string.rb +2 -0
- data/lib/zucker/tap.rb +2 -0
- data/lib/zucker/to_proc.rb +4 -0
- data/lib/zucker/unary.rb +2 -0
- data/lib/zucker/union.rb +2 -0
- data/lib/zucker/version.rb +72 -67
- metadata +87 -5
data/lib/zucker/4/mm.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
module Kernel
|
|
4
|
+
def method_list(levels = 1)
|
|
5
|
+
if self.is_a? Module
|
|
6
|
+
klass, method_function = self, :public_methods
|
|
7
|
+
else
|
|
8
|
+
klass, method_function = self.class, :public_instance_methods
|
|
9
|
+
|
|
10
|
+
eigen = self.singleton_methods
|
|
11
|
+
if !eigen.empty?
|
|
12
|
+
puts :Eigenclass # sorry for not being up to date, I just love the word
|
|
13
|
+
p self.singleton_methods
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
levels.times{ |level|
|
|
18
|
+
if cur = klass.ancestors[level]
|
|
19
|
+
p cur # put class name
|
|
20
|
+
p cur.send method_function, false # put methods of the class
|
|
21
|
+
else
|
|
22
|
+
break
|
|
23
|
+
end
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
self # or whatever
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
alias mm method_list
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# J-_-L
|
|
33
|
+
|
data/lib/zucker/4/not.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
class Object
|
|
4
|
+
def not
|
|
5
|
+
NotClass.new self
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
class NotClass < BasicObject
|
|
9
|
+
def initialize(receiver)
|
|
10
|
+
@receiver = receiver
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def method_missing(m, *args, &block)
|
|
14
|
+
not @receiver.public_send( m, *args, &block )
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# J-_-L
|
data/lib/zucker/4/os.rb
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
require 'rbconfig'
|
|
4
|
+
|
|
5
|
+
module OS
|
|
6
|
+
class << OS
|
|
7
|
+
def is?(what)
|
|
8
|
+
what === RbConfig::CONFIG['host_os']
|
|
9
|
+
end
|
|
10
|
+
alias is is?
|
|
11
|
+
|
|
12
|
+
def to_s
|
|
13
|
+
RbConfig::CONFIG['host_os']
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
module_function
|
|
18
|
+
|
|
19
|
+
def linux?
|
|
20
|
+
OS.is? /linux|cygwin/
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def mac?
|
|
24
|
+
OS.is? /mac|darwin/
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def bsd?
|
|
28
|
+
OS.is? /bsd/
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def windows?
|
|
32
|
+
OS.is? /mswin|win|mingw/
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def solaris?
|
|
36
|
+
OS.is? /solaris|sunos/
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def posix?
|
|
40
|
+
linux? or mac? or bsd? or solaris? or Process.respond_to?(:fork)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
#def symbian?
|
|
44
|
+
#TODO who knows what symbian returns?
|
|
45
|
+
#end
|
|
46
|
+
|
|
47
|
+
# ...
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# J-_-L
|
data/lib/zucker/{q.rb → 4/q.rb}
RENAMED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
module Kernel
|
|
4
|
+
def sandbox(rescueblock_or_default=nil)
|
|
5
|
+
Thread.start do
|
|
6
|
+
$SAFE = 4
|
|
7
|
+
yield
|
|
8
|
+
end.value
|
|
9
|
+
rescue SecurityError => e
|
|
10
|
+
if !rescueblock_or_default.nil?
|
|
11
|
+
if rescueblock_or_default.is_a? Proc
|
|
12
|
+
rescueblock_or_default.call e
|
|
13
|
+
else
|
|
14
|
+
rescueblock_or_default
|
|
15
|
+
end
|
|
16
|
+
else
|
|
17
|
+
raise e
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# J-_-L
|
|
23
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
def square_brackets_for(ivar, assignment = true)
|
|
4
|
+
# undef [] if respond_to? :[]
|
|
5
|
+
# undef []= if respond_to? :[]=
|
|
6
|
+
|
|
7
|
+
#instance_eval do
|
|
8
|
+
define_method :[] do |key|
|
|
9
|
+
(instance_variable_get :"@#{ivar}")[key]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if assignment
|
|
13
|
+
define_method :[]= do |key, value|
|
|
14
|
+
(instance_variable_get :"@#{ivar}")[key] = value
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
#end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# J-_-L
|
|
22
|
+
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
class String
|
|
4
|
+
def -(rem)
|
|
5
|
+
gsub( Regexp === rem ? rem : rem.to_s, '' )
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def ^(pos)
|
|
9
|
+
pos = pos.to_i
|
|
10
|
+
if pos >= 0
|
|
11
|
+
self[pos..-1]
|
|
12
|
+
else
|
|
13
|
+
self[0...pos]
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def lchomp(arg = $/)
|
|
18
|
+
reverse.chomp(arg).reverse
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def lchomp!(arg = $/)
|
|
22
|
+
reverse.chomp!(arg).reverse
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def ords
|
|
26
|
+
unpack 'C*'
|
|
27
|
+
# bytes.to_a
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def constantize(default_value = nil) # always uses global scope as in AS... is this good?
|
|
31
|
+
get_constant = lambda{
|
|
32
|
+
self.split(/::/).inject( Object ){ |base_constant, current_constant|
|
|
33
|
+
base_constant.const_get current_constant
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if !default_value && !block_given?
|
|
38
|
+
get_constant.call
|
|
39
|
+
else
|
|
40
|
+
begin
|
|
41
|
+
get_constant.call
|
|
42
|
+
rescue NameError
|
|
43
|
+
if block_given?
|
|
44
|
+
yield self
|
|
45
|
+
else
|
|
46
|
+
default_value
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# J-_-L
|
|
54
|
+
|
data/lib/zucker/4/tap.rb
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
module RubyVersion
|
|
4
|
+
class << self
|
|
5
|
+
def to_s
|
|
6
|
+
RUBY_VERSION
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def is?(other_version = nil)
|
|
10
|
+
compare other_version
|
|
11
|
+
end
|
|
12
|
+
alias is is?
|
|
13
|
+
|
|
14
|
+
# accessors
|
|
15
|
+
|
|
16
|
+
def major
|
|
17
|
+
RUBY_VERSION.to_i
|
|
18
|
+
end
|
|
19
|
+
alias main major
|
|
20
|
+
|
|
21
|
+
def minor
|
|
22
|
+
RUBY_VERSION.split('.')[1].to_i
|
|
23
|
+
end
|
|
24
|
+
alias mini minor
|
|
25
|
+
|
|
26
|
+
def tiny
|
|
27
|
+
RUBY_VERSION.split('.')[2].to_i
|
|
28
|
+
end
|
|
29
|
+
alias teeny tiny
|
|
30
|
+
|
|
31
|
+
def patchlevel
|
|
32
|
+
RUBY_PATCHLEVEL
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def platform
|
|
36
|
+
RUBY_PLATFORM
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def release_date
|
|
40
|
+
Date.parse RUBY_RELEASE_DATE
|
|
41
|
+
end
|
|
42
|
+
alias date release_date
|
|
43
|
+
|
|
44
|
+
def description
|
|
45
|
+
RUBY_DESCRIPTION
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def compare(other_version)
|
|
51
|
+
case other_version
|
|
52
|
+
when nil
|
|
53
|
+
matcher
|
|
54
|
+
when Float
|
|
55
|
+
other_version == RUBY_VERSION.to_f
|
|
56
|
+
else
|
|
57
|
+
other_version.to_s == RUBY_VERSION
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def matcher
|
|
63
|
+
return @ruby if @ruby
|
|
64
|
+
|
|
65
|
+
@ruby = RUBY_VERSION.dup
|
|
66
|
+
@ruby.instance_eval do
|
|
67
|
+
alias below <
|
|
68
|
+
alias below? <
|
|
69
|
+
alias at_most <=
|
|
70
|
+
alias at_most? <=
|
|
71
|
+
alias above >
|
|
72
|
+
alias above? >
|
|
73
|
+
alias at_least >=
|
|
74
|
+
alias at_least? >=
|
|
75
|
+
alias exactly ==
|
|
76
|
+
alias exactly? ==
|
|
77
|
+
def not(other)
|
|
78
|
+
self != other
|
|
79
|
+
end
|
|
80
|
+
alias not? not
|
|
81
|
+
alias between between?
|
|
82
|
+
|
|
83
|
+
def newer_than(other)
|
|
84
|
+
case other.class
|
|
85
|
+
when Date, Time
|
|
86
|
+
other.class.parse(RUBY_RELEASE_DATE) > other
|
|
87
|
+
else
|
|
88
|
+
RUBY_RELEASE_DATE > other.to_s
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
alias newer_than? newer_than
|
|
92
|
+
|
|
93
|
+
def older_than(other)
|
|
94
|
+
case other.class
|
|
95
|
+
when Date, Time
|
|
96
|
+
other.class.parse(RUBY_RELEASE_DATE) < other
|
|
97
|
+
else
|
|
98
|
+
RUBY_RELEASE_DATE < other.to_s
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
alias older_than? older_than
|
|
102
|
+
|
|
103
|
+
def released_today
|
|
104
|
+
RubyVersion.date == Date.today
|
|
105
|
+
end
|
|
106
|
+
alias released_today? released_today
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
@ruby.freeze
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# J-_-L
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
def alias_for(m, *aliases)
|
|
4
|
+
aliases.each{ |a|
|
|
5
|
+
class_eval "alias #{a} #{m}"
|
|
6
|
+
}
|
|
7
|
+
end
|
|
8
|
+
alias aliases_for alias_for
|
|
9
|
+
|
|
10
|
+
class Module
|
|
11
|
+
def alias_method_for(m, *alias_methods)
|
|
12
|
+
alias_methods.each{ |a|
|
|
13
|
+
class_eval do
|
|
14
|
+
alias_method a.to_sym, m.to_sym
|
|
15
|
+
end
|
|
16
|
+
}
|
|
17
|
+
end
|
|
18
|
+
alias alias_methods_for alias_method_for
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# J-_-L
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
require 'zucker'
|
|
2
|
+
|
|
3
|
+
class Object
|
|
4
|
+
alias is_an? is_a? # thanks to utility_belt
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module Enumerable
|
|
8
|
+
alias with zip
|
|
9
|
+
alias % zip
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class Array
|
|
13
|
+
alias ** product
|
|
14
|
+
alias contains? include?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class String
|
|
18
|
+
alias contains? include?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Hash
|
|
22
|
+
alias + merge
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class Binding
|
|
26
|
+
#alias [] eval
|
|
27
|
+
def [](expr)
|
|
28
|
+
self.eval "#{expr}"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class << File
|
|
33
|
+
alias filename basename # thanks rdp :)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class << Dir
|
|
37
|
+
def join(*args)
|
|
38
|
+
File.join(*args)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def split(*args)
|
|
42
|
+
File.split(*args)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# constants - who would use these in real-world code for other things?
|
|
47
|
+
Infinity = 1.0 / 0.0 # or 2*Float::MAX or Float::INFINITY
|
|
48
|
+
NaN = 0.0 / 0.0
|
|
49
|
+
|
|
50
|
+
# J-_-L
|
|
51
|
+
|