Comparing version 2.1.1 to 2.2.0
20
index.js
@@ -7,20 +7,18 @@ 'use strict' | ||
var Element = require('./lib/Element') | ||
var equal = require('./lib/equal') | ||
var createElement = require('./lib/createElement') | ||
/** | ||
* Element | ||
*/ | ||
exports.Element = Element | ||
exports.equals = Element.equals | ||
exports.createElement = Element.createElement | ||
/** | ||
* Helpers | ||
*/ | ||
exports.equal = equal.equal | ||
exports.nameEqual = equal.name | ||
exports.attrsEqual = equal.attrs | ||
exports.childrenEqual = equal.children | ||
exports.createElement = createElement | ||
exports.escapeXML = escape.escapeXML | ||
exports.escapeXMLText = escape.escapeXMLText | ||
/** | ||
* parser interface | ||
*/ | ||
exports.Parser = Parser | ||
exports.parse = parse |
@@ -7,2 +7,8 @@ 'use strict' | ||
var equality = require('./equal') | ||
var equal = equality.equal | ||
var nameEqual = equality.name | ||
var attrsEqual = equality.attrs | ||
var childrenEqual = equality.children | ||
/** | ||
@@ -384,70 +390,17 @@ * This cheap replica of DOM/Builder puts me to shame :-) | ||
Element.prototype.nameEquals = function (el) { | ||
return this.name === el.name | ||
return nameEqual(this, el) | ||
} | ||
Element.prototype.attrsEquals = function (el) { | ||
var attrs = this.attrs | ||
var keys = Object.keys(attrs) | ||
var length = keys.length | ||
if (length !== Object.keys(el.attrs).length) return false | ||
for (var i = 0, l = length; i < l; i++) { | ||
var key = keys[i] | ||
var value = attrs[key] | ||
if (value == null || el.attrs[key] == null) { // === null || undefined | ||
if (value !== el.attrs[key]) return false | ||
} | ||
else if (value.toString() !== el.attrs[key].toString()) return false | ||
} | ||
return true | ||
return attrsEqual(this, el) | ||
} | ||
Element.prototype.childrenEquals = function (el) { | ||
var children = this.children | ||
var length = children.length | ||
if (length !== el.children.length) return false | ||
for (var i = 0, l = length; i < l; i++) { | ||
var child = children[i] | ||
if (typeof child === 'string') { | ||
if (child !== el.children[i]) return false | ||
} else { | ||
if (!child.equals(el.children[i])) return false | ||
} | ||
} | ||
return true | ||
return childrenEqual(this, el) | ||
} | ||
Element.prototype.equals = function (el) { | ||
if (!this.nameEquals(el)) return false | ||
if (!this.attrsEquals(el)) return false | ||
if (!this.childrenEquals(el)) return false | ||
return true | ||
return equal(this, el) | ||
} | ||
Element.createElement = function (name, attrs /*, child1, child2, ...*/) { | ||
var el = new Element(name, attrs) | ||
var children = Array.prototype.slice.call(arguments, 2) | ||
children.forEach(function (child) { | ||
el.cnode(child) | ||
}) | ||
return el | ||
} | ||
Element.nameEqual = function (a, b) { | ||
return a.nameEquals(b) | ||
} | ||
Element.attrsEqual = function (a, b) { | ||
return a.attrsEquals(b) | ||
} | ||
Element.childrenEqual = function (a, b) { | ||
return a.childrenEquals(b) | ||
} | ||
Element.equal = function (a, b) { | ||
return a.equals(b) | ||
} | ||
module.exports = Element |
@@ -6,3 +6,9 @@ 'use strict' | ||
module.exports = function parse (data, options) { | ||
var p = new Parser(options) | ||
var p | ||
if (typeof options === 'function') { | ||
p = new options() // eslint-disable-line | ||
} else { | ||
p = new Parser(options) | ||
} | ||
var result = null | ||
@@ -9,0 +15,0 @@ var error = null |
@@ -11,4 +11,4 @@ 'use strict' | ||
var ParserInterface = this.Parser = (options && options.Parser) || LtxParser | ||
var ElementInterface = this.Element = (options && options.Element) || Element | ||
var ParserInterface = this.Parser = (options && options.Parser) || this.DefaultParser | ||
var ElementInterface = this.Element = (options && options.Element) || this.DefaultElement | ||
@@ -52,2 +52,6 @@ this.parser = new ParserInterface() | ||
Parser.prototype.DefaultParser = LtxParser | ||
Parser.prototype.DefaultElement = Element | ||
Parser.prototype.write = function (data) { | ||
@@ -54,0 +58,0 @@ this.parser.write(data) |
{ | ||
"name": "ltx", | ||
"version": "2.1.1", | ||
"version": "2.2.0", | ||
"description": "<xml for=\"JavaScript\">", | ||
@@ -33,6 +33,6 @@ "author": "Astro", | ||
"preversion": "npm test", | ||
"webify": "browserify -s ltx index.js -o ltx.js", | ||
"bundle": "browserify -s ltx index.js -o bundle.js", | ||
"unit": "vows --spec", | ||
"lint": "standard", | ||
"test": "npm run unit && npm run lint && npm run webify" | ||
"test": "npm run unit && npm run lint && npm run bundle" | ||
}, | ||
@@ -39,0 +39,0 @@ "dependencies": { |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
56775
18
1946
1