Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit c966b2f

Browse files
committed
refactor($compile): use labaled variables to represent nodeType values
This also does some cleanup in $animate
1 parent a6ee572 commit c966b2f

File tree

5 files changed

+37
-36
lines changed

5 files changed

+37
-36
lines changed

src/.jshintrc

+4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@
9292

9393
"skipDestroyOnNextJQueryCleanData": true,
9494

95+
"NODE_TYPE_ELEMENT": false,
96+
"NODE_TYPE_TEXT": false,
97+
"NODE_TYPE_COMMENT": false,
98+
9599
/* filters.js */
96100
"getFirstThursdayOfYear": false,
97101

src/Angular.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@
8383
getBlockNodes: true,
8484
hasOwnProperty: true,
8585
createMap: true,
86+
87+
NODE_TYPE_ELEMENT: true,
88+
NODE_TYPE_TEXT: true,
89+
NODE_TYPE_COMMENT: true,
90+
NODE_TYPE_DOCUMENT: true,
91+
NODE_TYPE_DOCUMENT_FRAGMENT: true,
8692
*/
8793

8894
////////////////////////////////////
@@ -192,7 +198,7 @@ function isArrayLike(obj) {
192198

193199
var length = obj.length;
194200

195-
if (obj.nodeType === 1 && length) {
201+
if (obj.nodeType === NODE_TYPE_ELEMENT && length) {
196202
return true;
197203
}
198204

@@ -1028,11 +1034,9 @@ function startingTag(element) {
10281034
// are not allowed to have children. So we just ignore it.
10291035
element.empty();
10301036
} catch(e) {}
1031-
// As Per DOM Standards
1032-
var TEXT_NODE = 3;
10331037
var elemHtml = jqLite('<div>').append(element).html();
10341038
try {
1035-
return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :
1039+
return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) :
10361040
elemHtml.
10371041
match(/^(<[^>]+>)/)[1].
10381042
replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
@@ -1610,3 +1614,9 @@ function getBlockNodes(nodes) {
16101614
function createMap() {
16111615
return Object.create(null);
16121616
}
1617+
1618+
var NODE_TYPE_ELEMENT = 1;
1619+
var NODE_TYPE_TEXT = 3;
1620+
var NODE_TYPE_COMMENT = 8;
1621+
var NODE_TYPE_DOCUMENT = 9;
1622+
var NODE_TYPE_DOCUMENT_FRAGMENT = 11;

src/jqLite.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ function jqLiteAcceptsData(node) {
166166
// The window object can accept data but has no nodeType
167167
// Otherwise we are only interested in elements (1) and documents (9)
168168
var nodeType = node.nodeType;
169-
return nodeType === 1 || !nodeType || nodeType === 9;
169+
return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT;
170170
}
171171

172172
function jqLiteBuildFragment(html, context) {
@@ -419,7 +419,7 @@ function jqLiteController(element, name) {
419419
function jqLiteInheritedData(element, name, value) {
420420
// if element is the document object work with the html element instead
421421
// this makes $(document).scope() possible
422-
if(element.nodeType == 9) {
422+
if(element.nodeType == NODE_TYPE_DOCUMENT) {
423423
element = element.documentElement;
424424
}
425425
var names = isArray(name) ? name : [name];
@@ -432,7 +432,7 @@ function jqLiteInheritedData(element, name, value) {
432432
// If dealing with a document fragment node with a host element, and no parent, use the host
433433
// element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM
434434
// to lookup parent controllers.
435-
element = element.parentNode || (element.nodeType === 11 && element.host);
435+
element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host);
436436
}
437437
}
438438

@@ -610,7 +610,7 @@ forEach({
610610
function getText(element, value) {
611611
if (isUndefined(value)) {
612612
var nodeType = element.nodeType;
613-
return (nodeType === 1 || nodeType === 3) ? element.textContent : '';
613+
return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : '';
614614
}
615615
element.textContent = value;
616616
}
@@ -832,7 +832,7 @@ forEach({
832832
children: function(element) {
833833
var children = [];
834834
forEach(element.childNodes, function(element){
835-
if (element.nodeType === 1)
835+
if (element.nodeType === NODE_TYPE_ELEMENT)
836836
children.push(element);
837837
});
838838
return children;
@@ -844,7 +844,7 @@ forEach({
844844

845845
append: function(element, node) {
846846
var nodeType = element.nodeType;
847-
if (nodeType !== 1 && nodeType !== 11) return;
847+
if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return;
848848

849849
node = new JQLite(node);
850850

@@ -855,7 +855,7 @@ forEach({
855855
},
856856

857857
prepend: function(element, node) {
858-
if (element.nodeType === 1) {
858+
if (element.nodeType === NODE_TYPE_ELEMENT) {
859859
var index = element.firstChild;
860860
forEach(new JQLite(node), function(child){
861861
element.insertBefore(child, index);
@@ -906,7 +906,7 @@ forEach({
906906

907907
parent: function(element) {
908908
var parent = element.parentNode;
909-
return parent && parent.nodeType !== 11 ? parent : null;
909+
return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null;
910910
},
911911

912912
next: function(element) {

src/ng/animate.js

+3-16
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,6 @@ var $AnimateProvider = ['$provide', function($provide) {
8484
this.$get = ['$$q', '$$asyncCallback', '$rootScope', function($$q, $$asyncCallback, $rootScope) {
8585

8686
var currentDefer;
87-
var ELEMENT_NODE = 1;
88-
89-
function extractElementNodes(element) {
90-
var elements = new Array(element.length);
91-
var count = 0;
92-
for(var i = 0; i < element.length; i++) {
93-
var elm = element[i];
94-
if (elm.nodeType == ELEMENT_NODE) {
95-
elements[count++] = elm;
96-
}
97-
}
98-
elements.length = count;
99-
return jqLite(elements);
100-
}
10187

10288
function runAnimationPostDigest(fn) {
10389
var cancelFn, defer = $$q.defer();
@@ -299,7 +285,8 @@ var $AnimateProvider = ['$provide', function($provide) {
299285
setClass : function(element, add, remove, runSynchronously) {
300286
var self = this;
301287
var STORAGE_KEY = '$$animateClasses';
302-
element = extractElementNodes(jqLite(element));
288+
var createdCache = false;
289+
element = jqLite(element);
303290

304291
if (runSynchronously) {
305292
self.$$addClassImmediately(element, add);
@@ -312,7 +299,7 @@ var $AnimateProvider = ['$provide', function($provide) {
312299
cache = {
313300
classes: {}
314301
};
315-
var createdCache = true;
302+
createdCache = true;
316303
}
317304

318305
var classes = cache.classes;

src/ng/compile.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -1141,7 +1141,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
11411141
// We can not compile top level text elements since text nodes can be merged and we will
11421142
// not be able to attach scope data to them, so we will wrap them in <span>
11431143
forEach($compileNodes, function(node, index){
1144-
if (node.nodeType == 3 /* text node */ && node.nodeValue.match(/\S+/) /* non-empty */ ) {
1144+
if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) {
11451145
$compileNodes[index] = jqLite(node).wrap('<span></span>').parent()[0];
11461146
}
11471147
});
@@ -1344,7 +1344,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
13441344
className;
13451345

13461346
switch(nodeType) {
1347-
case 1: /* Element */
1347+
case NODE_TYPE_ELEMENT: /* Element */
13481348
// use the node name: <directive>
13491349
addDirective(directives,
13501350
directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective);
@@ -1399,10 +1399,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
13991399
}
14001400
}
14011401
break;
1402-
case 3: /* Text Node */
1402+
case NODE_TYPE_TEXT: /* Text Node */
14031403
addTextInterpolateDirective(directives, node.nodeValue);
14041404
break;
1405-
case 8: /* Comment */
1405+
case NODE_TYPE_COMMENT: /* Comment */
14061406
try {
14071407
match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue);
14081408
if (match) {
@@ -1442,7 +1442,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
14421442
"Unterminated attribute, found '{0}' but no matching '{1}' found.",
14431443
attrStart, attrEnd);
14441444
}
1445-
if (node.nodeType == 1 /** Element **/) {
1445+
if (node.nodeType == NODE_TYPE_ELEMENT) {
14461446
if (node.hasAttribute(attrStart)) depth++;
14471447
if (node.hasAttribute(attrEnd)) depth--;
14481448
}
@@ -1625,7 +1625,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
16251625
}
16261626
compileNode = $template[0];
16271627

1628-
if ($template.length != 1 || compileNode.nodeType !== 1) {
1628+
if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
16291629
throw $compileMinErr('tplrt',
16301630
"Template for directive '{0}' must have exactly one root element. {1}",
16311631
directiveName, '');
@@ -2107,7 +2107,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
21072107
}
21082108
compileNode = $template[0];
21092109

2110-
if ($template.length != 1 || compileNode.nodeType !== 1) {
2110+
if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) {
21112111
throw $compileMinErr('tplrt',
21122112
"Template for directive '{0}' must have exactly one root element. {1}",
21132113
origAsyncDirective.name, templateUrl);
@@ -2533,7 +2533,7 @@ function removeComments(jqNodes) {
25332533

25342534
while (i--) {
25352535
var node = jqNodes[i];
2536-
if (node.nodeType === 8) {
2536+
if (node.nodeType === NODE_TYPE_COMMENT) {
25372537
splice.call(jqNodes, i, 1);
25382538
}
25392539
}

0 commit comments

Comments
 (0)