Sha256: 18d66b89a6397399535afb45858b2a6f734226e4972f7857daf5985b72bd1be7

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

var fs = require('fs');
var path = require('path');
var crypto = require('crypto');
var existsSync = fs.existsSync || path.existsSync;

var mkdirp = require('mkdirp');
var detective = require('detective');

module.exports = function (cacheFile) {
    mkdirp.sync(path.dirname(cacheFile), 0700);
    
    var cache = {};
    if (existsSync(cacheFile)) {
        var body = fs.readFileSync(cacheFile);
        try {
            cache = JSON.parse(body);
        }
        catch (err) {}
    }
    
    function save (h, res) {
        cache[h] = res;
        fs.writeFileSync(cacheFile, JSON.stringify(cache));
    }
    
    function hash (src) {
        return new crypto.Hash('md5').update(src).digest('hex');
    }
    
    var deputy = function (src) {
        return deputy.find(src).strings;
    };
    
    deputy.find = function (src) {
        var h = hash(src);
        var c = cache[h];
        if (c) return c;
        else {
            c = detective.find(src);
            save(h, c);
            return c;
        }
    };
    
    return deputy;
};

Version data entries

3 entries across 3 versions & 2 rubygems

Version Path
snowball-0.1.22 node_modules/browserify/node_modules/deputy/index.js
sprockets-browserify-0.1.2 node_modules/browserify/node_modules/deputy/index.js
sprockets-browserify-0.1.0 node_modules/browserify/node_modules/deputy/index.js