Tromp is an asynchronous filesystem directory walking algorithm with events and accept/reject filtering, designed to be used modules like minimatch
.
Use
var tromp =
API
WalkRoot
Instantiate using function tromp(path, options, callback)
,
returning an instance of WalkRoot
extending from EventEmitter
.
arg | desc |
---|---|
path |
string path reference for where to start walking |
options.showHidden |
if falsy, names beginning with . will be masked. default false |
options.autoWalk |
pluggable function(entry) called when directories are traversed; default calls entry.walk() |
options.schedule |
callable to schedule functions for later execution. default process.nextTick |
options.tasks |
number of concurrent filesystem operations in flight at once |
callback |
when provided, the function is added to .on('listed', callback) |
event | args | desc |
---|---|---|
'done' |
Emitted all walks have completed | |
'listing' |
listing | When entries have been received, but before entries have started fs.stat |
'listed' |
listing | After all entries have completed fs.stat |
'filter' |
entry, listing | After each WalkEntry 's completes fs.stat , but before entry event |
'entry' |
entry, listing | After each WalkEntry 's completes fs.stat and is not excluded during filter event |
'file' |
entry, listing | After 'entry' event, but only emitted for files |
'dir' |
entry, listing | After 'entry' event, but only emitted for directories |
WalkRoot::walk(path)
method
Starts a new walk rooted at path, creating a WalkListing
instance if not already in progress for that path. Emits active
events when listings are initiated or completed.
WalkRoot::autoWalk(entry, target)
method
Double dispatch mechanism, defaulting to entry.walk(target)
WalkRoot::filter(rx, ctx)
method
Calls entry.filter(rx,ctx)
for each filter
event occurence
WalkRoot::accept(rx, ctx)
method
Calls entry.accept(rx,ctx)
for each filter
event occurence
WalkRoot::reject(rx, ctx)
method
Calls entry.accept(rx,ctx)
for each filter
event occurence
WalkNode
Shared context between WalkRoot
, WalkListing
and WalkEntry
instances.
root
is the managingWalkRoot
instance.rootPath
is the path walking initiates fromlistPath
is the directory path of the listing
WalkListing
Encapsulates the active process of listing a directory and stating all of the entries so they can be categorized.
rootPath
is the path walking initiates frompath
is the directory path of the listingrelPath
ispath
as relative torootPath
WalkListing::select(fnList)
method
Returns all entries not already excluded matching every function in fnList
WalkListing::selectEx(fnList)
method
Returns all entries matching every function in fnList
WalkListing::matching(rx, opts...)
method
Invokes select({match:rx}, opts...)
WalkListing::files(opts...)
method
Invokes select({isFile:true}, opts...)
WalkListing::dirs(opts...)
method
Invokes select({isDirectory:true}, opts...)
WalkListing::filter(rx, ctx)
method
Invokes entry.filter(rx, ctx)
against all listing entries.
WalkListing::accept(opts...)
method
Invokes entry.accept(rx, ctx)
against all listing entries.
WalkListing::reject(opts...)
method
Invokes entry.reject(rx, ctx)
against all listing entries.
WalkEntry
An manipulable object representing and entry of the WalkListing
.
rootPath
is the path initially responsible for listing this entrypath
is the resolved path this entry representsrelPath
ispath
as relative torootPath
stat
is anfs.stat
instance, once initializedmodeKey
is a string enum from['unknown', 'file', 'dir', 'other']
WalkEntry::isFile()
method
Returns true
if the entry is a file.
WalkEntry::isDirectory()
method
Returns true
if the entry is a directory.
WalkEntry::isWalkable()
method
Returns true
if not excluded and is a directory
WalkEntry::walk(force)
method
Starts a new walk using the entry's path if it is walkable. See WalkRoot::walk
.
WalkEntry::match(rx, ctx)
method
If rx
is callable, then return rx.call(this.name, ctx)
Otherwise use String::match as return this.name.match(rx)
.
WalkEntry::exclude(value)
method
Mark as excluded if !!value
, otherwise mark as included.
WalkEntry::accept(rx, ctx)
method
With no parameters, marks entry as included.
Otherwise, if match(rx, ctx)
, then exclude(false)
WalkEntry::reject(rx, ctx)
method
With no parameters, marks entry as excluded.
Otherwise, if match(rx, ctx)
, then exclude(true)
WalkEntry::filter(rx, ctx)
method
Invokes exclude(match(rx, ctx))