require 'yajl/json_gem' module Docs class Manifest FILENAME = 'docs.json' def initialize(store, docs) @store = store @docs = docs end def store @store.write FILENAME, to_json end def as_json indexed_docs.map(&:as_json).each do |json| json[:mtime] = doc_mtime(json) json[:db_size] = doc_db_size(json) end end def to_json JSON.generate(as_json) end private def indexed_docs @docs.select do |doc| @store.exist?(doc.index_path) && @store.exist?(doc.db_path) end end def doc_mtime(doc) [@store.mtime(doc[:index_path]).to_i, @store.mtime(doc[:db_path]).to_i].max end def doc_db_size(doc) @store.size(doc[:db_path]) end end end