aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShyam Seshadri2013-01-19 10:21:17 +0530
committerMisko Hevery2013-02-14 14:43:55 -0800
commit755beb2b66ce9f9f9a218f2355bbaf96d94fbc15 (patch)
tree77e304cf39020d89ac4fd6fb1c8917d85976a76a
parent6d70ff5c8d1e032ca7d29c48ca55882a64ca1487 (diff)
downloadangular.js-755beb2b66ce9f9f9a218f2355bbaf96d94fbc15.tar.bz2
fix(compiler): Allow startingTag method to handle text / comment nodes
-rw-r--r--src/Angular.js15
-rw-r--r--test/AngularSpec.js7
2 files changed, 19 insertions, 3 deletions
diff --git a/src/Angular.js b/src/Angular.js
index 27ef157d..5195489e 100644
--- a/src/Angular.js
+++ b/src/Angular.js
@@ -777,9 +777,18 @@ function startingTag(element) {
// are not allowed to have children. So we just ignore it.
element.html('');
} catch(e) {}
- return jqLite('<div>').append(element).html().
- match(/^(<[^>]+>)/)[1].
- replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
+ // As Per DOM Standards
+ var TEXT_NODE = 3;
+ var elemHtml = jqLite('<div>').append(element).html();
+ try {
+ return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :
+ elemHtml.
+ match(/^(<[^>]+>)/)[1].
+ replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });
+ } catch(e) {
+ return lowercase(elemHtml);
+ }
+
}
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index 1ead504f..e734decf 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -673,6 +673,13 @@ describe('angular', function() {
toBe('<ng-abc x="2A">');
});
});
+
+ describe('startingTag', function() {
+ it('should allow passing in Nodes instead of Elements', function() {
+ var txtNode = document.createTextNode('some text');
+ expect(startingTag(txtNode)).toBe('some text');
+ });
+ });
describe('snake_case', function(){
it('should convert to snake_case', function() {