Code coverage report for htmlcs/lib/util.js

Statements: 100% (26 / 26)      Branches: 87.5% (7 / 8)      Functions: 100% (5 / 5)      Lines: 100% (26 / 26)      Ignored: none     

All files » htmlcs/lib/ » util.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68          1 1 1     1         1 2230 21488 21488     2230       1 3   3 75 74     3 1     3       1 3 3 3             3 6 6 3         1                
/**
 * @file util methods
 * @author nighca<nighca@live.cn>
 */
 
var fs = require('fs');
var path = require('path');
var ElementType = require('domelementtype');
 
// app info
var app = {
    root: path.resolve(__dirname, '../')
};
 
// copy properties from src to target
var extend = function (target, src) {
    for (var key in src) {
        Eif (src.hasOwnProperty(key)) {
            target[key] = src[key];
        }
    }
    return target;
};
 
// make op result-cachable
var cachable = function (getter) {
    var storage = {};
 
    var get = function (key, refresh) {
        storage[key] = (refresh || !(storage.hasOwnProperty(key))) ? getter(key, refresh) : storage[key];
        return storage[key];
    };
 
    var clear = function () {
        storage = {};
    };
 
    return extend(get, {clear: clear});
};
 
// get path of ~/
var getHomePath = function () {
    var homePath = '';
    var environment = process.env;
    var paths = [
        environment.USERPROFILE,
        environment.HOME,
        environment.HOMEPATH,
        environment.HOMEDRIVE + environment.HOMEPATH
    ];
 
    while (paths.length) {
        homePath = paths.shift();
        if (fs.existsSync(homePath)) {
            return homePath;
        }
    }
};
 
module.exports = {
    app: app,
    nodeType: ElementType,
    isElement: ElementType.isTag,
    extend: extend,
    cachable: cachable,
    getHomePath: getHomePath
};