lib/polyfill/v2_6/kernel.rb in polyfill-1.7.0 vs lib/polyfill/v2_6/kernel.rb in polyfill-1.8.0
- old
+ new
@@ -1,9 +1,54 @@
module Polyfill
module V2_6
module Kernel
using Polyfill(Kernel: %w[#yield_self], version: '2.5')
+ def Complex(*args, exception: true) # rubocop:disable Naming/MethodName
+ super(*args) if exception
+
+ x, y = *args
+ if !x.nil? && !x.is_a?(::String) && !x.is_a?(::Numeric) && !y.nil? && y.is_a?(::Numeric)
+ raise ::TypeError, 'not a real'
+ end
+
+ begin
+ super(*args)
+ rescue ::ArgumentError, ::TypeError
+ nil
+ end
+ end
+
+ def Float(arg, exception: true) # rubocop:disable Naming/MethodName
+ super(arg) if exception
+
+ begin
+ super(arg)
+ rescue ::ArgumentError, ::TypeError
+ nil
+ end
+ end
+
+ def Integer(arg, exception: true) # rubocop:disable Naming/MethodName
+ super(arg) if exception
+
+ begin
+ super(arg)
+ rescue ::ArgumentError, ::TypeError, ::FloatDomainError
+ nil
+ end
+ end
+
+ def Rational(*args, exception: true) # rubocop:disable Naming/MethodName
+ super(*args) if exception
+
+ begin
+ super(*args)
+ rescue ::ArgumentError, ::TypeError
+ nil
+ end
+ end
+
def then
return yield_self unless block_given?
yield_self(&::Proc.new)
end