zucker 2 → 3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. data/CHANGELOG +12 -0
  2. data/README +4 -1
  3. data/Rakefile +17 -7
  4. data/lib/zucker.rb +7 -1
  5. data/lib/zucker/2/all.rb +2 -2
  6. data/lib/zucker/2/debug.rb +3 -3
  7. data/lib/zucker/2/default.rb +1 -1
  8. data/lib/zucker/3/D.rb +19 -0
  9. data/lib/zucker/3/alias_for.rb +19 -0
  10. data/lib/zucker/3/aliases.rb +28 -0
  11. data/lib/zucker/3/all.rb +6 -0
  12. data/lib/zucker/3/array.rb +23 -0
  13. data/lib/zucker/3/array2proc.rb +16 -0
  14. data/lib/zucker/3/binding.rb +25 -0
  15. data/lib/zucker/3/blank.rb +26 -0
  16. data/lib/zucker/3/class2proc.rb +10 -0
  17. data/lib/zucker/3/debug.rb +6 -0
  18. data/lib/zucker/3/default.rb +35 -0
  19. data/lib/zucker/3/egonil.rb +14 -0
  20. data/lib/zucker/3/enumerable.rb +12 -0
  21. data/lib/zucker/3/hash.rb +19 -0
  22. data/lib/zucker/3/hash2proc.rb +14 -0
  23. data/lib/zucker/3/info.rb +167 -0
  24. data/lib/zucker/3/iterate.rb +23 -0
  25. data/lib/zucker/3/ivars.rb +26 -0
  26. data/lib/zucker/3/kernel.rb +48 -0
  27. data/lib/zucker/3/mcopy.rb +8 -0
  28. data/lib/zucker/3/mm.rb +31 -0
  29. data/lib/zucker/3/not.rb +17 -0
  30. data/lib/zucker/3/regexp2proc.rb +10 -0
  31. data/lib/zucker/3/sandbox.rb +19 -0
  32. data/lib/zucker/3/square_brackets_for.rb +20 -0
  33. data/lib/zucker/3/string.rb +47 -0
  34. data/lib/zucker/3/tap.rb +9 -0
  35. data/lib/zucker/3/unary.rb +22 -0
  36. data/lib/zucker/3/union.rb +14 -0
  37. data/lib/zucker/alias_for.rb +19 -0
  38. data/lib/zucker/array.rb +8 -2
  39. data/lib/zucker/debug.rb +2 -0
  40. data/lib/zucker/default.rb +11 -1
  41. data/lib/zucker/info.rb +5 -2
  42. data/lib/zucker/kernel.rb +41 -11
  43. data/lib/zucker/mcopy.rb +0 -1
  44. data/lib/zucker/not.rb +17 -0
  45. data/lib/zucker/string.rb +24 -2
  46. data/lib/zucker/tap.rb +9 -0
  47. metadata +41 -160
  48. data/lib/zucker/1/desc/D.yaml +0 -23
  49. data/lib/zucker/1/desc/aliases.yaml +0 -16
  50. data/lib/zucker/1/desc/array.yaml +0 -14
  51. data/lib/zucker/1/desc/array2proc.yaml +0 -13
  52. data/lib/zucker/1/desc/binding.yaml +0 -10
  53. data/lib/zucker/1/desc/blank.yaml +0 -12
  54. data/lib/zucker/1/desc/class2proc.yaml +0 -12
  55. data/lib/zucker/1/desc/egonil.yaml +0 -17
  56. data/lib/zucker/1/desc/enumerable.yaml +0 -11
  57. data/lib/zucker/1/desc/hash.yaml +0 -12
  58. data/lib/zucker/1/desc/hash2proc.yaml +0 -11
  59. data/lib/zucker/1/desc/iterate.yaml +0 -17
  60. data/lib/zucker/1/desc/ivars.yaml +0 -20
  61. data/lib/zucker/1/desc/kernel.yaml +0 -13
  62. data/lib/zucker/1/desc/mcopy.yaml +0 -12
  63. data/lib/zucker/1/desc/mm.yaml +0 -12
  64. data/lib/zucker/1/desc/regexp2proc.yaml +0 -13
  65. data/lib/zucker/1/desc/sandbox.yaml +0 -14
  66. data/lib/zucker/1/desc/square_brackets_for.yaml +0 -23
  67. data/lib/zucker/1/desc/string.yaml +0 -13
  68. data/lib/zucker/1/desc/unary.yaml +0 -15
  69. data/lib/zucker/1/desc/union.yaml +0 -11
  70. data/lib/zucker/1/doc/meta.yaml +0 -4
  71. data/lib/zucker/1/doc/zucker_doc.html +0 -1286
  72. data/lib/zucker/1/doc/zucker_doc.rb +0 -493
  73. data/lib/zucker/1/spec/D_spec.rb +0 -27
  74. data/lib/zucker/1/spec/aliases_spec.rb +0 -34
  75. data/lib/zucker/1/spec/array2proc_spec.rb +0 -8
  76. data/lib/zucker/1/spec/array_spec.rb +0 -23
  77. data/lib/zucker/1/spec/binding_spec.rb +0 -6
  78. data/lib/zucker/1/spec/blank_spec.rb +0 -20
  79. data/lib/zucker/1/spec/class2proc_spec.rb +0 -9
  80. data/lib/zucker/1/spec/egonil_spec.rb +0 -30
  81. data/lib/zucker/1/spec/enumerable_spec.rb +0 -8
  82. data/lib/zucker/1/spec/hash2proc_spec.rb +0 -12
  83. data/lib/zucker/1/spec/hash_spec.rb +0 -10
  84. data/lib/zucker/1/spec/iterate_spec.rb +0 -54
  85. data/lib/zucker/1/spec/ivars_spec.rb +0 -20
  86. data/lib/zucker/1/spec/kernel_spec.rb +0 -34
  87. data/lib/zucker/1/spec/mcopy_spec.rb +0 -13
  88. data/lib/zucker/1/spec/mm_spec.rb +0 -6
  89. data/lib/zucker/1/spec/regexp2proc_spec.rb +0 -9
  90. data/lib/zucker/1/spec/sandbox_spec.rb +0 -7
  91. data/lib/zucker/1/spec/square_brackets_for_spec.rb +0 -59
  92. data/lib/zucker/1/spec/string_spec.rb +0 -29
  93. data/lib/zucker/1/spec/unary_spec.rb +0 -26
  94. data/lib/zucker/1/spec/union_spec.rb +0 -13
  95. data/lib/zucker/2/desc/D.yaml +0 -23
  96. data/lib/zucker/2/desc/aliases.yaml +0 -16
  97. data/lib/zucker/2/desc/array.yaml +0 -14
  98. data/lib/zucker/2/desc/array2proc.yaml +0 -17
  99. data/lib/zucker/2/desc/binding.yaml +0 -10
  100. data/lib/zucker/2/desc/blank.yaml +0 -10
  101. data/lib/zucker/2/desc/class2proc.yaml +0 -12
  102. data/lib/zucker/2/desc/egonil.yaml +0 -17
  103. data/lib/zucker/2/desc/enumerable.yaml +0 -11
  104. data/lib/zucker/2/desc/hash.yaml +0 -14
  105. data/lib/zucker/2/desc/hash2proc.yaml +0 -11
  106. data/lib/zucker/2/desc/info.yaml +0 -12
  107. data/lib/zucker/2/desc/iterate.yaml +0 -17
  108. data/lib/zucker/2/desc/ivars.yaml +0 -20
  109. data/lib/zucker/2/desc/kernel.yaml +0 -13
  110. data/lib/zucker/2/desc/mcopy.yaml +0 -12
  111. data/lib/zucker/2/desc/mm.yaml +0 -12
  112. data/lib/zucker/2/desc/regexp2proc.yaml +0 -13
  113. data/lib/zucker/2/desc/sandbox.yaml +0 -19
  114. data/lib/zucker/2/desc/square_brackets_for.yaml +0 -23
  115. data/lib/zucker/2/desc/string.yaml +0 -13
  116. data/lib/zucker/2/desc/unary.yaml +0 -15
  117. data/lib/zucker/2/desc/union.yaml +0 -11
  118. data/lib/zucker/2/doc/zucker_doc.html +0 -1494
  119. data/lib/zucker/2/doc/zucker_doc.rb +0 -498
  120. data/lib/zucker/2/spec/D_spec.rb +0 -35
  121. data/lib/zucker/2/spec/aliases_spec.rb +0 -13
  122. data/lib/zucker/2/spec/array2proc_spec.rb +0 -12
  123. data/lib/zucker/2/spec/array_spec.rb +0 -23
  124. data/lib/zucker/2/spec/binding_spec.rb +0 -8
  125. data/lib/zucker/2/spec/blank_spec.rb +0 -20
  126. data/lib/zucker/2/spec/class2proc_spec.rb +0 -9
  127. data/lib/zucker/2/spec/egonil_spec.rb +0 -30
  128. data/lib/zucker/2/spec/enumerable_spec.rb +0 -8
  129. data/lib/zucker/2/spec/hash2proc_spec.rb +0 -12
  130. data/lib/zucker/2/spec/hash_spec.rb +0 -17
  131. data/lib/zucker/2/spec/info_spec.rb +0 -8
  132. data/lib/zucker/2/spec/iterate_spec.rb +0 -54
  133. data/lib/zucker/2/spec/ivars_spec.rb +0 -20
  134. data/lib/zucker/2/spec/kernel_spec.rb +0 -28
  135. data/lib/zucker/2/spec/mcopy_spec.rb +0 -13
  136. data/lib/zucker/2/spec/mm_spec.rb +0 -8
  137. data/lib/zucker/2/spec/regexp2proc_spec.rb +0 -9
  138. data/lib/zucker/2/spec/sandbox_spec.rb +0 -26
  139. data/lib/zucker/2/spec/spec_helper.rb +0 -18
  140. data/lib/zucker/2/spec/square_brackets_for_spec.rb +0 -59
  141. data/lib/zucker/2/spec/string_spec.rb +0 -29
  142. data/lib/zucker/2/spec/unary_spec.rb +0 -26
  143. data/lib/zucker/2/spec/union_spec.rb +0 -15
  144. data/lib/zucker/desc/D.yaml +0 -23
  145. data/lib/zucker/desc/aliases.yaml +0 -16
  146. data/lib/zucker/desc/array.yaml +0 -14
  147. data/lib/zucker/desc/array2proc.yaml +0 -17
  148. data/lib/zucker/desc/binding.yaml +0 -10
  149. data/lib/zucker/desc/blank.yaml +0 -10
  150. data/lib/zucker/desc/class2proc.yaml +0 -12
  151. data/lib/zucker/desc/egonil.yaml +0 -17
  152. data/lib/zucker/desc/enumerable.yaml +0 -11
  153. data/lib/zucker/desc/hash.yaml +0 -14
  154. data/lib/zucker/desc/hash2proc.yaml +0 -11
  155. data/lib/zucker/desc/info.yaml +0 -12
  156. data/lib/zucker/desc/iterate.yaml +0 -17
  157. data/lib/zucker/desc/ivars.yaml +0 -20
  158. data/lib/zucker/desc/kernel.yaml +0 -13
  159. data/lib/zucker/desc/mcopy.yaml +0 -12
  160. data/lib/zucker/desc/mm.yaml +0 -12
  161. data/lib/zucker/desc/regexp2proc.yaml +0 -13
  162. data/lib/zucker/desc/sandbox.yaml +0 -19
  163. data/lib/zucker/desc/square_brackets_for.yaml +0 -23
  164. data/lib/zucker/desc/string.yaml +0 -13
  165. data/lib/zucker/desc/unary.yaml +0 -15
  166. data/lib/zucker/desc/union.yaml +0 -11
  167. data/lib/zucker/doc/zucker_doc.html +0 -1494
  168. data/lib/zucker/doc/zucker_doc.rb +0 -498
  169. data/lib/zucker/edge/ideas/args.rb +0 -22
  170. data/lib/zucker/edge/ideas/args.yaml +0 -19
  171. data/lib/zucker/edge/ideas/args_spec.rb +0 -19
  172. data/lib/zucker/edge/ideas/clone_deep.rb +0 -21
  173. data/lib/zucker/edge/ideas/clone_deep_spec.rb +0 -12
  174. data/lib/zucker/edge/ideas/dclone.yaml +0 -12
  175. data/lib/zucker/edge/ideas/hash.rb +0 -18
  176. data/lib/zucker/edge/ideas/require_directory.rb +0 -6
  177. data/lib/zucker/spec/D_spec.rb +0 -35
  178. data/lib/zucker/spec/aliases_spec.rb +0 -13
  179. data/lib/zucker/spec/array2proc_spec.rb +0 -12
  180. data/lib/zucker/spec/array_spec.rb +0 -23
  181. data/lib/zucker/spec/binding_spec.rb +0 -8
  182. data/lib/zucker/spec/blank_spec.rb +0 -20
  183. data/lib/zucker/spec/class2proc_spec.rb +0 -9
  184. data/lib/zucker/spec/egonil_spec.rb +0 -30
  185. data/lib/zucker/spec/enumerable_spec.rb +0 -8
  186. data/lib/zucker/spec/hash2proc_spec.rb +0 -12
  187. data/lib/zucker/spec/hash_spec.rb +0 -17
  188. data/lib/zucker/spec/info_spec.rb +0 -8
  189. data/lib/zucker/spec/iterate_spec.rb +0 -54
  190. data/lib/zucker/spec/ivars_spec.rb +0 -20
  191. data/lib/zucker/spec/kernel_spec.rb +0 -28
  192. data/lib/zucker/spec/mcopy_spec.rb +0 -13
  193. data/lib/zucker/spec/mm_spec.rb +0 -8
  194. data/lib/zucker/spec/regexp2proc_spec.rb +0 -9
  195. data/lib/zucker/spec/sandbox_spec.rb +0 -26
  196. data/lib/zucker/spec/spec_helper.rb +0 -18
  197. data/lib/zucker/spec/square_brackets_for_spec.rb +0 -59
  198. data/lib/zucker/spec/string_spec.rb +0 -29
  199. data/lib/zucker/spec/unary_spec.rb +0 -26
  200. data/lib/zucker/spec/union_spec.rb +0 -15
@@ -0,0 +1,23 @@
1
+ def iterate(*params)
2
+ # params.shift.zip(*params).each{ |*elements| yield *elements }
3
+
4
+ first = params.shift
5
+ if params.empty? # single param - like each
6
+ if block_given?
7
+ first.map{|e| yield e }
8
+ else
9
+ first.map
10
+ end
11
+ else
12
+ padded_first = Array.new( [first, *params].max_by(&:size).size ){|i| first[i] } # append nils
13
+ obj = padded_first.zip *params
14
+ if block_given?
15
+ obj.map{|es| yield *es }
16
+ else
17
+ obj.map.to_enum
18
+ end
19
+ end
20
+ end
21
+
22
+ # J-_-L
23
+
@@ -0,0 +1,26 @@
1
+ def instance_variables_from(obj, *only)
2
+ iter =
3
+ if obj.is_a? Binding
4
+ obj.eval('local_variables').map{|e| [obj.eval("#{e}"), e] }
5
+ elsif obj.is_a? Hash
6
+ obj.map{|k,v| [v,k] }
7
+ else
8
+ # elsif obj.is_a? Enumerable
9
+ obj.each.with_index
10
+ end
11
+
12
+ ret = []
13
+ iter.each{ |value, arg|
14
+ arg = arg.to_s
15
+ if only.include?(arg) || only.include?(arg.to_sym) || only.empty?
16
+ arg = '_' + arg if (48..57).member? arg.unpack('C')[0] # 1.8+1.9
17
+ ret << ivar = :"@#{arg}"
18
+ self.instance_variable_set ivar, value
19
+ end
20
+ }
21
+ ret
22
+ end
23
+ alias ivars instance_variables_from
24
+
25
+ # J-_-L
26
+
@@ -0,0 +1,48 @@
1
+ module Kernel
2
+ def activate_warnings!
3
+ $VERBOSE = true
4
+ end
5
+
6
+ def deactivate_warnings!
7
+ $VERBOSE = false
8
+ end
9
+
10
+ def library?
11
+ __FILE__ != $PROGRAM_NAME
12
+ end
13
+
14
+ def executed_directly?
15
+ __FILE__ == $PROGRAM_NAME
16
+ end
17
+ alias standalone? executed_directly?
18
+
19
+ def ignore_sigint! # ctrl+c
20
+ Signal.trap *%w|SIGINT IGNORE|
21
+ end
22
+
23
+ # version getter
24
+ def ruby_1_9?
25
+ RUBY_VERSION[2,1] == '9'
26
+ end
27
+
28
+ def ruby_1_8?
29
+ RUBY_VERSION[2,1] == '8'
30
+ end
31
+
32
+ def ruby_1_9!
33
+ if RUBY_VERSION[2,1] != '9'
34
+ fail NotImplementedError, "Sorry, this script requires Ruby 1.9, but was executed with a different Ruby version!"
35
+ end
36
+ true
37
+ end
38
+
39
+ def ruby_1_8!
40
+ if RUBY_VERSION[2,1] != '8'
41
+ fail NotImplementedError, "Sorry, this script requires Ruby 1.8, but was executed with a different Ruby version!"
42
+ end
43
+ true
44
+ end
45
+ end
46
+
47
+ # J-_-L
48
+
@@ -0,0 +1,8 @@
1
+ class Object
2
+ def mcopy
3
+ Marshal.load Marshal.dump self
4
+ end
5
+ end
6
+
7
+ # J-_-L
8
+
@@ -0,0 +1,31 @@
1
+ module Kernel
2
+ def method_list(levels = 1)
3
+ if self.is_a? Module
4
+ klass, method_function = self, :public_methods
5
+ else
6
+ klass, method_function = self.class, :public_instance_methods
7
+
8
+ eigen = self.singleton_methods
9
+ if !eigen.empty?
10
+ puts :Eigenclass # sorry for not being up to date, I just love the word
11
+ p self.singleton_methods
12
+ end
13
+ end
14
+
15
+ levels.times{ |level|
16
+ if cur = klass.ancestors[level]
17
+ p cur # put class name
18
+ p cur.send method_function, false # put methods of the class
19
+ else
20
+ break
21
+ end
22
+ }
23
+
24
+ self # or whatever
25
+ end
26
+
27
+ alias mm method_list
28
+ end
29
+
30
+ # J-_-L
31
+
@@ -0,0 +1,17 @@
1
+ class Object
2
+ def not
3
+ NotClass.new self
4
+ end
5
+
6
+ class NotClass < BasicObject
7
+ def initialize(receiver)
8
+ @receiver = receiver
9
+ end
10
+
11
+ def method_missing(m, *args, &block)
12
+ not @receiver.public_send( m, *args, &block )
13
+ end
14
+ end
15
+ end
16
+
17
+ # J-_-L
@@ -0,0 +1,10 @@
1
+ class Regexp
2
+ def to_proc
3
+ proc do |e|
4
+ e.to_s[self]
5
+ end
6
+ end
7
+ end
8
+
9
+ # J-_-L
10
+
@@ -0,0 +1,19 @@
1
+ def sandbox(rescueblock_or_default=nil)
2
+ Thread.start do
3
+ $SAFE = 4
4
+ yield
5
+ end.value
6
+ rescue SecurityError => e
7
+ if !rescueblock_or_default.nil?
8
+ if rescueblock_or_default.is_a? Proc
9
+ rescueblock_or_default.call e
10
+ else
11
+ rescueblock_or_default
12
+ end
13
+ else
14
+ raise e
15
+ end
16
+ end
17
+
18
+ # J-_-L
19
+
@@ -0,0 +1,20 @@
1
+ def square_brackets_for(ivar, assignment = true)
2
+ # undef [] if respond_to? :[]
3
+ # undef []= if respond_to? :[]=
4
+
5
+ #instance_eval do
6
+ define_method :[] do |key|
7
+ (instance_variable_get :"@#{ivar}")[key]
8
+ end
9
+
10
+ if assignment
11
+ define_method :[]= do |key, value|
12
+ (instance_variable_get :"@#{ivar}")[key] = value
13
+ end
14
+ end
15
+ #end
16
+
17
+ end
18
+
19
+ # J-_-L
20
+
@@ -0,0 +1,47 @@
1
+ class String
2
+ def ^(pos)
3
+ pos = pos.to_i
4
+ if pos >= 0
5
+ self[pos..-1]
6
+ else
7
+ self[0...pos]
8
+ end
9
+ end
10
+
11
+ def lchomp(arg = $/)
12
+ self.reverse.chomp(arg).reverse
13
+ end
14
+
15
+ def lchomp!(arg = $/)
16
+ self.reverse.chomp!(arg).reverse
17
+ end
18
+
19
+ def ords
20
+ self.unpack 'C*'
21
+ end
22
+
23
+ def constantize(default_value = nil) # always uses global scope as in AS... is this good?
24
+ get_constant = lambda{
25
+ self.split(/::/).inject( Object ){ |base_constant, current_constant|
26
+ base_constant.const_get current_constant
27
+ }
28
+ }
29
+
30
+ if !default_value && !block_given?
31
+ get_constant.call
32
+ else
33
+ begin
34
+ get_constant.call
35
+ rescue NameError
36
+ if block_given?
37
+ yield self
38
+ else
39
+ default_value
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ # J-_-L
47
+
@@ -0,0 +1,9 @@
1
+ def tap_on(obj, &block)
2
+ obj.tap &block
3
+ end
4
+
5
+ def make_new(what, *args, &block)
6
+ what.new(*args).tap &block
7
+ end
8
+
9
+ # J-_-L
@@ -0,0 +1,22 @@
1
+ class String
2
+ def +@
3
+ self
4
+ end
5
+
6
+ def -@
7
+ to_sym
8
+ end
9
+ end
10
+
11
+ class Symbol
12
+ def +@
13
+ to_s
14
+ end
15
+
16
+ def -@
17
+ self
18
+ end
19
+ end
20
+
21
+ # J-_-L
22
+
@@ -0,0 +1,14 @@
1
+ class Regexp
2
+ def |(arg)
3
+ Regexp.union self, arg.is_a?(Regexp) ? arg : arg.to_s
4
+ end
5
+ end
6
+
7
+ class String
8
+ def |(arg)
9
+ Regexp.union self, arg.is_a?(Regexp) ? arg : arg.to_s
10
+ end
11
+ end
12
+
13
+ # J-_-L
14
+
@@ -0,0 +1,19 @@
1
+ def alias_for(m, *aliases)
2
+ aliases.each{ |a|
3
+ class_eval "alias #{a} #{m}"
4
+ }
5
+ end
6
+ alias aliases_for alias_for
7
+
8
+ class Module
9
+ def alias_method_for(m, *alias_methods)
10
+ alias_methods.each{ |a|
11
+ class_eval do
12
+ alias_method a.to_sym, m.to_sym
13
+ end
14
+ }
15
+ end
16
+ alias alias_methods_for alias_method_for
17
+ end
18
+
19
+ # J-_-L
@@ -4,8 +4,14 @@ class Array
4
4
  (other - self)
5
5
  end
6
6
 
7
- def sum # sry, you just need this one too often
8
- inject :+
7
+ # can take an argument & block to be Rails compatible
8
+ def sum(identity = 0, &block)
9
+ # inject(:+)
10
+ if block_given?
11
+ map(&block).sum( identity )
12
+ else
13
+ inject(:+) || identity
14
+ end
9
15
  end
10
16
 
11
17
  def chrs
@@ -1,3 +1,5 @@
1
+ require 'zucker'
2
+
1
3
  require 'zucker/D'
2
4
  require 'zucker/mm'
3
5
  require 'zucker/binding'
@@ -1,5 +1,8 @@
1
+ require 'zucker'
2
+
1
3
  # default
2
4
  zucker = %w|
5
+ alias_for
3
6
  aliases
4
7
  array
5
8
  array2proc
@@ -9,17 +12,24 @@ egonil
9
12
  enumerable
10
13
  hash
11
14
  hash2proc
15
+ info
12
16
  iterate
13
17
  ivars
14
18
  kernel
15
19
  mcopy
20
+ not
16
21
  regexp2proc
17
22
  sandbox
18
23
  square_brackets_for
19
24
  string
25
+ tap
20
26
  unary
21
27
  union
22
28
  |
23
29
 
24
- zucker.each{|rb| require "zucker/#{rb}"}
30
+ # remove 1.9 if 1.8
31
+ if RUBY_VERSION < '1.9'
32
+ zucker -= %w|not tap union|
33
+ end
25
34
 
35
+ zucker.each{|rb| require File.join( 'zucker', rb )}
@@ -5,7 +5,10 @@ module Info
5
5
  send what
6
6
  end
7
7
 
8
- # TODO: maybe add a descriptions method
8
+ # list available info methods
9
+ def list
10
+ singleton_methods - [:[], :list, '[]', 'list']
11
+ end
9
12
  end
10
13
 
11
14
  module_function
@@ -124,7 +127,7 @@ module Info
124
127
 
125
128
  # defined objects
126
129
  def global_variables
127
- global_variables
130
+ Object.send :global_variables
128
131
  end
129
132
 
130
133
  def global_constants
@@ -1,17 +1,47 @@
1
- def activate_warnings!
2
- $VERBOSE = true
3
- end
1
+ module Kernel
2
+ def activate_warnings!
3
+ $VERBOSE = true
4
+ end
5
+
6
+ def deactivate_warnings!
7
+ $VERBOSE = false
8
+ end
9
+
10
+ def library?
11
+ __FILE__ != $PROGRAM_NAME
12
+ end
13
+
14
+ def executed_directly?
15
+ __FILE__ == $PROGRAM_NAME
16
+ end
17
+ alias standalone? executed_directly?
18
+
19
+ def ignore_sigint! # ctrl+c
20
+ Signal.trap *%w|SIGINT IGNORE|
21
+ end
4
22
 
5
- def deactivate_warnings!
6
- $VERBOSE = false
7
- end
23
+ # version getter
24
+ def ruby_1_9?
25
+ RUBY_VERSION[2,1] == '9'
26
+ end
8
27
 
9
- def library?
10
- __FILE__ != $PROGRAM_NAME
11
- end
28
+ def ruby_1_8?
29
+ RUBY_VERSION[2,1] == '8'
30
+ end
31
+
32
+ def ruby_1_9!
33
+ if RUBY_VERSION[2,1] != '9'
34
+ fail NotImplementedError, "Sorry, this script requires Ruby 1.9, but was executed with a different Ruby version!"
35
+ end
36
+ true
37
+ end
12
38
 
13
- def ignore_sigint! # ctrl+c
14
- Signal.trap *%w|SIGINT IGNORE|
39
+ def ruby_1_8!
40
+ if RUBY_VERSION[2,1] != '8'
41
+ fail NotImplementedError, "Sorry, this script requires Ruby 1.8, but was executed with a different Ruby version!"
42
+ end
43
+ true
44
+ end
15
45
  end
16
46
 
17
47
  # J-_-L