ParseUtil

Utility methods for DOM and string parsing

2019/11/04のページです。最新版はこちら

このスクリプトは単体で利用できません。右のようなメタデータを含むスクリプトから、ライブラリとして読み込まれます: // @require https://update.greasyfork.org/scripts/391979/746747/ParseUtil.js

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==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;
    }
};