UNPKG

hexo

Version:

A fast, simple & powerful blog framework, powered by Node.js.

68 lines (61 loc) 1.67 kB
var path = require('path'), fs = require('graceful-fs'), async = require('async'), util = require('../util'), file = util.file2; exports.statics = { loadCache: function(src, callback){ var source = path.join(hexo.base_dir, src), data = this.findOne({source: src}), self = this; async.auto({ mtime: function(next){ fs.stat(source, function(err, stats){ if (err) return callback(err); next(null, stats.mtime.getTime()); }); }, check: ['mtime', function(next, results){ if (data && data.mtime === results.mtime) return callback(null, data.content); next(); }], content: ['check', function(next){ file.readFile(source, next); }], save: ['content', function(next, results){ if (data){ data.content = results.content; data.mtime = results.mtime; data.save(); callback(null, results.content); } else { self.insert({ content: results.content, mtime: results.mtime, source: src }, function(){ callback(null, results.content); }); } }] }); }, loadCacheSync: function(src){ var source = path.join(hexo.base_dir, src), data = this.findOne({source: src}), stats = fs.statSync(source), content = file.readFile(source); if (data){ data.content = content; data.mtime = stats.mtime.getTime(); data.save(); } else { this.insert({ content: content, mtime: mtime, source: src }); } return content; } };