class Thinreports::Core::Shape::TextBlock::Formatter::Number
Private Instance Methods
apply_format_to(value)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 13 def apply_format_to(value) precision = format.format_number_precision delimiter = format.format_number_delimiter if_applicable value do |val| val = number_with_precision(val, precision) unless blank_value?(precision) val = number_with_delimiter(val, delimiter) unless blank_value?(delimiter) val end end
convert_to_float(value)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 57 def convert_to_float(value) Float(value) rescue ArgumentError nil end
convert_to_integer(value)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 51 def convert_to_integer(value) Integer(value) rescue ArgumentError nil end
if_applicable(value, &block)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 24 def if_applicable(value, &block) normalized_value = normalize(value) normalized_value.nil? ? value : block.call(normalized_value) end
normalize(value)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 29 def normalize(value) if value.is_a?(String) convert_to_integer(value) || convert_to_float(value) else value end end
number_with_delimiter(value, delimiter = ',')
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 37 def number_with_delimiter(value, delimiter = ',') value_int, value_float = value.to_s.split('.') [ value_int.gsub(/(\d)(?=(\d{3})+(?!\d))/) { "#{$1}#{delimiter}" }, value_float ].compact.join('.') end
number_with_precision(value, precision = 3)
click to toggle source
# File lib/thinreports/core/shape/text_block/formatter/number.rb, line 46 def number_with_precision(value, precision = 3) value = BigDecimal(value.to_s).round(precision) sprintf("%.#{precision}f", value) end