class ThinkingSphinx::Wildcard
Constants
- DEFAULT_TOKEN
Attributes
pattern[R]
query[R]
Public Class Methods
call(query, pattern = DEFAULT_TOKEN)
click to toggle source
# File lib/thinking_sphinx/wildcard.rb, line 4 def self.call(query, pattern = DEFAULT_TOKEN) new(query, pattern).call end
new(query, pattern = DEFAULT_TOKEN)
click to toggle source
# File lib/thinking_sphinx/wildcard.rb, line 8 def initialize(query, pattern = DEFAULT_TOKEN) @query = query || '' @pattern = pattern.is_a?(Regexp) ? pattern : DEFAULT_TOKEN end
Public Instance Methods
call()
click to toggle source
# File lib/thinking_sphinx/wildcard.rb, line 13 def call query.gsub(extended_pattern) do pre, proper, post = $`, $&, $' # E.g. "@foo", "/2", "~3", but not as part of a token pattern is_operator = pre == '@' || pre.match(%r{([^\]+|\A)[~/]\Z}) || pre.match(%r{(\W|^)@\([^\)]*$}) # E.g. "foo bar", with quotes is_quote = proper[/^".*"$/] has_star = post[/\*$/] || pre[/^\*/] if is_operator || is_quote || has_star proper else "*#{proper}*" end end end
Private Instance Methods
extended_pattern()
click to toggle source
# File lib/thinking_sphinx/wildcard.rb, line 35 def extended_pattern Regexp.new( "(\"#{pattern}(.*?#{pattern})?\"|(?![!-])#{pattern})".encode('UTF-8') ) end