Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Multiple glob expansions with exclusions and hooks
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
hooks
test
.editorconfig
.gitignore
.jshintrc
.travis.yml
LICENSE
README.md
index.js
package.json

README.md

gloth Build Status

Multiple glob expansions with exclusions and hooks. Possible to use asynchrounously and synchronously.

Installation

$ npm install gloth

Usage

var excludeSizeHigherThen = require('hooks/excludeSizeHigherThen');

gloth(['src/**/*', '!b.js', excludeSizeHigherThen(2097152)], function (err, matches) {
    // Do things with matches
})
var excludeSizeHigherThen = require('hooks/excludeSizeHigherThen');

var matches = gloth.sync(['src/**/*', '!b.js', excludeSizeHigherThen(2097152)]);
// Do things with matches

The example above would expand all files in the src folder, exclude any file named b.js and run the excludeSizeHigherThen hook. This hook would look something like:

var fs = require('fs');

module.exports = function (size) {
    return function (matches) {
        return matches.filter(function (match) {
            var stat = fs.statSync(match);

            return !stat.isFile() || stat.size <= size;
        });
    };
};

The hook above was written synchronously. The asynchronous version would be:

var fs    = require('fs');
var async = require('async');

module.exports = function (size) {
    return function (matches, next) {
        async.filter(matches, function (match, next) {
            fs.stat(match, function (err, stat) {
                if (err) return next(false);

                next(!stat.isFile() || stat.size <= size);
            });
        }, function (results) {
            next(null, results);
        });
    };
};

For more information on how hooks are done, please check the built-in hooks in the source code. The options available are the same as the glob ones.

IMPORTANT: sync hooks can be run in gloth async and sync, but async hooks can only be used with gloth async.

License

Released under the MIT License.

Something went wrong with that request. Please try again.