diff options
| author | Misko Hevery | 2010-03-18 16:20:02 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-03-18 16:20:02 -0700 |
| commit | 79f868cbca4a14030447e321ba59348cf1eb8a02 (patch) | |
| tree | a4f5da4cded26ed4b08a8b4831a7b59a385b5ed9 /test/CompilerSpec.js | |
| parent | 509b0320899c019a60b8f397a0f1d3a8ea7dd032 (diff) | |
| download | angular.js-79f868cbca4a14030447e321ba59348cf1eb8a02.tar.bz2 | |
cleanup work
Diffstat (limited to 'test/CompilerSpec.js')
| -rw-r--r-- | test/CompilerSpec.js | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/test/CompilerSpec.js b/test/CompilerSpec.js index f428b04c..4033ebdc 100644 --- a/test/CompilerSpec.js +++ b/test/CompilerSpec.js @@ -1,126 +1,3 @@ -/** - * Template provides directions an how to bind to a given element. - * It contains a list of init functions which need to be called to - * bind to a new instance of elements. It also provides a list - * of child paths which contain child templates - */ -function Template() { - this.paths = []; - this.children = []; - this.inits = []; -} - -Template.prototype = { - init: function(element, scope) { - foreach(this.inits, function(fn) { - scope.apply(fn, element); - }); - - var i, - childNodes = element.childNodes, - children = this.children, - paths = this.paths, - length = paths.length; - for (i = 0; i < length; i++) { - children[i].init(childNodes[paths[i]], scope); - } - }, - - addInit:function(init) { - if (init) { - this.inits.push(init); - } - }, - - setExclusiveInit: function(init) { - this.inits = [init]; - this.addInit = noop; - }, - - - addChild: function(index, template) { - this.paths.push(index); - this.children.push(template); - } -}; - -/////////////////////////////////// -// Compiler -////////////////////////////////// - -function Compiler(markup, directives){ - this.markup = markup; - this.directives = directives; -} - -DIRECTIVE = /^ng-(.*)$/; - -Compiler.prototype = { - compile: function(element) { - var template = this.templetize(element) || new Template(); - return function(element){ - var scope = new Scope(); - scope.element = element; - return { - scope: scope, - element:element, - init: bind(template, template.init, element, scope) - }; - }; - }, - - templetize: function(element){ - var chldrn, item, child, length, i, j, directive, init, template, - childTemplate, recurse = true, directives = this.directives, - markup = this.markup, markupLength = markup.length; - - for (i = 0, chldrn = element.childNodes, length = chldrn.length; - i < length; i++) { - if ((child = chldrn[i]).nodeType == Node.TEXT_NODE) { - for (j = 0; j < markupLength; j++) { - markup[j].call(this, child.nodeValue, child, element); - } - } - } - - // Process attributes/directives - for (i = 0, chldrn = element.attributes || [], length = chldrn.length; - i < length; i++) { - item = chldrn[i]; - var match = item.name.match(DIRECTIVE); - if (match) { - directive = directives[match[1]]; - if (directive) { - init = directive.call(this, item.value, element); - template = template || new Template(); - if (directive.exclusive) { - template.setExclusiveInit(init); - i = length; // quit iterations - } else { - template.addInit(init); - } - recurse = recurse && init; - } else { - error("Directive '" + match[0] + "' is not recognized."); - } - } - } - - // Process children - if (recurse) { - for (i = 0, chldrn = element.childNodes, length = chldrn.length; - i < length; i++) { - if((child = chldrn[i]).nodeType != Node.TEXT_NODE && - (childTemplate = this.templetize(child))) { - template = template || new Template(); - template.addChild(i, childTemplate); - } - } - } - return template; - } -}; - describe('compiler', function(){ function element(html) { return jQuery(html)[0]; |
