src/core/crawl.js
// Crawl
//------
//
// Scans the DOM looking for behaviors
//
// Return `Array<Object>` an array of objects with the behavior name as
// a key and an array of DOM nodes as a value
//
// **Example**
//
// ```html
// <div behavior="carousel"></div>
// ```
//
// ```javascript
// Essential.Core.crawl();
//
// // => [{ carousel: [<HTMLDivElement>, <HTMLDivElement>] }]
// ```
Essential.Core.crawl = function(rootElement) {
var all = rootElement.querySelectorAll("[data-behavior], [behavior]"),
i = -1,
result = {};
while(all[++i]) {
var currentElement = all[i],
rawBehaviors = currentElement.getAttribute("data-behavior") || currentElement.getAttribute("behavior"),
behaviorsList = rawBehaviors.split(" "),
j = -1;
while(behaviorsList[++j]) {
var currentBehavior = behaviorsList[j];
if(result[currentBehavior]) {
result[currentBehavior].push(currentElement);
} else {
result[currentBehavior] = [currentElement];
}
}
}
return result;
};