Sha256: 3cdfa07dccaedc7b3ec6c6ee15fa50ba8db5c1c8b26ae6d0d292c33a4ebc6ef3
Contents?: true
Size: 1.47 KB
Versions: 4
Compression:
Stored size: 1.47 KB
Contents
# typed: strict # frozen_string_literal: true require "cgi" require "uri" require "ruby_lsp/document" module RubyLsp class Store extend T::Sig sig { params(encoding: String).void } attr_writer :encoding sig { void } def initialize @state = T.let({}, T::Hash[String, Document]) @encoding = T.let("utf-8", String) end sig { params(uri: String).returns(Document) } def get(uri) document = @state[uri] return document unless document.nil? set(uri, File.binread(CGI.unescape(URI.parse(uri).path))) T.must(@state[uri]) end sig { params(uri: String, content: String).void } def set(uri, content) document = Document.new(content, @encoding) @state[uri] = document end sig { params(uri: String, edits: T::Array[Document::EditShape]).void } def push_edits(uri, edits) T.must(@state[uri]).push_edits(edits) end sig { void } def clear @state.clear end sig { returns(T::Boolean) } def empty? @state.empty? end sig { params(uri: String).void } def delete(uri) @state.delete(uri) end sig do type_parameters(:T) .params( uri: String, request_name: Symbol, block: T.proc.params(document: Document).returns(T.type_parameter(:T)), ).returns(T.type_parameter(:T)) end def cache_fetch(uri, request_name, &block) get(uri).cache_fetch(request_name, &block) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ruby-lsp-0.4.1 | lib/ruby_lsp/store.rb |
ruby-lsp-0.4.0 | lib/ruby_lsp/store.rb |
ruby-lsp-0.3.8 | lib/ruby_lsp/store.rb |
ruby-lsp-0.3.7 | lib/ruby_lsp/store.rb |