lib/backports/symbol.rb in backports-1.5.0 vs lib/backports/symbol.rb in backports-1.6.0
- old
+ new
@@ -1,6 +1,20 @@
class Symbol
# Standard in ruby 1.9. See official documentation[http://ruby-doc.org/core-1.9/classes/Symbol.html]
def to_proc
Proc.new { |*args| args.shift.__send__(self, *args) }
end unless :to_proc.respond_to?(:to_proc)
+
+ include Enumerable
+
+ [ [%w(<=> casecmp), {:before => "return nil unless args.first.is_a? Symbol" }],
+ [%w(capitalize downcase next succ swapcase upcase), {:after => ".to_s"}],
+ [%w(=~ [] empty? length match size), {}]
+ ].each { |methods, options| methods.each do |method|
+ module_eval <<-end_eval
+ def #{method}(*args)
+ #{options[:before]}
+ to_s.#{method}(*args)#{options[:after]}
+ end unless method_defined? :#{method}
+ end_eval
+ end }
end