Utility methods for DOM and string parsing
Version vom
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/391979/746747/ParseUtil.js
// ==UserScript==
// @name ParseUtil
// @namespace hoehleg.userscripts.private
// @version 0.3.1
// @description Utility methods for DOM and string parsing
// @author Gerrit Höhle
// @grant GM_xmlhttpRequest
// ==/UserScript==
/* jshint esnext: true */
const ParseUtil = {
getPageAsync: (url, onSuccess, onError = () => {}) => {
return GM_xmlhttpRequest({
method: 'GET',
url: url,
onload: (resp) => {
resp.html = new DOMParser().parseFromString(resp.responseText || "", 'text/html');
switch (resp.status) {
case 200:
case 304:
onSuccess(resp);
return;
default:
onError(resp);
return;
}
},
onerror: onError
});
},
parseInt: (str, maxIntPlaces = 1, fallbackValue = null) => {
let regex = "\\d";
if (maxIntPlaces > 1) {
regex += "{1," + maxIntPlaces + "}";
}
return Util.parseIntWithRegex(str, new RegExp(regex), fallbackValue);
},
parseFloat: (str, maxIntPlaces = 1, maxDecPlaces = 0, fallbackValue = null) => {
let regex = "\\d";
if (maxIntPlaces > 1) {
regex += "{1," + maxIntPlaces + "}";
}
if (maxDecPlaces > 0) {
regex += "\\s?[,\.]?\\s?\\d{0," + maxDecPlaces + "}";
}
return Util.parseFloatWithRegex(str, new RegExp(regex), fallbackValue);
},
parseIntWithRegex: (str, regex, fallbackValue = null) => {
const match = Util.parseStrWithRegex(str, regex);
const value = parseInt(match);
return Number.isNaN(value) ? fallbackValue : value;
},
parseFloatWithRegex: (str, regex, fallbackValue = null) => {
const match = Util.parseStrWithRegex(str, regex, "").replace(",",".");
const value = parseFloat(match);
return Number.isNaN(value) ? fallbackValue : value;
},
parseStrWithRegex: (str, regex, fallbackValue = null) => {
const match = regex.exec(str || "");
return (match && match.length >= 1) ? match[0] : fallbackValue;
}
};