Angular dependency lister
var Leaf = function(name) {
var self = this;
this.name = name;
this.dependencies = [];
this.invokes = angular.module(name)._invokeQueue;
// Get Directive & Service Names
this.directives = [];
this.services = [];
angular.module(name)._invokeQueue.forEach(function(invoke) {
if (invoke[1] == 'directive') {
self.directives.push({
name: invoke[2][0],
fn: invoke[2][1]
})
} else if (invoke[1] == 'service') {
self.services.push({
name: invoke[2][0],
fn: invoke[2][1]
})
}
})
var depNames = angular.module(self.name).requires;
depNames.forEach(function(depName) {
self.dependencies.push(new Leaf(depName))
})
this.search = {}
this.allDirectives = function() {
var all = []
var traverse = function(node) {
node.dependencies.forEach(function(dep) {
if(dep.dependencies.length > 0 ) traverse(dep)
})
all = all.concat(node.directives)
}
traverse(self)
return all;
}
this.search.directive = function(name) {
// ----
}
}