Greasy Fork is available in English.
HTML、XML、DOM、文字列に関する汎用的な処理をまとめたライブラリです。
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/19616/125280/%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%83%A9%E3%82%B9.js
// ==UserScript==
// @name ユーティリティクラス
// @version 1.1.0
// @description HTML、XML、DOM、文字列に関する汎用的な処理をまとめたライブラリです。
// @license Mozilla Public License Version 2.0 (MPL 2.0); https://www.mozilla.org/MPL/2.0/
// @compatible Firefox
// @compatible Opera
// @compatible Chrome
// @author 100の人
// @homepage http://greasyfork.icu/scripts/19616
// ==/UserScript==
(function () {
'use strict';
/**
* HTML、XML、DOMに関するメソッド等。
*/
window.MarkupUtils = {
/**
* Atom名前空間。
* @constant {string}
*/
ATOM_NAMESPACE: 'http://www.w3.org/2005/Atom',
/**
* XMLの特殊文字と文字参照の変換テーブル。
* @constant {Object.<string>}
*/
CHARACTER_REFERENCES_TRANSLATION_TABLE: {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
},
/**
* XMLの特殊文字を文字参照に置換します。
* @see [html - HtmlSpecialChars equivalent in Javascript? - Stack Overflow]{@link http://stackoverflow.com/a/4835406}
* @param {string} str - プレーンな文字列。
* @returns {string} HTMLとして扱われる文字列。
*/
convertSpecialCharactersToCharacterReferences(str) {
return String(str).replace(
/[&<>"']/g,
specialCharcter => this.CHARACTER_REFERENCES_TRANSLATION_TABLE[specialCharcter]
);
},
/**
* テンプレート文字列のタグとして用いることで、式内にあるXMLの特殊文字を文字参照に置換します。
* @param {string[]} htmlTexts
* @param {...string} plainText
* @returns {string} HTMLとして扱われる文字列。
*/
escapeTemplateStrings(htmlTexts, ...plainTexts) {
return String.raw(
htmlTexts,
...plainTexts.map(plainText => this.convertSpecialCharactersToCharacterReferences(plainText))
);
},
/**
* 指定したURLからファイルをダウンロードします。
* @param {string} url
* @param {string} filename
*/
download(url, filename) {
let body = document.body;
body.insertAdjacentHTML('beforeend', h`<a href="${url}" download="${filename}" hidden=""></a>`);
let anchor = body.lastElementChild;
anchor.click();
anchor.remove();
}
};
/**
* {@link MarkupUtils.escapeTemplateStrings}、または {@link MarkupUtils.convertSpecialCharactersToCharacterReferences} の短縮表記。
* @example
* // returns "<code><a href="https://example.com/"link text</a></code>"
* h`<code>${'<a href="https://example.com/">link text</a>'}</code>`;
* @example
* // returns "<a href="https://example.com/"link text</a>"
* h('<a href="https://example.com/">link text</a>');
*/
window.h = function () {
return Array.isArray(arguments[0])
? MarkupUtils.escapeTemplateStrings(...arguments)
: MarkupUtils.convertSpecialCharactersToCharacterReferences(arguments[0]);
};
/**
* 文字、文字列の処理を行うメソッド等。
*/
window.StringProcessor = {
/**
* ひらがなをカタカナに変換するときの加数。
* @constant {number}
*/
ADDEND_HIRAGANA_TO_KATAKANA: 'ァ'.charCodeAt() - 'ぁ'.charCodeAt(),
/**
* ひらがなをカタカナに変換します。
* @param {string} str
* @returns {string}
*/
convertToKatakana(str) {
return str.replace(
/[ぁ-ゖ]/g,
match => String.fromCharCode(match.charCodeAt() + this.ADDEND_HIRAGANA_TO_KATAKANA)
);
},
};
})();