Sha256: 32db1b1f43b9dc817bbaa7227c1a9bbd53635e27d9f6886e5c9b291a52c2aec9
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 KB
Contents
# coding: utf-8 require 'bigdecimal' module Thinreports module Core::Shape::TextBlock class Formatter::Number < Formatter::Basic private def apply_format_to(value) precision = format.format_number_precision delimiter = format.format_number_delimiter if_applicable value do |val| unless blank_value?(precision) val = number_with_precision(val, precision) end unless blank_value?(delimiter) val = number_with_delimiter(val, delimiter) end val end end def if_applicable(value, &block) val = case value when Numeric then value when String (Integer(value) rescue nil) || (Float(value) rescue nil) else nil end val.nil? ? value : block.call(val) end def number_with_delimiter(value, delimiter = ',') value.to_s.gsub(/(\d)(?=(\d{3})+(?!\d))/){ "#{$1}#{delimiter}" } end def number_with_precision(value, precision = 3) value = BigDecimal(value.to_s).round(precision) sprintf("%.#{precision}f", value) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
thinreports-0.8.1 | lib/thinreports/core/shape/text_block/formatter/number.rb |
thinreports-0.8.0 | lib/thinreports/core/shape/text_block/formatter/number.rb |