import { matches as queryMatches } from './query-type-match'; | |
import Type from './type'; | |
// filter an existing collection | |
let filter = function( collection ){ | |
let self = this; | |
// for 1 id #foo queries, just get the element | |
if( self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID ){ | |
return collection.getElementById( self[0].checks[0].value ).collection(); | |
} | |
let selectorFunction = function( element ){ | |
for( let j = 0; j < self.length; j++ ){ | |
let query = self[ j ]; | |
if( queryMatches( query, element ) ){ | |
return true; | |
} | |
} | |
return false; | |
}; | |
if( self.text() == null ){ | |
selectorFunction = function(){ return true; }; | |
} | |
return collection.filter( selectorFunction ); | |
}; // filter | |
// does selector match a single element? | |
let matches = function( ele ){ | |
let self = this; | |
for( let j = 0; j < self.length; j++ ){ | |
let query = self[ j ]; | |
if( queryMatches( query, ele ) ){ | |
return true; | |
} | |
} | |
return false; | |
}; // matches | |
export default { matches, filter }; | |