Created
January 31, 2011 20:36
-
-
Save virtix/804752 to your computer and use it in GitHub Desktop.
Balisong.cfc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cfcomponent { | |
public any function filter(string predicate, any collection){ | |
if( isArray(collection) ) return _filterArray(predicate,collection, [] ); | |
if( isStruct(collection) ) return _filterStruct(predicate,collection, {} ); | |
return collection; | |
} | |
//slightly different implementation for arrays | |
public any function _filterArray(string predicate, array collection, array accumulator){ | |
for(item in collection){ | |
if( isCollection(item) ) arrayAppend(accumulator, filter(predicate, item, accumulator) ); | |
else if(refindnocase(predicate, item)) arrayAppend(accumulator, item); | |
} | |
return accumulator; | |
} | |
//slightly different implementation for structs | |
public any function _filterStruct(string predicate, struct collection, struct accumulator){ | |
var _a = []; | |
for(item in collection){ | |
if( isCollection(collection[item]) ) structInsert(accumulator, item, filter(predicate, collection[item], accumulator) ); | |
else if (refindnocase(predicate, collection[item])) structInsert(accumulator, item, collection[item]); | |
} | |
return accumulator; | |
} | |
//full lib at https://github.com/virtix/balisong/raw/master/Balisong.cfc | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment