aboutsummaryrefslogtreecommitdiffstats
path: root/test/CompilerSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2010-03-18 16:20:02 -0700
committerMisko Hevery2010-03-18 16:20:02 -0700
commit79f868cbca4a14030447e321ba59348cf1eb8a02 (patch)
treea4f5da4cded26ed4b08a8b4831a7b59a385b5ed9 /test/CompilerSpec.js
parent509b0320899c019a60b8f397a0f1d3a8ea7dd032 (diff)
downloadangular.js-79f868cbca4a14030447e321ba59348cf1eb8a02.tar.bz2
cleanup work
Diffstat (limited to 'test/CompilerSpec.js')
-rw-r--r--test/CompilerSpec.js123
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];