class Solargraph::Pin::Search
Public Class Methods
Source
# File lib/solargraph/pin/search.rb, line 25 def initialize pins, query @pins = pins @query = query end
@param pins [::Array<Pin::Base>] @param query [String]
Public Instance Methods
Source
# File lib/solargraph/pin/search.rb, line 31 def results @results ||= do_query end
@return [::Array<Pin::Base>]
Private Instance Methods
Source
# File lib/solargraph/pin/search.rb, line 38 def do_query return @pins if @query.nil? || @query.empty? @pins.map do |pin| match = [fuzzy_string_match(pin.path, @query), fuzzy_string_match(pin.name, @query)].max Result.new(match, pin) if match > 0.7 end .compact # @param a [self] # @param b [self] # @sg-ignore https://github.com/castwide/solargraph/pull/1050 .sort { |a, b| b.match <=> a.match } .map(&:pin) end
@return [::Array<Pin::Base>]
Source
# File lib/solargraph/pin/search.rb, line 55 def fuzzy_string_match str1, str2 return 1.0 + (str2.length.to_f / str1.length.to_f) if str1.downcase.include?(str2.downcase) JaroWinkler.similarity(str1, str2, ignore_case: true) end
@param str1 [String] @param str2 [String] @return [Float]