Sha256: 8e85a2dd7d8b8cacfa47e152aa4cdb971eb8333c8bbc91264877fcc5ee22ecf4

Contents?: true

Size: 845 Bytes

Versions: 7

Compression:

Stored size: 845 Bytes

Contents

# -*- encoding : utf-8 -*-
class Hash
  def to_key_indexed_array(params = {})
    raise ArgumentError.new('all the keys must be numbers to convert to key indexed array') unless all? { |k, v| k.is_a? Numeric }
    min_size = params[:min_size] || 0
    default = params[:default]
    inject(Array.new(min_size, default)) { |acc, (k, v)| acc[k] = v; acc }.map { |e| e || default }
  end

  def fill_empty_days!(params = {:aggregated => true})
    return self if self.empty?

    self_with_date_keys = Hash[self.map { |k, v| [k.to_date, v] }]
    days_with_data = self_with_date_keys.keys.sort.uniq
    prev = 0

    days_with_data.first.upto(days_with_data.last) do |day|
      if days_with_data.include? day
        prev = self_with_date_keys[day]
      else
        self[day] = params[:aggregated] ? prev : 0
      end
    end
    self
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
git_stats-1.0.17 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.16 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.15 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.14 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.13 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.12 lib/git_stats/core_extensions/hash.rb
git_stats-1.0.11 lib/git_stats/core_extensions/hash.rb