Latte\Parser::contextHtmlTag PHP Method

contextHtmlTag() private method

Handles CONTEXT_HTML_TAG.
private contextHtmlTag ( )
    private function contextHtmlTag()
    {
        $matches = $this->match('~
			(?P<end>\\s?/?>)([ \\t]*\\n)?|  ##  end of HTML tag
			(?P<macro>' . $this->delimiters[0] . ')|
			\\s*(?P<attr>[^\\s"\'>/={]+)(?:\\s*=\\s*(?P<value>["\']|[^\\s"\'=<>`{]+))? ## beginning of HTML attribute
		~xsi');
        if (!empty($matches['end'])) {
            // end of HTML tag />
            $this->addToken(Token::HTML_TAG_END, $matches[0]);
            $this->setContext(!$this->xmlMode && in_array($this->lastHtmlTag, ['script', 'style'], TRUE) ? self::CONTEXT_HTML_CDATA : self::CONTEXT_HTML_TEXT);
        } elseif (isset($matches['attr']) && $matches['attr'] !== '') {
            // HTML attribute
            $token = $this->addToken(Token::HTML_ATTRIBUTE_BEGIN, $matches[0]);
            $token->name = $matches['attr'];
            $token->value = isset($matches['value']) ? $matches['value'] : '';
            if ($token->value === '"' || $token->value === "'") {
                // attribute = "'
                if (Helpers::startsWith($token->name, self::N_PREFIX)) {
                    $token->value = '';
                    if ($m = $this->match('~(.*?)' . $matches['value'] . '~xsi')) {
                        $token->value = $m[1];
                        $token->text .= $m[0];
                    }
                } else {
                    $this->setContext(self::CONTEXT_HTML_ATTRIBUTE, $matches['value']);
                }
            }
        } else {
            return $this->processMacro($matches);
        }
    }