ersatz-node-expat
Advanced tools
Comparing version 0.1.4 to 0.1.5
25
lib.js
@@ -14,3 +14,3 @@ /** | ||
this._text = []; | ||
this._text = ""; | ||
@@ -28,2 +28,3 @@ function _toMap(arr) { | ||
var level = 0; | ||
@@ -33,12 +34,20 @@ self._xml = new xml.SaxParser(function (cb) { | ||
cb.onStartDocument(function () { | ||
//xx console.log("onStartDocument"); | ||
}); | ||
cb.onEndDocument(function () { | ||
self._text = ""; | ||
self.emit("close"); | ||
// be careful ! this event could be called at the end of a unterminated string , when data | ||
// is written by chunk => we need to check that we are at the root level. | ||
if (level === 0) { | ||
self.emit("close"); | ||
} | ||
}); | ||
cb.onStartElementNS(function (elem, attrs, prefix, uri, namespaces) { | ||
self.emit("startElement", elem, _toMap(attrs)); | ||
level = level+1; | ||
self.emit("startElement", elem, _toMap(attrs),prefix,uri,namespaces); | ||
self._text = ""; | ||
}); | ||
cb.onEndElementNS(function (elem, prefix, uri) { | ||
@@ -53,7 +62,13 @@ | ||
} | ||
self.emit("endElement", elem); | ||
//xx console.log("onEndElementNS"); | ||
self.emit("endElement", elem , prefix, uri); | ||
level = level - 1; | ||
}); | ||
cb.onCharacters(function (chars) { | ||
///xxx console.log("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ",chars,self._text); | ||
self._text += chars; | ||
}); | ||
}); | ||
@@ -60,0 +75,0 @@ |
{ | ||
"name": "ersatz-node-expat", | ||
"version": "0.1.4", | ||
"version": "0.1.5", | ||
"description": "node-expat compatible module using only javascript ( no libexpat)", | ||
@@ -13,4 +13,5 @@ "main": "lib.js", | ||
"mocha": "^1.19.0", | ||
"node-expat": "2.3.11", | ||
"should": "^3.3.1", | ||
"node-expat": "2.3.11" | ||
"sinon": "^1.17.2" | ||
}, | ||
@@ -17,0 +18,0 @@ "dependencies": { |
/*global require,describe, it*/ | ||
var sinon = require("sinon"); | ||
var should = require("should"); | ||
var expat; | ||
@@ -121,2 +124,44 @@ try { | ||
}); | ||
it("should read a document sent by chunks",function() { | ||
var spy_startElement = sinon.spy(); | ||
var spy_endElement = sinon.spy(); | ||
var spy_text = sinon.spy(); | ||
var spy_error = sinon.spy(); | ||
var parser = new ersatz.Parser('UTF-8'); | ||
parser.on('startElement', spy_startElement); | ||
parser.on('endElement', spy_endElement); | ||
parser.on('text', spy_text); | ||
parser.on('error', spy_error); | ||
parser.write("<ELE"); | ||
parser.write("MENT>"); | ||
parser.write("Hel"); | ||
parser.write("lo\nWo"); | ||
parser.write("rld<"); | ||
parser.write("/EL"); | ||
parser.write("EMENT>"); | ||
parser.end(); | ||
spy_error.callCount.should.eql(0); | ||
spy_startElement.callCount.should.eql(1); | ||
spy_startElement.getCall(0).args[0].should.eql("ELEMENT"); | ||
spy_endElement.callCount.should.eql(1); | ||
spy_endElement.getCall(0).args[0].should.eql("ELEMENT"); | ||
spy_text.callCount.should.eql(2); | ||
spy_text.getCall(0).args[0].should.eql("Hello"); | ||
spy_text.getCall(1).args[0].should.eql("World"); | ||
}); | ||
}); |
12946
185
4