lib/solargraph/api_map/cache.rb
# frozen_string_literal: true module Solargraph class ApiMap class Cache def initialize # @type [Hash{Array => Array<Pin::Method>}] @methods = {} # @type [Hash{(String, Array<String>) => Array<Pin::Base>}] @constants = {} # @type [Hash{(String, String) => String}] @qualified_namespaces = {} # @type [Hash{String => Pin::Method}] @receiver_definitions = {} # @type [Hash{String => SourceMap::Clip}] @clips = {} end # @param fqns [String] # @param scope [Symbol] # @param visibility [Array<Symbol>] # @param deep [Boolean] # @return [Array<Pin::Method>] def get_methods fqns, scope, visibility, deep @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] end # @param fqns [String] # @param scope [Symbol] # @param visibility [Array<Symbol>] # @param deep [Boolean] # @param value [Array<Pin::Method>] # @return [void] def set_methods fqns, scope, visibility, deep, value @methods["#{fqns}|#{scope}|#{visibility}|#{deep}"] = value end # @param namespace [String] # @param contexts [Array<String>] # @return [Array<Pin::Base>] def get_constants namespace, contexts @constants["#{namespace}|#{contexts}"] end # @param namespace [String] # @param contexts [Array<String>] # @param value [Array<Pin::Base>] # @return [void] def set_constants namespace, contexts, value @constants["#{namespace}|#{contexts}"] = value end # @param name [String] # @param context [String] # @return [String] def get_qualified_namespace name, context @qualified_namespaces["#{name}|#{context}"] end # @param name [String] # @param context [String] # @param value [String] # @return [void] def set_qualified_namespace name, context, value @qualified_namespaces["#{name}|#{context}"] = value end # @param path [String] # @return [Pin::Method] def get_receiver_definition path @receiver_definitions[path] end # @param path [String] # @param pin [Pin::Method] # @return [void] def set_receiver_definition path, pin @receiver_definitions[path] = pin end # @return [void] def clear return if empty? all_caches.each(&:clear) end # @return [Boolean] def empty? all_caches.all?(&:empty?) end private def all_caches [@methods, @constants, @qualified_namespaces, @receiver_definitions, @clips] end end end end