Sha256: b5348d70a73cd0f29ec650d13ec32890dbba0db7a0a3740a124babf635bd6fc3

Contents?: true

Size: 907 Bytes

Versions: 4

Compression:

Stored size: 907 Bytes

Contents

module Yoda
  module Store
    module Query
      class FindWorkspaceObjects < Base
        # @param query [String]
        # @return [Enumerator<Objects::Base>]
        def select(query)
          lazy_select(query)
        end

        private

        # @param query [String]
        # @return [Enumerator::Lazy<Objects::Base>]
        def lazy_select(query)
          registry.local_store.registry.items.lazy.select do |item|
            item.primary_source && fuzzy_match?(item.name, query)
          end
        end

        # @param name [String]
        # @param query [String, Regexp]
        # @return [true, false]
        def fuzzy_match?(name, query)
          left_chars = query.chars
          name.each_char do |c|
            break if left_chars.empty?
            left_chars.shift if c == left_chars.first
          end

          left_chars.empty?
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/store/query/find_workspace_objects.rb
yoda-language-server-0.10.0 lib/yoda/store/query/find_workspace_objects.rb
yoda-language-server-0.9.0 lib/yoda/store/query/find_workspace_objects.rb
yoda-language-server-0.8.0 lib/yoda/store/query/find_workspace_objects.rb