diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-07-18 00:34:08 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-07-18 00:34:08 +0900 |
| commit | 2a410c0e1b33083402c02d8d8ae3fc99082ec8c3 (patch) | |
| tree | 120fdbb880253b2b6df2fc21582fa2a493ab0b51 /mrbgems/mruby-rational | |
| parent | 0b5e15501671422e5badbb9890904a3e82063bda (diff) | |
| download | mruby-2a410c0e1b33083402c02d8d8ae3fc99082ec8c3.tar.gz mruby-2a410c0e1b33083402c02d8d8ae3fc99082ec8c3.zip | |
Avoid making top-level `env` in initialization code; ref #4581
Diffstat (limited to 'mrbgems/mruby-rational')
| -rw-r--r-- | mrbgems/mruby-rational/mrblib/rational.rb | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/mrbgems/mruby-rational/mrblib/rational.rb b/mrbgems/mruby-rational/mrblib/rational.rb index 93af72b96..c0b16a6ae 100644 --- a/mrbgems/mruby-rational/mrblib/rational.rb +++ b/mrbgems/mruby-rational/mrblib/rational.rb @@ -89,28 +89,29 @@ module Kernel a, b = b, a % b until b == 0 Rational._new(numerator.div(a), denominator.div(a)) end -end -[:+, :-, :*, :/, :<=>, :==, :<, :<=, :>, :>=].each do |op| - Fixnum.instance_eval do - original_operator_name = "__original_operator_#{op}_rational" - alias_method original_operator_name, op - define_method op do |rhs| - if rhs.is_a? Rational - Rational(self).__send__(op, rhs) - else - __send__(original_operator_name, rhs) + [:+, :-, :*, :/, :<=>, :==, :<, :<=, :>, :>=].each do |op| + Fixnum.instance_eval do + original_operator_name = "__original_operator_#{op}_rational" + alias_method original_operator_name, op + define_method op do |rhs| + if rhs.is_a? Rational + Rational(self).__send__(op, rhs) + else + __send__(original_operator_name, rhs) + end end end - end - Float.instance_eval do - original_operator_name = "__original_operator_#{op}_rational" - alias_method original_operator_name, op - define_method op do |rhs| - if rhs.is_a? Rational - rhs = rhs.to_f + Float.instance_eval do + original_operator_name = "__original_operator_#{op}_rational" + alias_method original_operator_name, op + define_method op do |rhs| + if rhs.is_a? Rational + rhs = rhs.to_f + end + __send__(original_operator_name, rhs) end - __send__(original_operator_name, rhs) - end - end if Object.const_defined?(:Float) + end if Object.const_defined?(:Float) + end end + |
