UNPKG

libxmljs

Version:

libxml bindings for v8 javascript engine

231 lines 10.1 kB
"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&nbsp;with a non-breaking space</child1></name1>", elem.toString({ type: "xhtml", encoding: "HTML" })); assert.equal("<name1><child1>Something&#160;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&nbsp;with a non-breaking space</child1><child2>&#128512;</child2></name1>", elem.toString({ type: "xhtml", encoding: "HTML" })); assert.equal("<name1><child1>Something&#160;with a non-breaking space</child1><child2>&#128512;</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 &lt;&gt; 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