mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-11-01 11:50:07 +00:00
now guaranteeEvents(..) is completely generic...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
f25a3ce8ca
commit
b0c391252f
@ -38,6 +38,33 @@ var INDEX_DIR = '.ImageGrid'
|
|||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
// helpers...
|
// helpers...
|
||||||
|
|
||||||
|
// XXX this is quite generic, might be a good idea to move to a better
|
||||||
|
// node-specific place...
|
||||||
|
var guaranteeEvents =
|
||||||
|
module.guaranteeEvents =
|
||||||
|
function(names, emitter){
|
||||||
|
names = typeof(names) == typeof('str') ? names.split(/\s+/g) : names
|
||||||
|
|
||||||
|
names.forEach(function(name){
|
||||||
|
var seen = []
|
||||||
|
emitter
|
||||||
|
.on(name, function(){
|
||||||
|
seen.push([].slice.apply(arguments))
|
||||||
|
})
|
||||||
|
.on('newListener', function(evt, func){
|
||||||
|
if(evt == name && seen.length > 0){
|
||||||
|
var that = this
|
||||||
|
seen.forEach(function(args){
|
||||||
|
func.apply(that, args)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return emitter
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Guarantee that the 'end' and 'match' handlers will always get called
|
// Guarantee that the 'end' and 'match' handlers will always get called
|
||||||
// with all results at least once...
|
// with all results at least once...
|
||||||
//
|
//
|
||||||
@ -54,30 +81,7 @@ var INDEX_DIR = '.ImageGrid'
|
|||||||
//
|
//
|
||||||
var guaranteeGlobEvents =
|
var guaranteeGlobEvents =
|
||||||
module.guaranteeGlobEvents =
|
module.guaranteeGlobEvents =
|
||||||
function guaranteeGlobEvents(glob, all_matches){
|
function(glob){ return guaranteeEvents('match end', glob) }
|
||||||
all_matches = all_matches == null ? true : false
|
|
||||||
var visited = []
|
|
||||||
|
|
||||||
return glob
|
|
||||||
// keep track of visited matches...
|
|
||||||
.on('match', function(path){
|
|
||||||
all_matches && visited.push(path)
|
|
||||||
})
|
|
||||||
// trigger new handlers...
|
|
||||||
.on('newListener', function(evt, func){
|
|
||||||
// trigger the 'end' handler if we have already finished...
|
|
||||||
if(evt == 'end' && this.found != null){
|
|
||||||
func.call(this, this.found)
|
|
||||||
|
|
||||||
// trigger the 'match' handler for each match already found...
|
|
||||||
} else if(all_matches && evt == 'match' && visited.length > 0){
|
|
||||||
visited.forEach(function(path){
|
|
||||||
func.call(this, path)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -110,16 +114,46 @@ function loadJSON(path){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// json file name format:
|
// Load index(s)...
|
||||||
// [<timestamp>-]<keyword>[-diff].json
|
|
||||||
//
|
//
|
||||||
// events emited:
|
// loadIndex(path)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
// loadIndex(path, logger)
|
||||||
|
// -> data
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Procedure:
|
||||||
|
// - locate indexes in path given
|
||||||
|
// - per each index
|
||||||
|
// - get all .json files
|
||||||
|
// - get and load latest base file per keyword
|
||||||
|
// - merge all later than loaded base diff files per keyword
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Index format (input):
|
||||||
|
// .ImageGrid/
|
||||||
|
// +- [<timestamp>-]<keyword>[-diff].json
|
||||||
|
// +- ...
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Output format:
|
||||||
|
// {
|
||||||
|
// // one per index found...
|
||||||
|
// <path>/<sub-path>: {
|
||||||
|
// <keyword>: <kw-data>,
|
||||||
|
// ...
|
||||||
|
// },
|
||||||
|
// ...
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Events emitted on logger if passed:
|
||||||
// - queued <path> - json file path queued for loading
|
// - queued <path> - json file path queued for loading
|
||||||
// - loaded <path> - done loading json file path
|
// - loaded <path> - done loading json file path
|
||||||
// - index <path> <data> - done loading index at path
|
// - index <path> <data> - done loading index at path
|
||||||
// - error <err> - an error occurred...
|
// - error <err> - an error occurred...
|
||||||
//
|
//
|
||||||
// NOTE: logger must be an event emitter...
|
|
||||||
//
|
//
|
||||||
// XXX test with:
|
// XXX test with:
|
||||||
// requirejs(['file'],
|
// requirejs(['file'],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user