Specificity example

class SpecificityTest extends TestCase
{
    /** @dataProvider getValueTestData */
    public function testValue(Specificity $specificity$value)
    {
        $this->assertEquals($value$specificity->getValue());
    }

    /** @dataProvider getValueTestData */
    public function testPlusValue(Specificity $specificity$value)
    {
        $this->assertEquals($value + 123, $specificity->plus(new Specificity(1, 2, 3))->getValue());
    }

    public static function getValueTestData()
    {
        return [
            [new Specificity(0, 0, 0), 0],
            [new Specificity(0, 0, 2), 2],
            [new Specificity(0, 3, 0), 30],
            [new Specificity(4, 0, 0), 400],
            [new Specificity(4, 3, 2), 432],
        ];
    }

        return $this->selector;
    }

    public function getIdentifier(): string
    {
        return $this->identifier;
    }

    public function getSpecificity(): Specificity
    {
        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
    }

    public function __toString(): string
    {
        return sprintf('%s[%s:%s]', $this->getNodeName()$this->selector, $this->identifier);
    }
}

        return $this->operator;
    }

    public function getValue(): ?string
    {
        return $this->value;
    }

    public function getSpecificity(): Specificity
    {
        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
    }

    public function __toString(): string
    {
        $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute;

        return 'exists' === $this->operator
            ? sprintf('%s[%s[%s]]', $this->getNodeName()$this->selector, $attribute)
            : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName()$this->selector, $attribute$this->operator, $this->value);
    }
}

        return $this->namespace;
    }

    public function getElement(): ?string
    {
        return $this->element;
    }

    public function getSpecificity(): Specificity
    {
        return new Specificity(0, 0, $this->element ? 1 : 0);
    }

    public function __toString(): string
    {
        $element = $this->element ?: '*';

        return sprintf('%s[%s]', $this->getNodeName()$this->namespace ? $this->namespace.'|'.$element : $element);
    }
}

        return $this->selector;
    }

    public function getId(): string
    {
        return $this->id;
    }

    public function getSpecificity(): Specificity
    {
        return $this->selector->getSpecificity()->plus(new Specificity(1, 0, 0));
    }

    public function __toString(): string
    {
        return sprintf('%s[%s#%s]', $this->getNodeName()$this->selector, $this->id);
    }
}
/** * @return Token[] */
    public function getArguments(): array
    {
        return $this->arguments;
    }

    public function getSpecificity(): Specificity
    {
        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
    }

    public function __toString(): string
    {
        $arguments = implode(', ', array_map(fn (Token $token) => "'".$token->getValue()."'", $this->arguments));

        return sprintf('%s[%s:%s(%s)]', $this->getNodeName()$this->selector, $this->name, $arguments ? '['.$arguments.']' : '');
    }
}

        return $this->tree;
    }

    public function getPseudoElement(): ?string
    {
        return $this->pseudoElement;
    }

    public function getSpecificity(): Specificity
    {
        return $this->tree->getSpecificity()->plus(new Specificity(0, 0, $this->pseudoElement ? 1 : 0));
    }

    public function __toString(): string
    {
        return sprintf('%s[%s%s]', $this->getNodeName()$this->tree, $this->pseudoElement ? '::'.$this->pseudoElement : '');
    }
}

        return $this->selector;
    }

    public function getName(): string
    {
        return $this->name;
    }

    public function getSpecificity(): Specificity
    {
        return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0));
    }

    public function __toString(): string
    {
        return sprintf('%s[%s.%s]', $this->getNodeName()$this->selector, $this->name);
    }
}
Home | Imprint | This part of the site doesn't use cookies.