all files / src/Match/ TagMatcher.js

91.18% Statements 31/34
78.57% Branches 11/14
100% Functions 6/6
90.63% Lines 29/32
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  3982× 3982×               3966×     3973× 3973× 3956×   17×   14× 14×                                          
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const element_analysis_1 = require("@opticss/element-analysis");
const util_1 = require("@opticss/util");
const SelectorParser = require("postcss-selector-parser");
const Match_1 = require("./Match");
const Matcher_1 = require("./Matcher");
function isTag(tag) {
    Eif (tag) {
        return tag.type === SelectorParser.TAG;
    }
    else {
        return false;
    }
}
exports.isTag = isTag;
class TagMatcher extends Matcher_1.Matcher {
    constructor() { super(); }
    static get instance() {
        return TagMatcher._instance;
    }
    matchSelectorNode(tag, node) {
        Eif (isTag(node)) {
            if (element_analysis_1.isConstant(tag.value)) {
                return Match_1.boolToMatch(node.value === tag.value.constant);
            }
            else if (element_analysis_1.isTagChoice(tag.value)) {
                return Match_1.boolToMatch(tag.value.oneOf.some(v => v === node.value));
            }
            else Eif (element_analysis_1.isUnknown(tag.value)) {
                return Match_1.Match.maybe;
            }
            else {
                return util_1.assertNever(node);
            }
        }
        else {
            return Match_1.Match.pass;
        }
    }
    matchSelectorComponent(tag, selector) {
        let tagNode = this.getTag(selector);
        if (tagNode) {
            return this.matchSelectorNode(tag, tagNode);
        }
        else {
            return Match_1.Match.pass;
        }
    }
    getTag(selector) {
        let node = selector.nodes.find((node) => isTag(node));
        if (node) {
            return node;
        }
        else {
            return undefined;
        }
    }
}
TagMatcher._instance = new TagMatcher();
exports.TagMatcher = TagMatcher;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnTWF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9NYXRjaC9UYWdNYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0VBS21DO0FBQ25DLHdDQUE0QztBQUM1QywwREFBMEQ7QUFFMUQsbUNBQTZDO0FBQzdDLHVDQUFzRDtBQUV0RCxlQUFzQixHQUFpQztJQUNyRCxJQUFJLEdBQUcsRUFBRTtRQUNQLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsR0FBRyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQU5ELHNCQU1DO0FBRUQsZ0JBQXdCLFNBQVEsaUJBQVk7SUFDMUMsZ0JBQXdCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUzQixNQUFNLEtBQUssUUFBUTtRQUN4QixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEdBQVEsRUFBRSxJQUF5QjtRQUNuRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLElBQUksNkJBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sbUJBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkQ7aUJBQU0sSUFBSSw4QkFBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakMsT0FBTyxtQkFBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTSxJQUFJLDRCQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMvQixPQUFPLGFBQUssQ0FBQyxLQUFLLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsT0FBTyxrQkFBVyxDQUFRLElBQUksQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sYUFBSyxDQUFDLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFRLEVBQUUsUUFBMEI7UUFDekQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsT0FBTyxhQUFLLENBQUMsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUEwQjtRQUN2QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQTBCLENBQUM7U0FDbkM7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7QUFwQ2Msb0JBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBRjlDLGdDQXdDQyJ9