提交 ee69ef62 编写于 作者: U Uģis Ozols

Remove some of the ActiveSupport core extensions related to 1.8.

上级 8e749cd4
# encoding: utf-8
require 'active_support/core_ext/big_decimal/conversions'
require 'active_support/core_ext/float/rounding'
require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/string/output_safety'
......
require "pathname"
require "active_support/core_ext/class"
require "active_support/core_ext/io"
require "action_view/template"
module ActionView
......
# Date memoizes some instance methods using metaprogramming to wrap
# the methods with one that caches the result in an instance variable.
#
# If a Date is frozen but the memoized method hasn't been called, the
# first call will result in a frozen object error since the memo
# instance variable is uninitialized.
#
# Work around by eagerly memoizing before the first freeze.
#
# Ruby 1.9 uses a preinitialized instance variable so it's unaffected.
# This hack is as close as we can get to feature detection:
if RUBY_VERSION < '1.9'
require 'date'
begin
::Date.today.freeze.jd
rescue => frozen_object_error
if frozen_object_error.message =~ /frozen/
class Date #:nodoc:
def freeze
unless frozen?
self.class.private_instance_methods(false).each do |m|
if m.to_s =~ /\A__\d+__\Z/
instance_variable_set(:"@#{m}", [send(m)])
end
end
end
super
end
end
end
end
end
require 'active_support/core_ext/float/rounding'
class Float
alias precisionless_round round
private :precisionless_round
# Rounds the float with the specified precision.
#
# x = 1.337
# x.round # => 1
# x.round(1) # => 1.3
# x.round(2) # => 1.34
def round(precision = nil)
if precision
magnitude = 10.0 ** precision
(self * magnitude).round / magnitude
else
precisionless_round
end
end
end if RUBY_VERSION < '1.9'
if RUBY_VERSION < '1.9.2'
# :stopdoc:
class IO
def self.binread(name, length = nil, offset = nil)
return File.read name unless length || offset
File.open(name, 'rb') { |f|
f.seek offset if offset
f.read length
}
end
end
# :startdoc:
end
......@@ -21,7 +21,6 @@ module ActiveSupport
require 'active_support/core_ext/time/zones'
require 'active_support/core_ext/date/acts_like'
require 'active_support/core_ext/date/freeze'
require 'active_support/core_ext/date/calculations'
require 'active_support/core_ext/date/conversions'
require 'active_support/core_ext/date/zones'
......
require 'abstract_unit'
require 'active_support/core_ext/float/rounding'
class FloatExtRoundingTests < Test::Unit::TestCase
def test_round_for_positive_number
assert_equal 1, 1.4.round
assert_equal 2, 1.6.round
assert_equal 2, 1.6.round(0)
assert_equal 1.4, 1.4.round(1)
assert_equal 1.4, 1.4.round(3)
assert_equal 1.5, 1.45.round(1)
assert_equal 1.45, 1.445.round(2)
end
def test_round_for_negative_number
assert_equal( -1, -1.4.round )
assert_equal( -2, -1.6.round )
assert_equal( -1.4, -1.4.round(1) )
assert_equal( -1.5, -1.45.round(1) )
end
def test_round_with_negative_precision
assert_equal 123460.0, 123456.0.round(-1)
assert_equal 123500.0, 123456.0.round(-2)
end
end
require 'abstract_unit'
require 'active_support/core_ext/io'
class IOTest < Test::Unit::TestCase
def test_binread_one_arg
assert_equal File.read(__FILE__), IO.binread(__FILE__)
end
def test_binread_two_args
assert_equal File.read(__FILE__).bytes.first(10).pack('C*'),
IO.binread(__FILE__, 10)
end
def test_binread_three_args
actual = IO.binread(__FILE__, 5, 10)
expected = File.open(__FILE__, 'rb') { |f|
f.seek 10
f.read 5
}
assert_equal expected, actual
end
end
......@@ -1974,18 +1974,6 @@ The method +ordinalize+ returns the ordinal string corresponding to the receiver
NOTE: Defined in +active_support/core_ext/integer/inflections.rb+.
h3. Extensions to +Float+
h4. +round+
The built-in method +Float#round+ rounds a float to the nearest integer. In Ruby 1.9 this method takes an optional argument to let you specify a precision. Active Support adds that functionality to +round+ in previous versions of Ruby:
<ruby>
Math::E.round(4) # => 2.7183
</ruby>
NOTE: Defined in +active_support/core_ext/float/rounding.rb+.
h3. Extensions to +BigDecimal+
...
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册