Skip to content
Kward Search API index

Module: Kward::TextMatcher

Defined in:
lib/kward/text_matcher.rb

Overview

Allocation-conscious text matching helpers shared by interactive search UI.

Class Method Summary collapse

Class Method Details

.subsequence?(value, query, pattern = subsequence_pattern(query)) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
# File 'lib/kward/text_matcher.rb', line 12

def subsequence?(value, query, pattern = subsequence_pattern(query))
  text = value.to_s
  needle = query.to_s
  needle.empty? || text.match?(pattern)
end

.subsequence_pattern(query) ⇒ Object



7
8
9
10
# File 'lib/kward/text_matcher.rb', line 7

def subsequence_pattern(query)
  source = query.to_s.each_char.map { |character| Regexp.escape(character) }.join(".*")
  Regexp.new(source, Regexp::MULTILINE)
end