[Pkg-javascript-commits] [ltx] 230/469: sax_ltx: fixes, ignore processing instructions

Jonas Smedegaard dr at jones.dk
Wed Aug 31 13:03:07 UTC 2016


This is an automated email from the git hooks/post-receive script.

js pushed a commit to branch master
in repository ltx.

commit 98057b781b54c8be7b179e23eda1af39a1c69da7
Author: Astro <astro at spaceboyz.net>
Date:   Tue Mar 20 04:51:34 2012 +0100

    sax_ltx: fixes, ignore processing instructions
---
 lib/sax_ltx.js     | 24 +++++++++++++++++-------
 test/parse-test.js |  2 +-
 2 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/lib/sax_ltx.js b/lib/sax_ltx.js
index 9269be3..22939f3 100644
--- a/lib/sax_ltx.js
+++ b/lib/sax_ltx.js
@@ -2,6 +2,7 @@ var util = require('util');
 var events = require('events');
 
 const STATE_TEXT = 0,
+    STATE_IGNORE_TAG = 1,
     STATE_TAG_NAME = 2,
     STATE_TAG = 3,
     STATE_ATTR_NAME = 4,
@@ -64,12 +65,20 @@ var SaxLtx = module.exports = function SaxLtx() {
 		if (c === 47 /* / */ && recordStart === pos) {
 		    recordStart = pos + 1;
 		    endTag = true;
+		} else if (c === 33 /* ! */ || c === 63 /* ? */) {
+		    recordStart = undefined;
+		    state = STATE_IGNORE_TAG;
 		} else if (c <= 32 || c === 47 /* / */ || c === 62 /* > */) {
 		    tagName = endRecording();
 		    pos--;
 		    state = STATE_TAG;
 		}
 		break;
+	    case STATE_IGNORE_TAG:
+		if (c === 62 /* > */) {
+		    state = STATE_TEXT;
+		}
+		break;
 	    case STATE_TAG:
 		if (c === 62 /* > */) {
 		    if (!endTag) {
@@ -118,15 +127,16 @@ var SaxLtx = module.exports = function SaxLtx() {
 		    state = STATE_TAG;
 		}
 		break;
+	    }
 	}
-    }
 
-    if (this.hasOwnProperty('recordStart') &&
-	this.recordStart <= data.length) {
-	remainder = data.slice(this.recordStart);
-	this.recordStart = 0;
-    }
-};
+	if (typeof recordStart === 'number' &&
+	    recordStart <= data.length) {
+
+	    remainder = data.slice(recordStart);
+	    recordStart = 0;
+	}
+    };
 
     /*var origEmit = this.emit;
     this.emit = function() {
diff --git a/test/parse-test.js b/test/parse-test.js
index f4c7615..c225f20 100644
--- a/test/parse-test.js
+++ b/test/parse-test.js
@@ -87,7 +87,7 @@ ltx.availableSaxParsers.forEach(function(saxParser) {
 		parser.write("mpp-tls'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-");
 		assert.equal(events.length, 4);
 		parser.write("sasl'><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</");
-		assert.equal(events.length, 9);
+		assert.equal(events.length, 10);
 		parser.write("mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms>");
 		assert.equal(events.length, 15);
 		parser.write("<register xmlns='http://jabber.org/features/iq-register'/");

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/ltx.git



More information about the Pkg-javascript-commits mailing list