in prod/php/ElasticOTel/Util/WildcardMatcher.php [43:73]
public function __construct(string $expr)
{
if (!isset(self::$wildcardLen)) {
self::$wildcardLen = strlen(self::WILDCARD);
}
$this->isCaseSensitive = TextUtil::isPrefixOf(self::CASE_SENSITIVE_PREFIX, $expr);
$exprPos = $this->isCaseSensitive ? strlen(self::CASE_SENSITIVE_PREFIX) : 0;
$exprLen = strlen($expr);
$this->literalParts = [];
$this->startsWithWildcard = false;
$lastPartWasWildcard = false;
while ($exprPos < $exprLen) {
$nextWildcardPos = strpos($expr, self::WILDCARD, $exprPos);
if ($nextWildcardPos === $exprPos) {
$lastPartWasWildcard = true;
if ($this->literalParts === []) {
$this->startsWithWildcard = true;
}
$exprPos += self::$wildcardLen;
continue;
}
$lastPartWasWildcard = false;
$literalPartEndPos = ($nextWildcardPos === false) ? $exprLen : $nextWildcardPos;
$literalPartLen = $literalPartEndPos - $exprPos;
$this->literalParts[] = substr($expr, offset: $exprPos, length: $literalPartLen);
$exprPos += $literalPartLen;
}
$this->endsWithWildcard = $lastPartWasWildcard;
}