libxmljs
Version:
libxml bindings for v8 javascript engine
231 lines • 10.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var libxml = require("../index");
var index_1 = require("../index");
module.exports.new = function (assert) {
var _a;
var doc = libxml.Document();
var elem = libxml.Element(doc, "name1");
doc.root(elem);
assert.equal("name1", elem.name());
assert.equal("name1", (_a = doc.root()) === null || _a === void 0 ? void 0 : _a.name());
assert.done();
};
module.exports.newWithContent = function (assert) {
var _a;
var doc = libxml.Document();
var elem = libxml.Element(doc, "name1", "content && more content <>");
doc.root(elem);
assert.equal("name1", elem.name());
assert.equal("name1", (_a = doc.root()) === null || _a === void 0 ? void 0 : _a.name());
assert.equal("content && more content <>", elem.text());
assert.done();
};
module.exports.setters = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
assert.equal("", elem.text());
elem.text("content && more content <>");
assert.equal("content && more content <>", elem.text());
assert.equal("name1", elem.name());
elem.name("newname");
assert.equal("newname", elem.name());
assert.done();
};
module.exports.getters = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
assert.equal("element", elem.type());
assert.done();
};
module.exports.remove = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
var child = elem.node("child");
assert.ok(doc.get("/name1/child"));
child.remove();
assert.ok(!doc.get("/name1/child"));
assert.done();
};
module.exports.toString = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
assert.equal("<name1/>", elem.toString());
elem.node("child");
assert.equal("<name1><child/></name1>", elem.toString());
assert.equal("<name1><child></child></name1>", elem.toString({ selfCloseEmpty: false }));
assert.equal("<name1><child></child></name1>", elem.toString({ type: "html" }));
assert.equal("<name1\n ><child\n /></name1\n>", elem.toString({ whitespace: true }));
assert.equal("<name1>\n <child/>\n</name1>", elem.toString({ format: true }));
assert.done();
};
module.exports.toStringWithEncoding = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
assert.equal("<name1></name1>", elem.toString({ type: "xhtml" }));
elem.node("child1").text("Something\xA0with a non-breaking space");
assert.equal("<name1><child1>Something\xA0with a non-breaking space</child1></name1>", elem.toString({ type: "xhtml" }));
assert.equal("<name1><child1>Something\xA0with a non-breaking space</child1></name1>", elem.toString({ type: "xhtml", encoding: "UTF-8" }));
assert.equal("<name1><child1>Something with a non-breaking space</child1></name1>", elem.toString({ type: "xhtml", encoding: "HTML" }));
assert.equal("<name1><child1>Something with a non-breaking space</child1></name1>", elem.toString({ type: "xhtml", encoding: "ASCII" }));
elem.node("child2").text("😀");
assert.equal("<name1><child1>Something\xA0with a non-breaking space</child1><child2>😀</child2></name1>", elem.toString({ type: "xhtml" }));
assert.equal("<name1><child1>Something\xA0with a non-breaking space</child1><child2>😀</child2></name1>", elem.toString({ type: "xhtml", encoding: "UTF-8" }));
assert.equal("<name1><child1>Something with a non-breaking space</child1><child2>😀</child2></name1>", elem.toString({ type: "xhtml", encoding: "HTML" }));
assert.equal("<name1><child1>Something with a non-breaking space</child1><child2>😀</child2></name1>", elem.toString({ type: "xhtml", encoding: "ASCII" }));
assert.done();
};
module.exports.path = function (assert) {
var doc = libxml.Document();
var root = doc.node("root");
var gchild = root.node("child").node("grandchild");
var sibling = root.node("child");
assert.equal("/root/child[1]/grandchild", gchild.path());
assert.equal("/root/child[2]", sibling.path());
assert.done();
};
module.exports.move = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
var child = elem.node("child");
assert.ok(doc.get("/name1/child"));
child.remove();
var name2 = elem.node("name2");
name2.addChild(child);
assert.ok(!doc.get("/name1/child"));
assert.ok(doc.get("/name1/name2/child"));
assert.done();
};
module.exports.addChild = function (assert) {
var doc = libxml.Document();
var elem = doc.node("name1");
var newChild = libxml.Element(doc, "new-child");
elem.addChild(newChild);
assert.ok(doc.get("/name1/new-child"));
assert.done();
};
module.exports.add_prev_sibling = function (assert) {
var _a;
var doc = libxml.Document();
var elem = doc.node("name1");
var child1 = elem.node("child1");
var child2 = elem.node("child2");
assert.equal(elem.childNodes().length, 2);
var prevSibling = libxml.Element(doc, "prev-sibling");
var addedSibling = child2.addPrevSibling(prevSibling);
var children = elem.childNodes();
assert.equal(3, children.length);
assert.equal("prev-sibling", (_a = children[1]) === null || _a === void 0 ? void 0 : _a.name());
assert.done();
};
module.exports.add_next_sibling = function (assert) {
var _a;
var doc = libxml.Document();
var elem = doc.node("name1");
var child1 = elem.node("child1");
var child2 = elem.node("child2");
assert.equal(elem.childNodes().length, 2);
var nextSibling = libxml.Element(elem.doc(), "next-sibling");
var addedSibling = child1.addNextSibling(nextSibling);
var children = elem.childNodes();
assert.equal(3, children.length);
assert.equal("next-sibling", (_a = children[1]) === null || _a === void 0 ? void 0 : _a.name());
assert.done();
};
module.exports.import = function (assert) {
var _a, _b, _c;
var doc = libxml.Document();
var elem = doc.node("name1");
var child1 = elem.node("child1");
doc = child1.doc();
var newdoc = libxml.Document();
newdoc.node("newdoc");
(_a = newdoc.root()) === null || _a === void 0 ? void 0 : _a.addChild(child1);
assert.ok(newdoc);
assert.notEqual(doc, newdoc, true);
assert.equal("child1", (_c = (_b = newdoc.root()) === null || _b === void 0 ? void 0 : _b.childNodes()[0]) === null || _c === void 0 ? void 0 : _c.name());
assert.equal(child1, elem.childNodes()[0]);
assert.done();
};
module.exports.clone = function (assert) {
var doc = libxml.Document();
var elem = doc.node("child");
var elem2 = elem.clone();
assert.equal(elem2 instanceof index_1.XMLElement, true);
if (elem2 instanceof index_1.XMLElement) {
assert.equal(elem.name(), elem2.name());
assert.equal(elem.text(), elem2.text());
assert.equal(elem.toString(), elem2.toString());
}
assert.done();
};
module.exports.namespace = function (assert) {
var str = '<?xml version="1.0" encoding="UTF-8"?>\n' +
'<root xmlns:bacon="http://www.example.com/fake/uri"><node bacon:attr-with-ns="attr-with-ns-value" attr-without-ns="attr-withoug-ns-vavlue" /></root>';
var doc = libxml.parseXml(str);
var node = doc.get("node");
assert.equal(node instanceof index_1.XMLElement, true);
if (node instanceof index_1.XMLElement) {
var attrs = node === null || node === void 0 ? void 0 : node.attrs();
attrs.forEach(function (attr) {
var name = attr.name();
var ns = attr.namespace();
if (name === "attr-with-ns") {
assert.equal(ns.prefix(), "bacon");
assert.equal(ns.href(), "http://www.example.com/fake/uri");
}
else {
assert.equal(name, "attr-without-ns");
assert.equal(ns, null);
}
});
}
assert.done();
};
module.exports.replace = function (assert) {
var _a, _b, _c, _d, _e, _f;
var str = "<foo>some <bar/> evening</foo>";
var doc = libxml.parseXml(str);
var bar = doc.get("bar");
assert.equal(bar instanceof index_1.XMLElement, true);
if (bar instanceof index_1.XMLElement) {
bar.replace("enchanted");
}
assert.equal((_a = doc.root()) === null || _a === void 0 ? void 0 : _a.text(), "some enchanted evening");
doc = libxml.parseXml(str);
bar = doc.get("bar");
assert.equal(bar instanceof index_1.XMLElement, true);
if (bar instanceof index_1.XMLElement) {
bar.replace("<>");
}
assert.equal((_b = doc.root()) === null || _b === void 0 ? void 0 : _b.toString(), "<foo>some <> evening</foo>");
doc = libxml.parseXml(str);
bar = doc.get("bar");
var enchant = libxml.parseXml("<enchanted/>");
assert.equal(bar instanceof index_1.XMLElement, true);
if (bar instanceof index_1.XMLElement) {
assert.equal(!!enchant.root(), true);
bar.replace(enchant.root());
}
assert.equal((_c = doc.root()) === null || _c === void 0 ? void 0 : _c.toString(), "<foo>some <enchanted/> evening</foo>");
assert.equal((_d = doc.root()) === null || _d === void 0 ? void 0 : _d.childNodes().length, 3);
assert.equal((_f = (_e = doc.root()) === null || _e === void 0 ? void 0 : _e.childNodes()[1]) === null || _f === void 0 ? void 0 : _f.name(), "enchanted");
assert.done();
};
module.exports.add_child_merge_text = function (assert) {
var str = "<foo>bar</foo>";
var doc = libxml.parseXml(str);
var foo = doc.root();
var baz = libxml.Text(doc, "baz");
assert.equal(foo instanceof index_1.XMLElement, true);
if (foo instanceof index_1.XMLElement) {
foo.addChild(baz);
assert.strictEqual("barbaz", foo.text());
assert.strictEqual(foo.childNodes().length, 1);
assert.ok(foo.childNodes()[0] != baz);
assert.strictEqual(doc, baz.parent());
assert.strictEqual("baz", baz.text());
}
assert.done();
};
//# sourceMappingURL=element.js.map