|
@@ -2,9 +2,10 @@ import {camelCase, kebabCase, snakeCase} from "lodash";
|
|
|
|
|
|
import Utils from "../Utils.js";
|
|
import Utils from "../Utils.js";
|
|
import vkbeautify from "vkbeautify";
|
|
import vkbeautify from "vkbeautify";
|
|
-import {DOMParser as dom} from "xmldom";
|
|
|
|
|
|
+import {DOMParser} from "xmldom";
|
|
import xpath from "xpath";
|
|
import xpath from "xpath";
|
|
import jpath from "jsonpath";
|
|
import jpath from "jsonpath";
|
|
|
|
+import nwmatcher from "nwmatcher";
|
|
import prettyPrintOne from "imports-loader?window=>global!exports-loader?prettyPrintOne!google-code-prettify/bin/prettify.min.js";
|
|
import prettyPrintOne from "imports-loader?window=>global!exports-loader?prettyPrintOne!google-code-prettify/bin/prettify.min.js";
|
|
|
|
|
|
|
|
|
|
@@ -336,7 +337,7 @@ const Code = {
|
|
|
|
|
|
let doc;
|
|
let doc;
|
|
try {
|
|
try {
|
|
- doc = new dom().parseFromString(input);
|
|
|
|
|
|
+ doc = new DOMParser().parseFromString(input, "application/xml");
|
|
} catch (err) {
|
|
} catch (err) {
|
|
return "Invalid input XML.";
|
|
return "Invalid input XML.";
|
|
}
|
|
}
|
|
@@ -423,7 +424,7 @@ const Code = {
|
|
let query = args[0],
|
|
let query = args[0],
|
|
delimiter = args[1],
|
|
delimiter = args[1],
|
|
parser = new DOMParser(),
|
|
parser = new DOMParser(),
|
|
- html,
|
|
|
|
|
|
+ dom,
|
|
result;
|
|
result;
|
|
|
|
|
|
if (!query.length || !input.length) {
|
|
if (!query.length || !input.length) {
|
|
@@ -431,32 +432,32 @@ const Code = {
|
|
}
|
|
}
|
|
|
|
|
|
try {
|
|
try {
|
|
- html = parser.parseFromString(input, "text/html");
|
|
|
|
|
|
+ dom = parser.parseFromString(input);
|
|
} catch (err) {
|
|
} catch (err) {
|
|
return "Invalid input HTML.";
|
|
return "Invalid input HTML.";
|
|
}
|
|
}
|
|
|
|
|
|
try {
|
|
try {
|
|
- result = html.querySelectorAll(query);
|
|
|
|
|
|
+ const matcher = nwmatcher({document: dom});
|
|
|
|
+ result = matcher.select(query, dom);
|
|
} catch (err) {
|
|
} catch (err) {
|
|
return "Invalid CSS Selector. Details:\n" + err.message;
|
|
return "Invalid CSS Selector. Details:\n" + err.message;
|
|
}
|
|
}
|
|
|
|
|
|
const nodeToString = function(node) {
|
|
const nodeToString = function(node) {
|
|
|
|
+ return node.toString();
|
|
|
|
+ /* xmldom does not return the outerHTML value.
|
|
switch (node.nodeType) {
|
|
switch (node.nodeType) {
|
|
- case Node.ELEMENT_NODE: return node.outerHTML;
|
|
|
|
- case Node.ATTRIBUTE_NODE: return node.value;
|
|
|
|
- case Node.COMMENT_NODE: return node.data;
|
|
|
|
- case Node.TEXT_NODE: return node.wholeText;
|
|
|
|
- case Node.DOCUMENT_NODE: return node.outerHTML;
|
|
|
|
|
|
+ case node.ELEMENT_NODE: return node.outerHTML;
|
|
|
|
+ case node.ATTRIBUTE_NODE: return node.value;
|
|
|
|
+ case node.TEXT_NODE: return node.wholeText;
|
|
|
|
+ case node.COMMENT_NODE: return node.data;
|
|
|
|
+ case node.DOCUMENT_NODE: return node.outerHTML;
|
|
default: throw new Error("Unknown Node Type: " + node.nodeType);
|
|
default: throw new Error("Unknown Node Type: " + node.nodeType);
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
};
|
|
};
|
|
|
|
|
|
- return Array.apply(null, Array(result.length))
|
|
|
|
- .map(function(_, i) {
|
|
|
|
- return result[i];
|
|
|
|
- })
|
|
|
|
|
|
+ return result
|
|
.map(nodeToString)
|
|
.map(nodeToString)
|
|
.join(delimiter);
|
|
.join(delimiter);
|
|
},
|
|
},
|