all files / src/extractor/ color-extractor.js

100% Statements 62/62
100% Branches 18/18
100% Functions 8/8
100% Lines 27/27
6 statements, 6 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64               160656×                                   2570496×                 3814937× 3814937× 3814937×            
import { Color } from "../color";
import { Hex3Extractor } from "./hex3-extractor";
import { Hex4Extractor } from "./hex4-extractor";
import { Hex6Extractor } from "./hex6-extractor";
import { Hex8Extractor } from "./hex8-extractor";
import { HslAlphaExtractor } from "./hsl-alpha-extractor";
import { HslExtractor } from "./hsl-extractor";
import { HslaExtractor } from "./hsla-extractor";
import { RgbAlphaExtractor } from "./rgb-alpha-extractor";
import { RgbExtractor } from "./rgb-extractor";
import { RgbPercentAlphaExtractor } from "./rgb-percent-alpha-extractor";
import { RgbPercentExtractor } from "./rgb-percent-extractor";
import { RgbaExtractor } from "./rgba-extractor";
import { RgbaPercentExtractor } from "./rgba-percent-extractor";
import { SpaceDelimitedHslAlphaExtractor } from "./space-delimited-hsl-alpha-extractor";
import { SpaceDelimitedHslExtractor } from "./space-delimited-hsl-extractor";
import { WebColorExtractor } from "./web-color-extractor";
 
/**
 * 色表現の抽出処理を提供します。
 */
class ColorExtractor {
    /**
     * インスタンスを初期化します。
     */
    constructor() {
        this._extractors = [
            Hex3Extractor,
            Hex4Extractor,
            Hex6Extractor,
            Hex8Extractor,
            HslAlphaExtractor,
            HslExtractor,
            HslaExtractor,
            RgbAlphaExtractor,
            RgbExtractor,
            RgbPercentAlphaExtractor,
            RgbPercentExtractor,
            RgbaExtractor,
            RgbaPercentExtractor,
            SpaceDelimitedHslAlphaExtractor,
            SpaceDelimitedHslExtractor,
            WebColorExtractor
        ]
        .map(x => new x());
    }
 
    /**
     * 色情報を抽出します。
     * @param {String} expression WEBカラーの色表現。
     * @return {Color} 抽出結果を返します。
     */
    extract(expression) {
        for (const extractor of this._extractors) {
            const color = extractor.extract(expression);
            if (color) return color;
        }
        return null;
    }
}
 
export { ColorExtractor };