diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a235eb9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/node_modules
+/demo
+/.idea
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index c761df0..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "dist"]
- path = dist
- url = git@github.com:stackfull/angular-tree-repeat-bower.git
diff --git a/.idea/angular-tree-repeat.iml b/.idea/angular-tree-repeat.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/angular-tree-repeat.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..cd3578b
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,35 @@
+
+
+
+ false
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+ DOM issuesJavaScript
+
+
+ GeneralJavaScript
+
+
+ JavaScript
+
+
+ Node.jsJavaScript
+
+
+ XPath
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..2b60ccd
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..ecfbadb
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project
+
+
+ true
+
+
+
+ DIRECTORY
+
+ false
+
+
+
+
+
+
+
+
+
+ 1517913702528
+
+
+ 1517913702528
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Gruntfile.js b/Gruntfile.js
index fd412a4..f3780ed 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -71,7 +71,7 @@ module.exports = function( grunt ) {
codegen: {}
},
dist: {
- src: [ '<%= concat.dist.dest %>' ],
+ src: [ 'src/*.js' ],
dest: DISTDIR + '/<%= pkg.name %>.min.js'
}
diff --git a/dist b/dist
deleted file mode 160000
index 9b08a0d..0000000
--- a/dist
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 9b08a0d329f1e93de5eec3309433fdfba486cd2a
diff --git a/dist/angular-tree-repeat.js b/dist/angular-tree-repeat.js
new file mode 100644
index 0000000..4947701
--- /dev/null
+++ b/dist/angular-tree-repeat.js
@@ -0,0 +1,108 @@
+// angular-tree-repeat - v0.0.2
+
+// Include this first to define the module that the directives etc. hang off.
+//
+(function(){
+'use strict';
+angular.module('sf.treeRepeat', []);
+}());
+
+
+
+// sf-tree-repeat directive
+// ========================
+// Like `ng-repeat` but recursive
+//
+(function(){
+ 'use strict';
+ // (part of the sf.treeRepeat module).
+ var mod = angular.module('sf.treeRepeat');
+
+ // Utility to turn the expression supplied to the directive:
+ //
+ // a in b of c
+ //
+ // into `{ value: "a", collection: "b", root: "c" }`
+ //
+ function parseRepeatExpression(expression){
+ var match = expression.match(/^\s*([\$\w]+)\s+in\s+([\S\s]*)\s+of\s+([\S\s]*)$/);
+ if (! match) {
+ throw new Error("Expected sfTreepeat in form of"+
+ " '_item_ in _collection_ of _root_' but got '" +
+ expression + "'.");
+ }
+ return {
+ value: match[1],
+ collection: match[2],
+ root: match[3]
+ };
+ }
+
+ // The `sf-treepeat` directive is the main and outer directive. Use this to
+ // define your tree structure in the form `varName in collection of root`
+ // where:
+ // - varName is the scope variable used for each node in the tree.
+ // - collection is the collection of children within each node.
+ // - root is the root node.
+ //
+ mod.directive('sfTreepeat', ['$log', function($log) {
+ return {
+ restrict: 'A',
+ // Use a scope to attach the node model
+ scope: true,
+ // and a controller to communicate the template params to `sf-treecurse`
+ controller: ['$scope', '$attrs',
+ function TreepeatController($scope, $attrs){
+ var ident = this.ident = parseRepeatExpression($attrs.sfTreepeat);
+ if($attrs.class) {
+ this.ident.class = $attrs.class;
+ ident = this.ident;
+ }
+ $log.info("Parsed '%s' as %s", $attrs.sfTreepeat, JSON.stringify(this.ident));
+ // Keep the root node up to date.
+ $scope.$watch(this.ident.root, function(v){
+ $scope[ident.value] = v;
+ });
+ }
+ ],
+ // Get the original element content HTML to use as the recursive template
+ compile: function sfTreecurseCompile(element){
+ var template = element.html();
+ return {
+ // set it in the pre-link so we can use it lower down
+ pre: function sfTreepeatPreLink(scope, iterStartElement, attrs, controller){
+ controller.template = template;
+ }
+ };
+ }
+ };
+ }]);
+
+ // The `sf-treecurse` directive is a little like `ng-transclude` in that it
+ // signals where to insert our recursive template
+ mod.directive('sfTreecurse', ['$compile', function($compile){
+ return {
+ // which must come from a parent `sf-treepeat`.
+ require: "^sfTreepeat",
+ link: function sfTreecursePostLink(scope, iterStartElementJqLiteOrJquery, attrs, controller) {
+ // Now we stitch together an element containing a vanila repeater using
+ // the values from the controller.
+ var iterStartElementDOM = iterStartElementJqLiteOrJquery[0];
+ var build = [
+ '<', iterStartElementDOM.tagName, ' ng-repeat="',
+ controller.ident.value, ' in ',
+ controller.ident.value, '.', controller.ident.collection,
+ '" class="', controller.ident.class,
+ '">',
+ controller.template,
+ '', iterStartElementDOM.tagName, '>'];
+ var el = angular.element(build.join(''));
+ // We swap out the element for our new one and tell angular to do its
+ // thing with that.
+ iterStartElementJqLiteOrJquery.replaceWith(el);
+ $compile(el)(scope);
+ }
+ };
+ }]);
+
+}());
diff --git a/dist/angular-tree-repeat.min.js b/dist/angular-tree-repeat.min.js
new file mode 100644
index 0000000..7e4bf18
--- /dev/null
+++ b/dist/angular-tree-repeat.min.js
@@ -0,0 +1 @@
+/* angular-tree-repeat - v0.0.2 - 2018-02-07 */ !function(){"use strict";angular.module("sf.treeRepeat",[])}(),function(){"use strict";function a(a){var b=a.match(/^\s*([\$\w]+)\s+in\s+([\S\s]*)\s+of\s+([\S\s]*)$/);if(!b)throw new Error("Expected sfTreepeat in form of '_item_ in _collection_ of _root_' but got '"+a+"'.");return{value:b[1],collection:b[2],root:b[3]}}var b=angular.module("sf.treeRepeat");b.directive("sfTreepeat",["$log",function(b){return{restrict:"A",scope:!0,controller:["$scope","$attrs",function(c,d){var e=this.ident=a(d.sfTreepeat);d["class"]&&(this.ident["class"]=d["class"],e=this.ident),b.info("Parsed '%s' as %s",d.sfTreepeat,JSON.stringify(this.ident)),c.$watch(this.ident.root,function(a){c[e.value]=a})}],compile:function(a){var b=a.html();return{pre:function(a,c,d,e){e.template=b}}}}}]),b.directive("sfTreecurse",["$compile",function(a){return{require:"^sfTreepeat",link:function(b,c,d,e){var f=c[0],g=["<",f.tagName,' ng-repeat="',e.ident.value," in ",e.ident.value,".",e.ident.collection,'" class="',e.ident["class"],'">',e.template,"",f.tagName,">"],h=angular.element(g.join(""));c.replaceWith(h),a(h)(b)}}}])}();
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e9bbd34
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1397 @@
+{
+ "name": "angular-tree-repeat",
+ "version": "0.0.1",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "ansi": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz",
+ "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=",
+ "dev": true,
+ "optional": true
+ },
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "archy": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz",
+ "integrity": "sha1-kQ9Dv2YUH8M1VkWXq8GJ30Sz014=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "0.1.16",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
+ "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
+ "dev": true,
+ "requires": {
+ "underscore": "1.7.0",
+ "underscore.string": "2.4.0"
+ },
+ "dependencies": {
+ "underscore": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+ "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
+ "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
+ "dev": true
+ }
+ }
+ },
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.0.tgz",
+ "integrity": "sha1-/S4Fp6XWlrTbkxQBPihdj/NVfsM=",
+ "dev": true
+ },
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
+ "dev": true,
+ "requires": {
+ "buffers": "0.1.1",
+ "chainsaw": "0.1.0"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "bower": {
+ "version": "0.8.6",
+ "resolved": "https://registry.npmjs.org/bower/-/bower-0.8.6.tgz",
+ "integrity": "sha1-u3X4fFE2JugPUusN8RvzcASvixg=",
+ "dev": true,
+ "requires": {
+ "archy": "0.0.2",
+ "async": "0.2.10",
+ "colors": "0.6.2",
+ "fstream": "0.1.31",
+ "glob": "3.1.21",
+ "hogan.js": "2.0.0",
+ "lodash": "1.0.2",
+ "mkdirp": "0.3.5",
+ "nopt": "2.0.0",
+ "promptly": "0.1.0",
+ "rc": "0.0.8",
+ "read-package-json": "0.1.13",
+ "request": "2.11.4",
+ "rimraf": "2.0.3",
+ "semver": "1.1.4",
+ "stable": "0.1.6",
+ "tar": "0.1.20",
+ "tmp": "0.0.33",
+ "unzip": "0.1.4"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz",
+ "integrity": "sha1-vj5TgvwCttYySVasGvmKqYsIU0w=",
+ "dev": true
+ },
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.2.1.tgz",
+ "integrity": "sha1-VVsIq8sGP4l1kFMCUj5M1P/f3zE=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true
+ },
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
+ "dev": true,
+ "requires": {
+ "traverse": "0.3.9"
+ }
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "1.0.0",
+ "has-color": "0.1.7",
+ "strip-ansi": "0.1.1"
+ }
+ },
+ "cli": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/cli/-/cli-0.4.5.tgz",
+ "integrity": "sha1-ePlIXNFhtWbppsctcXDEJw6B22E=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21"
+ }
+ },
+ "coffee-script": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.3.3.tgz",
+ "integrity": "sha1-FQ1rTLUiiUNp7+1qIQHCC8f0pPQ=",
+ "dev": true
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.14.0.tgz",
+ "integrity": "sha512-okPpdvdJr6mUGi2XzupC+irQxzwGLVaBzacFC14hjLv8NColXEsxsU+QaeuSSXpQUak5g2K0vQ7WjA1e8svczg==",
+ "dev": true
+ },
+ "config-chain": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-0.3.4.tgz",
+ "integrity": "sha1-n7Uxz1swCro0gyhnK+e6lNv89Yo=",
+ "dev": true,
+ "requires": {
+ "ini": "1.0.5",
+ "proto-list": "1.2.4"
+ }
+ },
+ "connect": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/connect/-/connect-2.12.0.tgz",
+ "integrity": "sha1-Mdj6DcrN8ZCNgivSkjvootKn7Zo=",
+ "dev": true,
+ "requires": {
+ "batch": "0.5.0",
+ "buffer-crc32": "0.2.1",
+ "bytes": "0.2.1",
+ "cookie": "0.1.0",
+ "cookie-signature": "1.0.1",
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "methods": "0.1.0",
+ "multiparty": "2.2.0",
+ "negotiator": "0.3.0",
+ "pause": "0.0.1",
+ "qs": "0.6.6",
+ "raw-body": "1.1.2",
+ "send": "0.1.4",
+ "uid2": "0.0.3"
+ }
+ },
+ "connect-livereload": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.3.2.tgz",
+ "integrity": "sha1-3bcKpQkB1YN4NmJ3Dj07Y9fOQP8=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-0.1.6.tgz",
+ "integrity": "sha1-0SijwLuINQ61YmxufHGm8P1ImDw=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.0.tgz",
+ "integrity": "sha1-kOtGndzpBchm3mh+/EMTHYgB+dA=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz",
+ "integrity": "sha1-ROByFIrwHm6OJK+/EmkNaK5pjss=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "1.0.2-1.2.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
+ "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
+ "dev": true
+ },
+ "debug": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz",
+ "integrity": "sha1-IP9NJvXkIstoobrLu2EDmtjBwTA=",
+ "dev": true
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "docco": {
+ "version": "git://github.com/jashkenas/docco.git#3f27ba31f852526fa2e825fef6792773a9fb89d7",
+ "dev": true,
+ "requires": {
+ "commander": "2.14.0",
+ "fs-extra": "5.0.0",
+ "highlight.js": "9.12.0",
+ "marked": "0.3.12",
+ "underscore": "1.8.3"
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz",
+ "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "domutils": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz",
+ "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "esprima": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+ "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
+ "dev": true
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz",
+ "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=",
+ "dev": true
+ },
+ "findup-sync": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
+ "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
+ "dev": true,
+ "requires": {
+ "glob": "3.2.11",
+ "lodash": "2.4.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimatch": "0.3.0"
+ }
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ }
+ }
+ },
+ "fresh": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz",
+ "integrity": "sha1-v9lALPPfEsSkwxDHn5mj3eE9NKc=",
+ "dev": true
+ },
+ "fs-extra": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
+ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ }
+ }
+ },
+ "fstream": {
+ "version": "0.1.31",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz",
+ "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "3.0.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.0.3"
+ },
+ "dependencies": {
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
+ }
+ },
+ "gaze": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.4.3.tgz",
+ "integrity": "sha1-5Tj0/15P5kj0c6l+HrslPS3hJ7U=",
+ "dev": true,
+ "requires": {
+ "globule": "0.1.0"
+ }
+ },
+ "getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
+ "dev": true
+ },
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+ "dev": true
+ }
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
+ "dev": true,
+ "requires": {
+ "natives": "1.1.1"
+ }
+ },
+ "grunt": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
+ "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
+ "dev": true,
+ "requires": {
+ "async": "0.1.22",
+ "coffee-script": "1.3.3",
+ "colors": "0.6.2",
+ "dateformat": "1.0.2-1.2.3",
+ "eventemitter2": "0.4.14",
+ "exit": "0.1.2",
+ "findup-sync": "0.1.3",
+ "getobject": "0.1.0",
+ "glob": "3.1.21",
+ "grunt-legacy-log": "0.1.3",
+ "grunt-legacy-util": "0.2.0",
+ "hooker": "0.2.3",
+ "iconv-lite": "0.2.11",
+ "js-yaml": "2.0.5",
+ "lodash": "0.9.2",
+ "minimatch": "0.2.14",
+ "nopt": "1.0.10",
+ "rimraf": "2.2.8",
+ "underscore.string": "2.2.1",
+ "which": "1.0.9"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+ "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
+ "dev": true
+ },
+ "nopt": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-bowerful": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/grunt-bowerful/-/grunt-bowerful-0.2.2.tgz",
+ "integrity": "sha1-61aSjSqH8gzpmsQ08BTaMABSIpw=",
+ "dev": true,
+ "requires": {
+ "bower": "0.8.6"
+ }
+ },
+ "grunt-contrib-clean": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-0.5.0.tgz",
+ "integrity": "sha1-9T397ghJsce0Dp67umn0jExgecU=",
+ "dev": true,
+ "requires": {
+ "rimraf": "2.2.8"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-contrib-concat": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.3.0.tgz",
+ "integrity": "sha1-SPoNQzbSm2U62CJaa9b4VrRIPjI=",
+ "dev": true
+ },
+ "grunt-contrib-connect": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-0.6.0.tgz",
+ "integrity": "sha1-EX3J83VwjO5wIKX23yCHoDnw+7c=",
+ "dev": true,
+ "requires": {
+ "connect": "2.12.0",
+ "connect-livereload": "0.3.2",
+ "open": "0.0.4"
+ }
+ },
+ "grunt-contrib-copy": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.4.1.tgz",
+ "integrity": "sha1-8HU7QK4hu3BtrvsLKZ4DzfX6nW4=",
+ "dev": true
+ },
+ "grunt-contrib-jshint": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.8.0.tgz",
+ "integrity": "sha1-a9UjJdzOHZldu/ZIAwxZ4aYGrNo=",
+ "dev": true,
+ "requires": {
+ "jshint": "2.4.4"
+ }
+ },
+ "grunt-contrib-uglify": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.3.3.tgz",
+ "integrity": "sha1-kfBNKuCYTIvfc65u4j8TzVxE8K8=",
+ "dev": true,
+ "requires": {
+ "chalk": "0.4.0",
+ "grunt-lib-contrib": "0.6.1",
+ "uglify-js": "2.4.24"
+ }
+ },
+ "grunt-contrib-watch": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.5.3.tgz",
+ "integrity": "sha1-fZ61Rl1Qb6FPqspH5uh5CoLBye4=",
+ "dev": true,
+ "requires": {
+ "gaze": "0.4.3",
+ "tiny-lr": "0.0.4"
+ }
+ },
+ "grunt-legacy-log": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
+ "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
+ "dev": true,
+ "requires": {
+ "colors": "0.6.2",
+ "grunt-legacy-log-utils": "0.1.1",
+ "hooker": "0.2.3",
+ "lodash": "2.4.2",
+ "underscore.string": "2.3.3"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
+ "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
+ "dev": true,
+ "requires": {
+ "colors": "0.6.2",
+ "lodash": "2.4.2",
+ "underscore.string": "2.3.3"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
+ "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
+ "dev": true,
+ "requires": {
+ "async": "0.1.22",
+ "exit": "0.1.2",
+ "getobject": "0.1.0",
+ "hooker": "0.2.3",
+ "lodash": "0.9.2",
+ "underscore.string": "2.2.1",
+ "which": "1.0.9"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+ "dev": true
+ },
+ "lodash": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+ "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
+ "dev": true
+ }
+ }
+ },
+ "grunt-lib-contrib": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/grunt-lib-contrib/-/grunt-lib-contrib-0.6.1.tgz",
+ "integrity": "sha1-P1att9oG6BR5XuJBWw6+X7iQPrs=",
+ "dev": true,
+ "requires": {
+ "zlib-browserify": "0.0.1"
+ }
+ },
+ "has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "9.12.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
+ "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=",
+ "dev": true
+ },
+ "hogan.js": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-2.0.0.tgz",
+ "integrity": "sha1-OlsEGG1Rc3/SA1eS1Bmp9agvnQ4=",
+ "dev": true
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz",
+ "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0",
+ "domhandler": "2.1.0",
+ "domutils": "1.1.6",
+ "readable-stream": "1.0.34"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ }
+ }
+ },
+ "iconv-lite": {
+ "version": "0.2.11",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
+ "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.0.5.tgz",
+ "integrity": "sha1-QGaspyUrJ4PFkt7PklUA63y/XaY=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
+ "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
+ "dev": true,
+ "requires": {
+ "argparse": "0.1.16",
+ "esprima": "1.0.4"
+ }
+ },
+ "jshint": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.4.4.tgz",
+ "integrity": "sha1-QWIjgxTGSfmHdSZR6OBk4wpocG4=",
+ "dev": true,
+ "requires": {
+ "cli": "0.4.5",
+ "console-browserify": "0.1.6",
+ "exit": "0.1.2",
+ "htmlparser2": "3.3.0",
+ "minimatch": "0.2.14",
+ "shelljs": "0.1.4",
+ "underscore": "1.4.4"
+ },
+ "dependencies": {
+ "underscore": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
+ "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=",
+ "dev": true
+ }
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "marked": {
+ "version": "0.3.12",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.12.tgz",
+ "integrity": "sha512-k4NaW+vS7ytQn6MgJn3fYpQt20/mOgYM5Ft9BYMfQJDz2QT6yEeS9XJ8k2Nw8JTeWK/znPPW2n3UJGzyYEiMoA==",
+ "dev": true
+ },
+ "methods": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-0.1.0.tgz",
+ "integrity": "sha1-M11Cnu/SG3us8unJIqjSvRSjDk8=",
+ "dev": true
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
+ "dev": true
+ },
+ "multiparty": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/multiparty/-/multiparty-2.2.0.tgz",
+ "integrity": "sha1-pWfCrwAK0i3I8qZT2Rl4rh9TFvQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14",
+ "stream-counter": "0.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ }
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+ "dev": true
+ },
+ "natives": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.1.tgz",
+ "integrity": "sha512-8eRaxn8u/4wN8tGkhlc2cgwwvOLMLUMUn4IYTexMgWd+LyUDfeXVkk2ygQR0hvIHbJQXgHujia3ieUUDwNGkEA==",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.3.0.tgz",
+ "integrity": "sha1-cG1pLv7d9XTVfqn7GriaT6fuj2A=",
+ "dev": true
+ },
+ "nopt": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz",
+ "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.1.1"
+ }
+ },
+ "noptify": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz",
+ "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=",
+ "dev": true,
+ "requires": {
+ "nopt": "2.0.0"
+ }
+ },
+ "npmlog": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-0.1.1.tgz",
+ "integrity": "sha1-i5ueRAXX7EjDHCNGllqtx6uuyqU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi": "0.3.1"
+ }
+ },
+ "open": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/open/-/open-0.0.4.tgz",
+ "integrity": "sha1-XeRqCFi59J+fIRqo8mYoVQZX8mI=",
+ "dev": true
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "dev": true,
+ "requires": {
+ "wordwrap": "0.0.3"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "over": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz",
+ "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=",
+ "dev": true
+ },
+ "pause": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
+ "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=",
+ "dev": true
+ },
+ "promptly": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/promptly/-/promptly-0.1.0.tgz",
+ "integrity": "sha1-pES81ObYRkWQmBzAMEX5BA3E5Ys=",
+ "dev": true,
+ "requires": {
+ "read": "1.0.7"
+ }
+ },
+ "proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "dev": true
+ },
+ "pullstream": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.1.0.tgz",
+ "integrity": "sha1-5uRBSCE7sVQ6wcRI1NpW4XiM4t0=",
+ "dev": true,
+ "requires": {
+ "over": "0.0.5",
+ "readable-stream": "0.2.0",
+ "setimmediate": "1.0.5"
+ }
+ },
+ "qs": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz",
+ "integrity": "sha1-bgFQmP9RlouKPIGQAdXyyJvEsQc=",
+ "dev": true
+ },
+ "range-parser": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz",
+ "integrity": "sha1-wEJ//vUcEKy6B4KkbJYC50T/Ygs=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.2.tgz",
+ "integrity": "sha1-x0swBN6l3v0WlhcRBqx0DsMdYr4=",
+ "dev": true,
+ "requires": {
+ "bytes": "0.2.1"
+ }
+ },
+ "rc": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-0.0.8.tgz",
+ "integrity": "sha1-49KA38S5r1sUlfIFA94JzPRqoSE=",
+ "dev": true,
+ "requires": {
+ "config-chain": "0.3.4",
+ "optimist": "0.3.7"
+ }
+ },
+ "read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=",
+ "dev": true,
+ "requires": {
+ "mute-stream": "0.0.7"
+ }
+ },
+ "read-package-json": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-0.1.13.tgz",
+ "integrity": "sha1-nYBRV8gqZE9RAC+4DP6Ljp2Tm+8=",
+ "dev": true,
+ "requires": {
+ "glob": "3.1.21",
+ "graceful-fs": "1.2.3",
+ "lru-cache": "2.0.4",
+ "npmlog": "0.1.1",
+ "semver": "1.1.4",
+ "slide": "1.1.6"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+ "dev": true,
+ "optional": true
+ },
+ "lru-cache": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.0.4.tgz",
+ "integrity": "sha1-uLYa4JhIOF7Gdodg45wSPn45Voo=",
+ "dev": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.2.0.tgz",
+ "integrity": "sha1-wje/dzsnrPlHKldkNanLm3FQTg0=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.11.4",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.11.4.tgz",
+ "integrity": "sha1-Y0fX1E5S3FiBCMwc5c7pdfyJJt4=",
+ "dev": true,
+ "requires": {
+ "form-data": "0.0.3",
+ "mime": "1.2.7"
+ },
+ "dependencies": {
+ "form-data": {
+ "version": "0.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "async": "0.1.9",
+ "combined-stream": "0.0.3",
+ "mime": "1.2.7"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.1.9",
+ "bundled": true,
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "0.0.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "delayed-stream": "0.0.5"
+ },
+ "dependencies": {
+ "delayed-stream": {
+ "version": "0.0.5",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "mime": {
+ "version": "1.2.7",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "rimraf": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.0.3.tgz",
+ "integrity": "sha1-9QopZecUTpr9mYmC8V33BnMPVqk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "1.1.14"
+ },
+ "dependencies": {
+ "graceful-fs": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.1.14.tgz",
+ "integrity": "sha1-BweNtfY3f2Mh/Oqu30l94STclGU=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "semver": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-1.1.4.tgz",
+ "integrity": "sha1-LlpOcrqwNHLMl/cnU7RQiRLvVUA=",
+ "dev": true
+ },
+ "send": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.1.4.tgz",
+ "integrity": "sha1-vnDY0b4B3mGCGvE3gLUDRaT3Gr0=",
+ "dev": true,
+ "requires": {
+ "debug": "0.8.1",
+ "fresh": "0.2.0",
+ "mime": "1.2.11",
+ "range-parser": "0.0.4"
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.1.4.tgz",
+ "integrity": "sha1-37vnjVbDwBaNL7eeEOzR28sH7A4=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "slide": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.1.34",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz",
+ "integrity": "sha1-p8/omux7FoLDsZjQrPtH19CQVms=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz",
+ "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=",
+ "dev": true
+ },
+ "stream-counter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz",
+ "integrity": "sha1-3tJmVWMZyLDiIoErnPOyb6fZR94=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ },
+ "tar": {
+ "version": "0.1.20",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz",
+ "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=",
+ "dev": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "0.1.31",
+ "inherits": "2.0.3"
+ }
+ },
+ "tiny-lr": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.0.4.tgz",
+ "integrity": "sha1-gGGFR/Y/aX0Fy0DEwsSwg1Ia77Y=",
+ "dev": true,
+ "requires": {
+ "debug": "0.7.4",
+ "faye-websocket": "0.4.4",
+ "noptify": "0.0.3",
+ "qs": "0.5.6"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
+ "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
+ "dev": true
+ },
+ "qs": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz",
+ "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=",
+ "dev": true
+ }
+ }
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "2.4.24",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz",
+ "integrity": "sha1-+tV1XB4Vd2WLsG/5q25UjJW+vW4=",
+ "dev": true,
+ "requires": {
+ "async": "0.2.10",
+ "source-map": "0.1.34",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.5.4"
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+ "dev": true
+ },
+ "uid2": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz",
+ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=",
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+ "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
+ "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
+ "dev": true
+ },
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "unzip": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.4.tgz",
+ "integrity": "sha1-3pACPYtSdmeRl5z+p+WXY0CBpMc=",
+ "dev": true,
+ "requires": {
+ "binary": "0.3.0",
+ "buffers": "0.1.1",
+ "fstream": "0.1.31",
+ "over": "0.0.5",
+ "pullstream": "0.1.0",
+ "readable-stream": "0.2.0",
+ "setimmediate": "1.0.5"
+ }
+ },
+ "which": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
+ "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
+ "dev": true
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz",
+ "integrity": "sha1-2K/49mXpTDS9JZvevRv68N3TU2E=",
+ "dev": true,
+ "requires": {
+ "camelcase": "1.2.1",
+ "decamelize": "1.2.0",
+ "window-size": "0.1.0",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
+ }
+ }
+ },
+ "zlib-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/zlib-browserify/-/zlib-browserify-0.0.1.tgz",
+ "integrity": "sha1-T6akXQDbwV8xikr6HZr8Aljhdsw=",
+ "dev": true
+ }
+ }
+}
diff --git a/package.json b/package.json
index a00bb4a..6bdda19 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"author": "Paul Thomas ",
"name": "angular-tree-repeat",
- "version": "0.0.1",
+ "version": "0.0.2",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.0",
diff --git a/src/tree-repeat.js b/src/tree-repeat.js
index 568e44e..40ca879 100644
--- a/src/tree-repeat.js
+++ b/src/tree-repeat.js
@@ -45,6 +45,10 @@
controller: ['$scope', '$attrs',
function TreepeatController($scope, $attrs){
var ident = this.ident = parseRepeatExpression($attrs.sfTreepeat);
+ if($attrs.class) {
+ this.ident.class = $attrs.class;
+ ident = this.ident;
+ }
$log.info("Parsed '%s' as %s", $attrs.sfTreepeat, JSON.stringify(this.ident));
// Keep the root node up to date.
$scope.$watch(this.ident.root, function(v){
@@ -79,6 +83,7 @@
'<', iterStartElementDOM.tagName, ' ng-repeat="',
controller.ident.value, ' in ',
controller.ident.value, '.', controller.ident.collection,
+ '" class="', controller.ident.class,
'">',
controller.template,
'', iterStartElementDOM.tagName, '>'];