#!/usr/bin/env ruby

# load necessary modules
require 'pstore'

class Array
  def sum
    ret = 0
    each { |val| ret += val }
    ret
  end
end

FeedSize = Struct.new(:key, :size)

# feed cache path
PATH = ARGV[0] || ENV['HOME'] + '/.raggle/feed_cache.store'

sizes = []
store = PStore::new(PATH)
store.transaction { |s|
  s.roots.each { |root|
    size = FeedSize.new(root, 0)
    s[root].each { |item|
      %w{title url desc}.each { |key|
        size.size += item[key].length if item[key]
      }
    }
    sizes << size
  }
}

sum = sizes.collect { |s| s.size }.sum
sizes.sort! { |a, b| a.size <=> b.size }
sizes.each { |size|
  puts '%6d (%2.1f%%): %s' % [size.size, size.size * 100.0 / sum, size.key]
}
  


syntax highlighted by Code2HTML, v. 0.9.1