sax 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/sax.js +26 -3
- package/package.json +1 -1
- package/test/index.js +11 -3
package/lib/sax.js
CHANGED
|
@@ -234,14 +234,37 @@ var whitespace = "\r\n\t "
|
|
|
234
234
|
, nameBody = nameStart+number+"-."
|
|
235
235
|
, quote = "'\""
|
|
236
236
|
, entity = number+letter+"#"
|
|
237
|
+
, attribEnd = whitespace + ">"
|
|
237
238
|
, CDATA = "[CDATA["
|
|
238
239
|
, DOCTYPE = "DOCTYPE"
|
|
239
240
|
, XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
|
|
240
241
|
, XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
|
|
241
242
|
, rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }
|
|
242
243
|
|
|
243
|
-
|
|
244
|
-
|
|
244
|
+
// turn all the string character sets into character class objects.
|
|
245
|
+
whitespace = charClass(whitespace)
|
|
246
|
+
number = charClass(number)
|
|
247
|
+
letter = charClass(letter)
|
|
248
|
+
nameStart = charClass(nameStart)
|
|
249
|
+
nameBody = charClass(nameBody)
|
|
250
|
+
quote = charClass(quote)
|
|
251
|
+
entity = charClass(entity)
|
|
252
|
+
attribEnd = charClass(attribEnd)
|
|
253
|
+
|
|
254
|
+
function charClass (str) {
|
|
255
|
+
return str.split("").reduce(function (s, c) {
|
|
256
|
+
s[c] = true
|
|
257
|
+
return s
|
|
258
|
+
}, {})
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function is (charclass, c) {
|
|
262
|
+
return charclass[c]
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function not (charclass, c) {
|
|
266
|
+
return !charclass[c]
|
|
267
|
+
}
|
|
245
268
|
|
|
246
269
|
var S = 0
|
|
247
270
|
sax.STATE =
|
|
@@ -905,7 +928,7 @@ function write (chunk) {
|
|
|
905
928
|
continue
|
|
906
929
|
|
|
907
930
|
case S.ATTRIB_VALUE_UNQUOTED:
|
|
908
|
-
if (not(
|
|
931
|
+
if (not(attribEnd,c)) {
|
|
909
932
|
if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U
|
|
910
933
|
else parser.attribValue += c
|
|
911
934
|
continue
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{ "name" : "sax"
|
|
2
2
|
, "description": "An evented streaming XML parser in JavaScript"
|
|
3
3
|
, "author" : "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)"
|
|
4
|
-
, "version" : "0.3.
|
|
4
|
+
, "version" : "0.3.5"
|
|
5
5
|
, "main" : "lib/sax.js"
|
|
6
6
|
, "license" : { "type": "MIT"
|
|
7
7
|
, "url": "https://raw.github.com/isaacs/sax-js/master/LICENSE" }
|
package/test/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var globalsBefore = JSON.stringify(Object.keys(global))
|
|
2
|
+
, util = require("util")
|
|
3
3
|
, assert = require("assert")
|
|
4
4
|
, fs = require("fs")
|
|
5
5
|
, path = require("path")
|
|
@@ -47,7 +47,7 @@ exports.test = function test (options) {
|
|
|
47
47
|
|
|
48
48
|
if (module === require.main) {
|
|
49
49
|
var running = true
|
|
50
|
-
|
|
50
|
+
, failures = 0
|
|
51
51
|
|
|
52
52
|
function fail (file, er) {
|
|
53
53
|
util.error("Failed: "+file)
|
|
@@ -66,6 +66,14 @@ if (module === require.main) {
|
|
|
66
66
|
// run this test.
|
|
67
67
|
try {
|
|
68
68
|
require(path.resolve(__dirname, file))
|
|
69
|
+
var globalsAfter = JSON.stringify(Object.keys(global))
|
|
70
|
+
if (globalsAfter !== globalsBefore) {
|
|
71
|
+
var er = new Error("new globals introduced\n"+
|
|
72
|
+
"expected: "+globalsBefore+"\n"+
|
|
73
|
+
"actual: "+globalsAfter)
|
|
74
|
+
globalsBefore = globalsAfter
|
|
75
|
+
throw er
|
|
76
|
+
}
|
|
69
77
|
console.log("ok " + (++i) + " - " + file)
|
|
70
78
|
} catch (er) {
|
|
71
79
|
console.log("not ok "+ (++i) + " - " + file)
|