node-vitals
Version:
Do more with less. A simple, high-performing, functional JavaScript library.
75 lines (66 loc) • 1.85 kB
JavaScript
/**
* -----------------------------------------------------------------------------
* ACT TASK HELPER: getTestSections
* -----------------------------------------------------------------------------
* @author Adam Smith <adam@imaginate.life> (https://github.com/imaginate)
* @copyright 2017 Adam A Smith <adam@imaginate.life> (https://github.com/imaginate)
*
* Annotations:
* @see [JSDoc3](http://usejsdoc.org)
* @see [Closure Compiler JSDoc Syntax](https://developers.google.com/closure/compiler/docs/js-for-compiler)
*/
;
var is = require('./is');
var fs = require('fs');
var BASE = './test/setup/sections';
/**
* @param {string=} invalid - The invalid sections.
* @return {!Array<string>}
*/
module.exports = function getTestSections(invalid) {
/** @type {!Array<string>} */
var filepaths;
/** @type {string} */
var filepath;
/** @type {!Array<string>} */
var sections;
/** @type {string} */
var section;
/** @type {function(string): boolean} */
var isValid;
/** @type {number} */
var len;
/** @type {number} */
var i;
filepaths = fs.readdirSync(BASE);
sections = [];
isValid = mkCheck(invalid);
len = filepaths.length;
i = -1;
while (++i < len) {
filepath = filepaths[i];
section = cutFileExt(filepath);
filepath = BASE + '/' + filepath;
if ( is.file(filepath) && isValid(section) ) sections.push(section);
}
return sections;
};
/**
* @private
* @param {string=} invalid
* @return {function}
*/
function mkCheck(invalid) {
invalid = invalid && new RegExp(invalid);
return invalid
? function isValid(section) { return !invalid.test(section); }
: function isValid(section) { return true; };
}
/**
* @private
* @param {string} filepath
* @return {string}
*/
function cutFileExt(filepath) {
return filepath.replace(/\.js$/, '');
}