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 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
- function is (charclass, c) { return charclass.indexOf(c) !== -1 }
244
- function not (charclass, c) { return !is(charclass, c) }
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(whitespace+">",c)) {
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"
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
- var util = require("util")
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
- , failures = 0
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)