66# @return [Number] The number that will be formatted in different format
77class NumberFormatter
88 include Helper
9- attr_reader :number
9+ attr_reader :number , :text , :display_metric
1010
1111 # Method used for instantiating the NumberFormatter with the number that will be used
1212 # and a boolean value that will decide if we format in metric format or using delimiters
@@ -18,14 +18,17 @@ class NumberFormatter
1818 def initialize ( number , display_metric )
1919 @number = number . present? ? number : 0
2020 @display_metric = display_metric
21- formatted_display
21+ if @number . to_s =~ /(\d +)(.*)/m
22+ @number = Regexp . last_match ( 1 ) . to_i
23+ @text = Regexp . last_match ( 2 )
24+ end
2225 end
2326
2427 # Returns the number as a string
2528 #
2629 # @return [String] Returns the number as a string
2730 def to_s
28- @number . to_s
31+ formatted_display
2932 end
3033
3134 # Method that is used to decide which format to use depending on the instance
@@ -47,11 +50,10 @@ def number_with_metric
4750 while index >= 0
4851 limit = metric_power [ index ]
4952 if @number > limit
50- return "#{ ( ( @number / limit ) . to_f . round ) } #{ metric_prefixes [ index ] } "
53+ return "#{ ( ( @number / limit ) . to_f . round ) } #{ metric_prefixes [ index ] } #{ @text } "
5154 end
5255 index -= 1
5356 end
54- @number . to_s
5557 end
5658
5759 # Description of method
@@ -62,8 +64,8 @@ def number_with_metric
6264 def number_with_delimiter ( delimiter = ',' , separator = '.' )
6365 parts = @number . to_s . split ( '.' )
6466 parts [ 0 ] . gsub! ( /(\d )(?=(\d \d \d )+(?!\d ))/ , "\\ 1#{ delimiter } " )
65- parts . join separator
67+ " #{ parts . join separator } #{ @text } " . to_s
6668 rescue
67- @number
69+ @number . to_s
6870 end
6971end
0 commit comments