all files / src/detector/ hex6-detector.js

100% Statements 34/34
93.75% Branches 15/16
100% Functions 10/10
100% Lines 11/11
2 statements, 4 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38                562695×                 482009× 482009× 482009×                 80686× 80686× 80686× 80686×        
/**
 * 6桁の16進数表現の検出処理を提供します。
 */
class Hex6Detector {
    /**
     * 色表現の正規表現を取得します。
     * @returns {String} 正規表現を返します。
     */
    _getColorExpression() {
        return "#[0-9a-f]{6}([^0-9a-f]|$)";
    }
 
    /**
     * 表現を検査します。
     * @param {String} expression 検査対象の表現。
     * @returns {Boolean} 検証結果(true : 一致、false : 不一致)を返します。
     */
    match(expression) {
        const color = this._getColorExpression();
        const regExp = new RegExp(`^\\s*${color}\\s*$`, "i");
        return regExp.test(expression);
    }
 
    /**
     * 文字列中の該当表現を検出します。
     * @param {String} expression 検査対象の表現。
     * @returns {Array<String>} 検出した表現を返します。
     */
    detect(expression) {
        const color = this._getColorExpression();
        const regExp = new RegExp(color, "gi");
        const results = (expression || "").match(regExp) || [];
        return results.map(x => x.length > 7 ? x.slice(0, -1) : x);
    }
}
 
export { Hex6Detector };