diff --git a/lib/Parser.js b/lib/Parser.js index e94e346f8..cb018fbcb 100644 --- a/lib/Parser.js +++ b/lib/Parser.js @@ -89,7 +89,10 @@ function Parser(cbs, options){ this.startIndex = 0; this.endIndex = null; - this._tokenizer = new Tokenizer(options, this); + this._lowerCaseTagNames = "lowerCaseTags" in this._options ? !!this._options.lowerCaseTags : !this._options.xmlMode; + this._lowerCaseAttributeNames = "lowerCaseAttributeNames" in this._options ? !!this._options.lowerCaseAttributeNames : !this._options.xmlMode; + + this._tokenizer = new Tokenizer(this._options, this); } require("util").inherits(Parser, require("events").EventEmitter); @@ -111,7 +114,7 @@ Parser.prototype.ontext = function(data){ }; Parser.prototype.onopentagname = function(name){ - if(!(this._options.xmlMode || "lowerCaseTags" in this._options) || this._options.lowerCaseTags){ + if(this._lowerCaseTagNames){ name = name.toLowerCase(); } @@ -151,7 +154,7 @@ Parser.prototype.onopentagend = function(){ Parser.prototype.onclosetag = function(name){ this._updatePosition(1); - if(!(this._options.xmlMode || "lowerCaseTags" in this._options) || this._options.lowerCaseTags){ + if(this._lowerCaseTagNames){ name = name.toLowerCase(); } @@ -174,7 +177,7 @@ Parser.prototype.onclosetag = function(name){ }; Parser.prototype.onselfclosingtag = function(){ - if(this._options.xmlMode){ + if(this._options.xmlMode || this._options.recognizeSelfClosing){ this._closeCurrentTag(); } else { this.onopentagend(); @@ -197,7 +200,7 @@ Parser.prototype._closeCurrentTag = function(){ }; Parser.prototype.onattribname = function(name){ - if(!(this._options.xmlMode || "lowerCaseAttributeNames" in this._options) || this._options.lowerCaseAttributeNames){ + if(this._lowerCaseAttributeNames){ name = name.toLowerCase(); } this._attribname = name; @@ -224,7 +227,7 @@ Parser.prototype.ondeclaration = function(value){ var idx = value.search(re_nameEnd), name = idx < 0 ? value : value.substr(0, idx); - if(!(this._options.xmlMode || "lowerCaseTags" in this._options) || this._options.lowerCaseTags){ + if(this._lowerCaseTagNames){ name = name.toLowerCase(); } this._cbs.onprocessinginstruction("!" + name, "!" + value); @@ -236,7 +239,7 @@ Parser.prototype.onprocessinginstruction = function(value){ var idx = value.search(re_nameEnd), name = idx < 0 ? value : value.substr(0, idx); - if(!(this._options.xmlMode || "lowerCaseTags" in this._options) || this._options.lowerCaseTags){ + if(this._lowerCaseTagNames){ name = name.toLowerCase(); } this._cbs.onprocessinginstruction("?" + name, "?" + value); @@ -253,7 +256,7 @@ Parser.prototype.oncomment = function(value){ Parser.prototype.oncdata = function(value){ this._updatePosition(1); - if(this._options.xmlMode){ + if(this._options.xmlMode || this._options.recognizeCDATA){ if(this._cbs.oncdatastart) this._cbs.oncdatastart(); if(this._cbs.ontext) this._cbs.ontext(value); if(this._cbs.oncdataend) this._cbs.oncdataend();