You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devdocs/lib/docs/core/manifest.rb

44 lines
782 B

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