1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
Commit graph

16 commits

Author SHA1 Message Date
Yves Senn
081a3963ea number_to_percentage and precision: 0 work with NAN and INFINITY.
Closes #19227.
2015-03-06 09:04:51 +01:00
Rafael Mendonça França
2d2bcde3cb Merge pull request #12067 from jackxxu/keep_precision
Enable number_to_percentage to keep the number's precision by allowing :precision option value to be nil

Conflicts:
	activesupport/CHANGELOG.md
	activesupport/lib/active_support/number_helper.rb
	activesupport/test/number_helper_test.rb
2015-02-06 16:21:28 -02:00
Xavier Noria
500deece9e Fixes the digits counter of AS's NumberToRoundedConverter
Zero has one digit, but Math.log10(0) returns -Infinity. The method
needs to special-case zero.

The patch adds a regression test that is not clearly related to the
underlying issue because digit_count is private and has no coverage.
Gray area.

This bug was uncovered by 60062cf.
2014-08-20 16:25:35 +02:00
Juanjo Bazán
60062cf39a Fix AS::NumberHelper results with rationals
:precision was incorrectly being applied to Rationals

before:
  ActiveSupport::NumberHelper.number_to_rounded Rational(10, 3), precision: 2
  => "3.3"
after:
  ActiveSupport::NumberHelper.number_to_rounded Rational(10, 3), precision: 2
  => "3.33"
2014-05-31 20:07:47 +02:00
Mark J. Titorenko
3703a8ae9b Require active_support/core_ext/string/output_safety and use html_safe rather than use non-public SafeBuffer API. 2014-05-12 17:23:28 +01:00
Mark J. Titorenko
9c8242ee6a Use block parameter rather than $1 during gsub! so ActiveSupport::SafeBuffer values aren't mangled.
Fixes #15064
2014-05-12 17:13:19 +01:00
Yves Senn
378c8d2c99 fix number_to_percentage with Float::NAN, Float::INFINITY.
Closes #14405.

This is a follow-up to 9e997e9039 to restore
the documented behavior.
2014-03-17 10:55:21 +01:00
Kenta Murata & Akira Matsuda
9e997e9039 Fix AS::NumberHelper results with large precisions
before:
  ActiveSupport::NumberHelper.number_to_rounded '3.14159', precision: 50
  => "3.14158999999999988261834005243144929409027099609375"
after:
  ActiveSupport::NumberHelper.number_to_rounded '3.14159', precision: 50
  => "3.14159000000000000000000000000000000000000000000000"
2013-12-20 16:26:35 +09:00
Kuldeep Aggarwal
8195196e2a removed duplicate test case 2013-12-04 22:32:53 +05:30
Jack Xu
24a7e60943 Enable number_to_percentage to keep the number's precision by allowing :precision to be nil
number_helper.number_to_percentage(1000, precision: nil) # => "1000%"
2013-08-28 23:46:53 -05:00
Matt Bridges
2da9d67c27 Extract ActiveSupport::NumberHelper methods to classes
Due to the overall complexity of each method individually as well as the
global shared private module methods, this pulls each helper into it's
own converter class inheriting from a generic `NumberBuilder` class.

* The `NumberBuilder` class contains the private methods needed for each helper
method an eliminates the need for special definition of specialized private
module methods.
* The `ActiveSupport::NumberHelper::DEFAULTS` constant has been moved
into the `NumberBuilder` class because the `NumberBuilder` is the only
class which needs access to it.
* For each of the builders, the `#convert` method is broken down to
smaller parts and extracted into private methods for clarity of purpose.
* Most of the mutation that once was necessary has now been eliminated.
* Several of the mathematical operations for percentage, delimited, and
rounded have been moved into private methods to ease readability and
clarity.
* Internationalization is still a bit crufty, and definitely could be
improved, but it is functional and a bit easier to follow.

The following helpers were extracted into their respective classes.

* `#number_to_percentage` -> `NumberToPercentageConverter`
* `#number_to_delimited` -> `NumberToDelimitedConverter`
* `#number_to_phone` -> `NumberToPhoneConverter`
* `#number_to_currency` -> `NumberToCurrencyConverter`
* `#number_to_rounded` -> `NumberToRoundedConverter`
* `#number_to_human_size` -> `NumberToHumanSizeConverter`
* `#number_to_human` -> `NumberToHumanConverter`
2013-07-01 12:31:36 -05:00
Carlos Antonio da Silva
38f347a825 Move number_to_human test from AP to AS
Since all changes from #9347 are related to AS, it seems proper that the
test is placed there as well.
2013-02-22 19:44:50 -03:00
Carlos Antonio da Silva
47b4d13c8d Ensure I18n format values always have precedence over defaults
Always merge I18n format values, namespaced or not, over the default
ones, to ensure I18n format defaults will have precedence over our
namespaced values.

Precedence should happen like this:

    default :format
    default :namespace :format
    i18n    :format
    i18n    :namespace :format

Because we cannot allow our namespaced default to override a I18n
:format config - ie precision in I18n :format should always have higher
precedence than our default precision for a particular :namespace.

Also simplify default format options logic.
2012-08-11 00:20:19 -03:00
Carlos Antonio da Silva
a9dccda936 Fallback to :en locale instead of handling a constant with defaults
Action Pack already comes with a default locale fine for :en, that is
always loaded. We can just fallback to this locale for defaults, if
values for the current locale cannot be found.

Closes #4420, #2802, #2890.
2012-08-11 00:20:19 -03:00
Jared Beck
371508c240 Fix handling of negative zero in number_to_currency 2012-05-28 04:42:53 -04:00
Andrew Mutz
155cd5e6b5 Moving NumberHelpers from ActionView to ActiveSupport 2012-05-27 18:14:21 -07:00