Sha256: bad42b5e0182a9aa2d6565f8eceec0fa0e22ee0e52d3440d56fd03d8723426d4
Contents?: true
Size: 1.72 KB
Versions: 12
Compression:
Stored size: 1.72 KB
Contents
# typed: strict # frozen_string_literal: true require "cgi" require "uri" require "ruby_lsp/document" module RubyLsp class Store extend T::Sig sig { returns(String) } attr_accessor :encoding sig { returns(String) } attr_accessor :formatter sig { void } def initialize @state = T.let({}, T::Hash[String, Document]) @encoding = T.let(Constant::PositionEncodingKind::UTF8, String) @formatter = T.let("auto", String) end sig { params(uri: String).returns(Document) } def get(uri) document = @state[uri] return document unless document.nil? set(uri: uri, source: File.binread(CGI.unescape(URI.parse(uri).path)), version: 0) T.must(@state[uri]) end sig { params(uri: String, source: String, version: Integer).void } def set(uri:, source:, version:) document = Document.new(source: source, version: version, uri: uri, encoding: @encoding) @state[uri] = document end sig { params(uri: String, edits: T::Array[Document::EditShape], version: Integer).void } def push_edits(uri:, edits:, version:) T.must(@state[uri]).push_edits(edits, version: version) 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: String, 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
12 entries across 12 versions & 1 rubygems