in lib/aws-xray-sdk/search_pattern.rb [10:57]
def self.wildcard_match?(pattern:, text:, case_insensitive: true)
return false unless pattern && text
pattern_len = pattern.length
text_len = text.length
return text_len.zero? if pattern_len.zero?
return true if pattern == '*'
if case_insensitive
pattern = pattern.downcase
text = text.downcase
end
if !pattern.include?('*') || pattern.index('*') == pattern_len - 1
return simple_wildcard_match? pattern: pattern, text: text
end
res = Array.new(text_len + 1)
res[0] = true
(0...pattern_len).each do |j|
p = pattern[j]
if p != '*'
(text_len - 1).downto(0) do |i|
res[i + 1] = res[i] && (p == '?' || (p == text[i]))
end
else
i = 0
i += 1 while i <= text_len && !res[i]
(i..text_len + 1).each do |m|
res[m] = true
end
end
res[0] = res[0] && (p == '*')
end
res[text_len]
end