Skip to content

Instantly share code, notes, and snippets.

@dmitrythaler
Last active July 3, 2016 12:11
Show Gist options
  • Save dmitrythaler/e1dd6cc9eb6331d70bc212ba9047a6bf to your computer and use it in GitHub Desktop.
Save dmitrythaler/e1dd6cc9eb6331d70bc212ba9047a6bf to your computer and use it in GitHub Desktop.
nodejs, simple glob resolve, no dependencies
var fs = require( 'fs' );
var path = require( 'path' );
// path/path/*.html → array of files
var resolve_glob = function( glob ) {
if ( glob.indexOf( '*' ) !== -1 || glob.indexOf( '?' ) !== -1 ) {
var re = new RegExp( '^' + path.basename( glob ).replace( /\./g, '\.' ).replace( /\*/g, '.*' ).replace( /\?/g, '.' ) + '$' ),
dir = path.normalize( path.dirname( glob ) + '/' );
return fs.readdirSync( dir ).filter( function( f ) {
return re.test( f ) && fs.statSync( dir + f ).isFile();
}).map( function( f ) {
return dir + f;
});;
}
if ( fs.statSync( glob ).isDirectory() ) {
glob = path.normalize( glob + '/' );
return fs.readdirSync( glob ).filter( function( f ) {
return fs.statSync( glob + f ).isFile();
}).map( function( f ) {
return glob + f;
});
}
return [glob];
}
// console.log( resolve_glob('./*.js') );
// console.log( resolve_glob('./*.json') );
// console.log( resolve_glob('../project/????.js') );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment