num_words 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c707e6c57aaf783107cb3290b903a117e012ce6c187d01eb9c6845c709c247a3
4
- data.tar.gz: 8cde67422c55d5ebc89d90a70992af08a5f8404cdc121b250adf901e5ded661d
3
+ metadata.gz: 0704aa1beffbb9b928b9e2430f73dddffb0de283d0d008a09ab385e1df828d92
4
+ data.tar.gz: 8298622791967a587e816e38b9b15df7f916d50d59e18609d90106b3b98ea650
5
5
  SHA512:
6
- metadata.gz: f7d41d25b31437a63ac7ae7efd4e91c9ae930fc52b087f5c83951d28a4accf70b8e5c1bb88019822630afdb5a846da9406f81ee99c9564760a0f90b60afd4961
7
- data.tar.gz: 2d94b537a8db62c48749bb0ae149efb58d91c976e334fb0aec48f1e9649b6146b5d89671d9ef1f8b063ee8144ea53086166f98e7a2a7ce2c3391ea5cc6183fea
6
+ metadata.gz: 678c4767f6bbbbe28bc8b4b30785ef6c439971769014c595da1307f7f33ffc986bc86ea3cecbeae257d1620c854db4ae6dcb2b60d516a927a3ab4664ee909d5e
7
+ data.tar.gz: af84cb1f4809f7c2d3b2a214801771067b2f8191aa815d7477d26ef7a75099213fe50189fc734aef01c92cd688bddcf2d86530937773e4fe294645deacb65673
@@ -37,20 +37,29 @@ module NumWords
37
37
  }.freeze
38
38
 
39
39
  class << self
40
- # Convert number to words
40
+ # Convert number to words (supports decimals)
41
41
  # Default language: :en
42
42
  def to_words(number, country: :us, language: :en, include_and: true)
43
- val = number.to_i.abs
44
- return language == :hi ? HINDI_NUMBERS_1_TO_99[0] : 'zero' if val.zero?
45
-
46
- if country == :in
47
- return language == :hi ? to_words_indian(number) : to_words_indian(number, language: :en)
48
- end
49
-
50
- exp_hash = COUNTRY_EXPONENTS[country] || AM_EXPONENTS
51
- ones_array = language == :hi ? HINDI_NUMBERS_1_TO_99 : ONES_EN
52
- tens_array = language == :hi ? HINDI_NUMBERS_1_TO_99 : TENS_EN
53
- to_words_generic(val, exp_hash, include_and, ones_array, tens_array)
43
+ return language == :hi ? HINDI_NUMBERS_1_TO_99[0] : 'zero' if number.to_f.zero?
44
+
45
+ integer_part, decimal_part = number.to_s.split('.')
46
+ integer_words = if country == :in
47
+ language == :hi ? to_words_indian(integer_part.to_i) : to_words_indian(integer_part.to_i, language: :en)
48
+ else
49
+ exp_hash = COUNTRY_EXPONENTS[country] || AM_EXPONENTS
50
+ ones_array = language == :hi ? HINDI_NUMBERS_1_TO_99 : ONES_EN
51
+ tens_array = language == :hi ? HINDI_NUMBERS_1_TO_99 : TENS_EN
52
+ to_words_generic(integer_part.to_i, exp_hash, include_and, ones_array, tens_array)
53
+ end
54
+
55
+ return integer_words if decimal_part.nil? || decimal_part.to_i.zero?
56
+
57
+ decimal_words = decimal_part.chars.map do |d|
58
+ language == :hi ? HINDI_NUMBERS_1_TO_99[d.to_i] : ONES_EN[d.to_i]
59
+ end.join(' ')
60
+
61
+ connector = language == :hi ? 'अंक' : 'point'
62
+ "#{integer_words} #{connector} #{decimal_words}"
54
63
  end
55
64
 
56
65
  # Indian system (supports English & Hindi)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NumWords
4
- VERSION = "0.6.0"
4
+ VERSION = "0.7.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: num_words
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mrmalvi