Code coverage report for master/lib/jsdoc/fs.js

Statements: 88.24% (30 / 34)      Branches: 78.57% (11 / 14)      Functions: 100% (2 / 2)      Lines: 88.24% (30 / 34)      Ignored: none     

All files » master/lib/jsdoc/ » fs.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 69 70 71 72 73 74 75            1 1 1   1 22 22 22     22 19 19     22       22 17     22 22         22       22     22 174     174       174   18   18 3   18       156       22         1 1 85    
/**
 * Extended version of the standard `fs` module.
 * @module jsdoc/fs
 */
'use strict';
 
var fs = require('fs');
var path = require('path');
var runtime = require('jsdoc/util/runtime');
 
var ls = exports.ls = function(dir, recurse, _allFiles, _path) {
    var file;
    var files;
    var isFile;
 
    // first pass
    if (_path === undefined) {
        _allFiles = [];
        _path = [dir];
    }
 
    Iif (!_path.length) {
        return _allFiles;
    }
 
    if (recurse === undefined) {
        recurse = 1;
    }
 
    try {
        isFile = fs.statSync(dir).isFile();
    }
    catch (e) {
        isFile = false;
    }
    Iif (isFile) {
        files = [dir];
    }
    else {
        files = fs.readdirSync(dir);
    }
 
    for (var i = 0, l = files.length; i < l; i++) {
        file = String(files[i]);
 
        // skip dot files
        Iif (file.match(/^\.[^\.\/\\]/)) {
            continue;
        }
 
        if ( fs.statSync(path.join(_path.join('/'), file)).isDirectory() ) {
            // it's a directory
            _path.push(file);
 
            if (_path.length - 1 < recurse) {
                ls(_path.join('/'), recurse, _allFiles, _path);
            }
            _path.pop();
        }
        else {
            // it's a file
            _allFiles.push( path.normalize(path.join(_path.join('/'), file)) );
        }
    }
 
    return _allFiles;
};
 
// export the VM-specific implementations of the extra methods
// TODO: document extra methods here
var extras = require( runtime.getModulePath('fs') );
Object.keys(extras).forEach(function(extra) {
    exports[extra] = extras[extra];
});