diff -r efd9c589177a -r c0b4a8b5a012 toolkit/javascript/d3/examples/bundle/packages.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/javascript/d3/examples/bundle/packages.js Thu Apr 10 14:20:23 2014 +0200 @@ -0,0 +1,49 @@ +(function() { + packages = { + + // Lazily construct the package hierarchy from class names. + root: function(classes) { + var map = {}; + + function find(name, data) { + var node = map[name], i; + if (!node) { + node = map[name] = data || {name: name, children: []}; + if (name.length) { + node.parent = find(name.substring(0, i = name.lastIndexOf("."))); + node.parent.children.push(node); + node.key = name.substring(i + 1); + } + } + return node; + } + + classes.forEach(function(d) { + find(d.name, d); + }); + + return map[""]; + }, + + // Return a list of imports for the given array of nodes. + imports: function(nodes) { + var map = {}, + imports = []; + + // Compute a map from name to node. + nodes.forEach(function(d) { + map[d.name] = d; + }); + + // For each import, construct a link from the source to target node. + nodes.forEach(function(d) { + if (d.imports) d.imports.forEach(function(i) { + imports.push({source: map[d.name], target: map[i]}); + }); + }); + + return imports; + } + + }; +})();