Sha256: 49e476b75222857d8f5d9fc409772f0d6060ad7a0e27cd9019992b5fb616793b

Contents?: true

Size: 1.49 KB

Versions: 5

Compression:

Stored size: 1.49 KB

Contents

module Spout
  module Helpers
    class TableFormatting
      # def initialize(number)
      #   @number = number
      # end

      def self.number_with_delimiter(number, delimiter = ',')
        number.to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
      end

      # type:  :count    or   :decimal
      def self.format_number(number, type, format = nil)
        if number.nil?
          format_nil(number)
        elsif type == :count
          format_count(number)
        else
          format_decimal(number, format)
        end
      end

      def self.format_nil(number)
        '-'
      end

      #   count:
      #        0          ->             '-'
      #       10          ->            '10'
      #     1000          ->         '1,000'
      # Input (Numeric)   -> Output (String)
      def self.format_count(number)
        (number == 0 || number.nil?) ? '-' : number_with_delimiter(number)
      end

      # decimal:
      #        0          ->           '0.0'
      #       10          ->          '10.0'
      #      -50.2555     ->         '-50.3'
      #     1000          ->       '1,000.0'
      # 12412423.42252525 ->  '12,412,423.4'
      # Input (Numeric)   -> Output (String)
      def self.format_decimal(number, format)
        precision = 1
        precision = -Math.log10(number.abs).floor if number.abs < 1.0 && number != 0

        number = number_with_delimiter(number.round(precision))
        number = format % number if format
        number
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spout-0.11.0 lib/spout/helpers/table_formatting.rb
spout-0.11.0.rc lib/spout/helpers/table_formatting.rb
spout-0.11.0.beta3 lib/spout/helpers/table_formatting.rb
spout-0.11.0.beta2 lib/spout/helpers/table_formatting.rb
spout-0.11.0.beta1 lib/spout/helpers/table_formatting.rb