Skip to content

Commit

Permalink
Merge pull request #89 from Invoca/frozen_string_literal-and-locale-r…
Browse files Browse the repository at this point in the history
…ename

Add frozen_string_literal: true commends and deprecate default_locale config accessor in favor of locale
  • Loading branch information
radar authored May 13, 2024
2 parents d8e1e7d + c65342f commit 95ef604
Show file tree
Hide file tree
Showing 56 changed files with 221 additions and 89 deletions.
2 changes: 2 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

source 'https://rubygems.org'

gemspec
2 changes: 1 addition & 1 deletion README.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Humanize.format(0.001) => "zero point zero zero one"

```ruby
Humanize.configure do |config|
config.default_locale = :en # [:en, :es, :fr, :'fr-CH', :tr, :az, :de, :id, :th, :ru, :pt, :ms, :jp, :vi, :'zh-tw'], default: :en
config.locale = :en # [:en, :es, :fr, :'fr-CH', :tr, :az, :de, :id, :th, :ru, :pt, :ms, :jp, :vi, :'zh-tw'], default: :en
config.decimals_as = :digits # [:digits, :number], default: :digits
end
```
Expand Down
2 changes: 2 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'bundler'

Bundler::GemHelper.install_tasks
2 changes: 2 additions & 0 deletions humanize.gemspec
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

Gem::Specification.new do |s|
s.name = "humanize"
s.version = "3.1.0"
Expand Down
4 changes: 3 additions & 1 deletion lib/humanize/core_ext.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# frozen_string_literal: true

module Humanize
def humanize(locale: Humanize.config.default_locale,
def humanize(locale: Humanize.config.locale,
decimals_as: Humanize.config.decimals_as)
Humanize.format(self,
locale:,
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Humanize
%w[az de en es fr fr_ch id ms pt ru th tr jp vi zh_tw].each do |locale|
autoload locale.split('_').map(&:capitalize).join.to_sym, "humanize/locales/#{locale}.rb"
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/az.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/az'

module Humanize
Expand Down
10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/az.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/de.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/en.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/es.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/fr.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/fr_ch.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/id.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/jp.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/ms.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/pt.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/ru.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# frozen_string_literal: true

module Humanize
class Ru
INFINITY = 'бесконечность'.freeze
UNDEFINED = 'неопределенность'.freeze
NEGATIVE = 'минус'.freeze
POINT = ','.freeze
INFINITY = 'бесконечность'
UNDEFINED = 'неопределенность'
NEGATIVE = 'минус'
POINT = ','
LOTS = [nil, 'тысяч', 'миллионов', 'миллиардов', 'триллионов', 'квадриллионов', 'квинтиллионов', 'секстиллионов', 'септиллионов', 'октиллионов', 'нониллионов', 'дециллионов', 'андециллионов', 'ауодециллионов', 'тредециллионов', 'кваттордециллионов', 'квиндециллионов', 'сексдециллионов', 'септемдециллионов', 'октодециллионов', 'новемдециллионов', 'вигинтиллионов', 'анвигинтиллионов', 'дуовигинтиллионов', 'тревигинтиллионов', 'кватторвигинтиллионов', 'квинвигинтиллионов', 'сексвигинтиллионов', 'септемвигинтиллионов', 'октовигинтиллионов', 'новемвигинтиллионов', 'тригинтиллионов', 'антригинтиллионов', 'гуголов'].freeze
SPECIFIC_LOTS = [
['один тысяч', 'одна тысяча'], ['два тысяч', 'две тысячи'], ['три тысяч', 'три тысячи'], ['четыре тысяч', 'четыре тысячи'], ['один миллионов', 'один миллион'], ['два миллионов', 'два миллиона'], ['три миллионов', 'три миллиона'], ['четыре миллионов', 'четыре миллиона'], ['один миллиардов', 'один миллиард'], ['два миллиардов', 'два миллиарда'], ['три миллиардов', 'три миллиарда'], ['четыре миллиардов', 'четыре миллиарда'], ['один триллионов', 'один триллион'], ['два триллионов', 'два триллиона'], ['три триллионов', 'три триллиона'], ['четыре триллионов', 'четыре триллиона'], ['один квадриллионов', 'один квадриллион'], ['два квадриллионов', 'два квадриллиона'], ['три квадриллионов', 'три квадриллиона'], ['четыре квадриллионов', 'четыре квадриллиона'], ['один квинтиллионов', 'один квинтиллион'], ['два квинтиллионов', 'два квинтиллиона'], ['три квинтиллионов', 'три квинтиллиона'], ['четыре квинтиллионов', 'четыре квинтиллиона'], ['один секстиллионов', 'один секстиллион'], ['два секстиллионов', 'два секстиллиона'], ['три секстиллионов', 'три секстиллиона'], ['четыре секстиллионов', 'четыре секстиллиона'], ['один септиллионов', 'один септиллион'], ['два септиллионов', 'два септиллиона'], ['три септиллионов', 'три септиллиона'], ['четыре септиллионов', 'четыре септиллиона'], ['один октиллионов', 'один октиллион'], ['два октиллионов', 'два октиллиона'], ['три октиллионов', 'три октиллиона'], ['четыре октиллионов', 'четыре октиллиона'], ['один нониллионов', 'один нониллион'], ['два нониллионов', 'два нониллиона'], ['три нониллионов', 'три нониллиона'], ['четыре нониллионов', 'четыре нониллиона'], ['один дециллионов', 'один дециллион'], ['два дециллионов', 'два дециллиона'], ['три дециллионов', 'три дециллиона'], ['четыре дециллионов', 'четыре дециллиона'], ['один андециллионов', 'один андециллион'], ['два андециллионов', 'два андециллиона'], ['три андециллионов', 'три андециллиона'], ['четыре андециллионов', 'четыре андециллиона'], ['один ауодециллионов', 'один ауодециллион'], ['два ауодециллионов', 'два ауодециллиона'], ['три ауодециллионов', 'три ауодециллиона'], ['четыре ауодециллионов', 'четыре ауодециллиона'], ['один тредециллионов', 'один тредециллион'], ['два тредециллионов', 'два тредециллиона'], ['три тредециллионов', 'три тредециллиона'], ['четыре тредециллионов', 'четыре тредециллиона'], ['один кваттордециллионов', 'один кваттордециллион'], ['два кваттордециллионов', 'два кваттордециллиона'], ['три кваттордециллионов', 'три кваттордециллиона'], ['четыре кваттордециллионов', 'четыре кваттордециллиона'], ['один квиндециллионов', 'один квиндециллион'], ['два квиндециллионов', 'два квиндециллиона'], ['три квиндециллионов', 'три квиндециллиона'], ['четыре квиндециллионов', 'четыре квиндециллиона'], ['один сексдециллионов', 'один сексдециллион'], ['два сексдециллионов', 'два сексдециллиона'], ['три сексдециллионов', 'три сексдециллиона'], ['четыре сексдециллионов', 'четыре сексдециллиона'], ['один септемдециллионов', 'один септемдециллион'], ['два септемдециллионов', 'два септемдециллиона'], ['три септемдециллионов', 'три септемдециллиона'], ['четыре септемдециллионов', 'четыре септемдециллиона'], ['один октодециллионов', 'один октодециллион'], ['два октодециллионов', 'два октодециллиона'], ['три октодециллионов', 'три октодециллиона'], ['четыре октодециллионов', 'четыре октодециллиона'], ['один новемдециллионов', 'один новемдециллион'], ['два новемдециллионов', 'два новемдециллиона'], ['три новемдециллионов', 'три новемдециллиона'], ['четыре новемдециллионов', 'четыре новемдециллиона'], ['один вигинтиллионов', 'один вигинтиллион'], ['два вигинтиллионов', 'два вигинтиллиона'], ['три вигинтиллионов', 'три вигинтиллиона'], ['четыре вигинтиллионов', 'четыре вигинтиллиона'], ['один анвигинтиллионов', 'один анвигинтиллион'], ['два анвигинтиллионов', 'два анвигинтиллиона'], ['три анвигинтиллионов', 'три анвигинтиллиона'], ['четыре анвигинтиллионов', 'четыре анвигинтиллиона'], ['один дуовигинтиллионов', 'один дуовигинтиллион'], ['два дуовигинтиллионов', 'два дуовигинтиллиона'], ['три дуовигинтиллионов', 'три дуовигинтиллиона'], ['четыре дуовигинтиллионов', 'четыре дуовигинтиллиона'], ['один тревигинтиллионов', 'один тревигинтиллион'], ['два тревигинтиллионов', 'два тревигинтиллиона'], ['три тревигинтиллионов', 'три тревигинтиллиона'], ['четыре тревигинтиллионов', 'четыре тревигинтиллиона'], ['один кватторвигинтиллионов', 'один кватторвигинтиллион'], ['два кватторвигинтиллионов', 'два кватторвигинтиллиона'], ['три кватторвигинтиллионов', 'три кватторвигинтиллиона'], ['четыре кватторвигинтиллионов', 'четыре кватторвигинтиллиона'], ['один квинвигинтиллионов', 'один квинвигинтиллион'], ['два квинвигинтиллионов', 'два квинвигинтиллиона'], ['три квинвигинтиллионов', 'три квинвигинтиллиона'], ['четыре квинвигинтиллионов', 'четыре квинвигинтиллиона'], ['один сексвигинтиллионов', 'один сексвигинтиллион'], ['два сексвигинтиллионов', 'два сексвигинтиллиона'], ['три сексвигинтиллионов', 'три сексвигинтиллиона'], ['четыре сексвигинтиллионов', 'четыре сексвигинтиллиона'], ['один септемвигинтиллионов', 'один септемвигинтиллион'], ['два септемвигинтиллионов', 'два септемвигинтиллиона'], ['три септемвигинтиллионов', 'три септемвигинтиллиона'], ['четыре септемвигинтиллионов', 'четыре септемвигинтиллиона'], ['один октовигинтиллионов', 'один октовигинтиллион'], ['два октовигинтиллионов', 'два октовигинтиллиона'], ['три октовигинтиллионов', 'три октовигинтиллиона'], ['четыре октовигинтиллионов', 'четыре октовигинтиллиона'], ['один новемвигинтиллионов', 'один новемвигинтиллион'], ['два новемвигинтиллионов', 'два новемвигинтиллиона'], ['три новемвигинтиллионов', 'три новемвигинтиллиона'], ['четыре новемвигинтиллионов', 'четыре новемвигинтиллиона'], ['один тригинтиллионов', 'один тригинтиллион'], ['два тригинтиллионов', 'два тригинтиллиона'], ['три тригинтиллионов', 'три тригинтиллиона'], ['четыре тригинтиллионов', 'четыре тригинтиллиона'], ['один антригинтиллионов', 'один антригинтиллион'], ['два антригинтиллионов', 'два антригинтиллиона'], ['три антригинтиллионов', 'три антригинтиллиона'], ['четыре антригинтиллионов', 'четыре антригинтиллиона'], ['один гуголов', 'один гугол'], ['два гуголов', 'два гугола'], ['три гуголов', 'три гугола'], ['четыре гуголов', 'четыре гугола']
Expand Down
12 changes: 7 additions & 5 deletions lib/humanize/locales/constants/th.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# frozen_string_literal: true

module Humanize
class Th
POINT = "จุด".freeze
INFINITY = 'เป็นอนันต์'.freeze
UNDEFINED = 'ไม่ได้กำหนด'.freeze
NEGATIVE = 'ติดลบ'.freeze
MILLION = 'ล้าน'.freeze
POINT = "จุด"
INFINITY = 'เป็นอนันต์'
UNDEFINED = 'ไม่ได้กำหนด'
NEGATIVE = 'ติดลบ'
MILLION = 'ล้าน'
LOTS = [nil, 'ร้อย', 'พัน', 'หมื่น', 'แสน', MILLION].freeze
SUB_ONE_GROUPING = ['ศูนย์', 'หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า', 'สิบ', 'สิบเอ็ด', 'สิบสอง', 'สิบสาม', 'สิบสี่', 'สิบห้า', 'สิบหก', 'สิบเจ็ด', 'สิบแปด', 'สิบเก้า', 'ยี่สิบ', 'ยี่สิบเอ็ด', 'ยี่สิบสอง', 'ยี่สิบสาม', 'ยี่สิบสี่', 'ยี่สิบห้า', 'ยี่สิบหก', 'ยี่สิบเจ็ด', 'ยี่สิบแปด', 'ยี่สิบเก้า', 'สามสิบ', 'สามสิบเอ็ด', 'สามสิบสอง', 'สามสิบสาม', 'สามสิบสี่', 'สามสิบห้า', 'สามสิบหก', 'สามสิบเจ็ด', 'สามสิบแปด', 'สามสิบเก้า', 'สี่สิบ', 'สี่สิบเอ็ด', 'สี่สิบสอง', 'สี่สิบสาม', 'สี่สิบสี่', 'สี่สิบห้า', 'สี่สิบหก', 'สี่สิบเจ็ด', 'สี่สิบแปด', 'สี่สิบเก้า', 'ห้าสิบ', 'ห้าสิบเอ็ด', 'ห้าสิบสอง', 'ห้าสิบสาม', 'ห้าสิบสี่', 'ห้าสิบห้า', 'ห้าสิบหก', 'ห้าสิบเจ็ด', 'ห้าสิบแปด', 'ห้าสิบเก้า', 'หกสิบ', 'หกสิบเอ็ด', 'หกสิบสอง', 'หกสิบสาม', 'หกสิบสี่', 'หกสิบห้า', 'หกสิบหก', 'หกสิบเจ็ด', 'หกสิบแปด', 'หกสิบเก้า', 'เจ็ดสิบ', 'เจ็ดสิบเอ็ด', 'เจ็ดสิบสอง', 'เจ็ดสิบสาม', 'เจ็ดสิบสี่', 'เจ็ดสิบห้า', 'เจ็ดสิบหก', 'เจ็ดสิบเจ็ด', 'เจ็ดสิบแปด', 'เจ็ดสิบเก้า', 'แปดสิบ', 'แปดสิบเอ็ด', 'แปดสิบสอง', 'แปดสิบสาม', 'แปดสิบสี่', 'แปดสิบห้า', 'แปดสิบหก', 'แปดสิบเจ็ด', 'สิบแปดคน', 'แปดสิบเก้า', 'เก้าสิบ', 'เก้าสิบเอ็ด', 'เก้าสิบสอง', 'เก้าสิบสาม', 'เก้าสิบสี่', 'เก้าสิบห้า', 'เก้าสิบหก', 'เก้าสิบเจ็ด', 'เก้าสิบแปด', 'เก้าสิบเก้า'].freeze
end
Expand Down
10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/tr.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/vi.rb

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions lib/humanize/locales/constants/zh_tw.rb

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions lib/humanize/locales/de.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/de'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/en.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/en'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/es.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/es'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/fr.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/fr'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/fr_ch.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/fr_ch'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/id.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/id'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/jp.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/jp'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/ms.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/ms'

module Humanize
Expand Down
4 changes: 3 additions & 1 deletion lib/humanize/locales/pt.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/pt'

module Humanize
Expand Down Expand Up @@ -41,7 +43,7 @@ def add_grouping(parts, use_and, iteration, plural)
grouping = LOTS[iteration]
return unless grouping

grouping.sub! 'lhão', 'lhões' if plural
grouping = grouping.sub('lhão', 'lhões') if plural

parts << "#{grouping}#{conjunction(parts, use_and)}"
end
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/ru.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/ru'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/th.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/th'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/tr.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/tr'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/vi.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/vi'

module Humanize
Expand Down
2 changes: 2 additions & 0 deletions lib/humanize/locales/zh_tw.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require_relative 'constants/zh_tw'

module Humanize
Expand Down
12 changes: 8 additions & 4 deletions lib/humanize/module.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'bigdecimal'
require_relative 'locales'

Expand All @@ -6,7 +8,7 @@ module Humanize

class << self
def format(number,
locale: Humanize.config.default_locale,
locale: Humanize.config.locale,
decimals_as: Humanize.config.decimals_as)
locale_class, spacer = Humanize.for_locale(locale)

Expand Down Expand Up @@ -59,7 +61,7 @@ def stringify(parts, sign, spacer)
end

def locale_is?(locale)
Humanize.config.default_locale == locale
Humanize.config.locale == locale
end

# rubocop:disable Metrics/ParameterLists
Expand Down Expand Up @@ -112,10 +114,12 @@ def configure
end

class Configuration
attr_accessor :default_locale, :decimals_as
attr_accessor :locale, :decimals_as
alias default_locale locale
alias default_locale= locale=

def initialize
@default_locale = :en
@locale = :en
@decimals_as = :digits
end
end
Expand Down
Loading

0 comments on commit 95ef604

Please sign in to comment.