################################################################################
# Sun Mar 25 14:35:00 JST 2007
# Python like GTLT opreator
################################################################################
class FalseClass
def < (v); false end
def > (v); false end
def <= (v); false end
def >= (v); false end
# def =~ (v); false end
end
[Fixnum, Bignum, Float].each do
|klass|
klass.class_eval do
alias_method(:pylg_old_lt, :<)
alias_method(:pylg_old_gt, :>)
alias_method(:pylg_old_elt, :<=)
alias_method(:pylg_old_egt, :>=)
def < (v); v && pylg_old_lt(v) ? v : false end
def > (v); v && pylg_old_gt(v) ? v : false end
def <= (v); v && pylg_old_elt(v) ? v : false end
def >= (v); v && pylg_old_egt(v) ? v : false end
end
end
# Tests #
require 'test/unit'
class TC_Test < Test::Unit::TestCase
def test_test
assert_equal false, 1 < 1
assert_equal false, 1 < 1
assert_equal 2, 1 < 2
assert_equal 1, -1 < 0 < 1
assert_equal 1, -1 <= 0 < 1
assert_equal 1, -1 <= 0 <= 1
assert_equal 1, -1 <= 1 <= 1
assert_equal false, -1 <= 1 > 1
assert_equal 1, -1 <= 2 > 1
assert_equal 2, -1 <= 2 >= 2
assert_equal false, 3 <= 2 <= 3
# assert_equal false, 1 < 2 =~ 3
# assert_equal false, 1 < (2 =~ 3) < 4
# assert_equal 4, 1 < (2 =~ 2) < 4
# assert_equal 4, 1 < 2 =~ 2 < 4 # 演算子の優先順位の関係で fail
end
end