Class: RubyLsp::RuboCop::RuntimeAdapter Private
Do not use. This class is for internal use only.
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/ruby_lsp/rubocop/runtime_adapter.rb |
Overview
Provides an adapter to bridge RuboCop’s built-in LSP runtime with Ruby LSP’s add-on.
Class Method Summary
- .new(message_queue) ⇒ RuntimeAdapter constructor Internal use only
Instance Method Summary
- #reload_config Internal use only
- #run_diagnostic(uri, document) Internal use only
- #run_formatting(uri, document) Internal use only
- #run_range_formatting(_uri, _partial_source, _base_indentation) Internal use only
- #prism_result(document) private Internal use only
-
#uri_to_path(uri)
private
Internal use only
duplicated from: lib/standard/lsp/routes.rb modified to incorporate Ruby LSP’s to_standardized_path method.
- #with_error_handling private Internal use only
Instance Method Details
#prism_result(document) (private)
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 90
def prism_result(document) prism_result = document.parse_result # NOTE: `prism_result` must be `Prism::ParseLexResult` compatible object. # This is for compatibility parsed result unsupported. prism_result.is_a?(Prism::ParseLexResult) ? prism_result : nil end
#reload_config
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 15
def reload_config @runtime = nil , _paths = ::RuboCop::Options.new.parse([]) config_store = ::RuboCop::ConfigStore.new config_store. ( ) @runtime = ::RuboCop::LSP::Runtime.new(config_store) rescue ::RuboCop::Error => e @message_queue << Notification. ( "RuboCop configuration error: #{e.}. Formatting will not be available.", type: Constant::MessageType::ERROR ) end
#run_diagnostic(uri, document)
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 29
def run_diagnostic(uri, document) with_error_handling do @runtime.offenses( uri_to_path(uri), document.source, document.encoding, prism_result: prism_result(document) ) end end
#run_formatting(uri, document)
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 40
def run_formatting(uri, document) with_error_handling do @runtime.format( uri_to_path(uri), document.source, command: 'rubocop.formatAutocorrects', prism_result: prism_result(document) ) end end
#run_range_formatting(_uri, _partial_source, _base_indentation)
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 51
def run_range_formatting(_uri, _partial_source, _base_indentation) # Not yet supported. Should return the formatted version of `partial_source` which is # a partial selection of the entire document. For example, it should not try to add # a frozen_string_literal magic comment and all style corrections should start from # the `base_indentation`. nil end
#uri_to_path(uri) (private)
duplicated from: lib/standard/lsp/routes.rb modified to incorporate Ruby LSP’s to_standardized_path method
# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 82
def uri_to_path(uri) if uri.respond_to?(:to_standardized_path) && (standardized_path = uri.to_standardized_path) standardized_path else uri.to_s.delete_prefix('file://') end end
#with_error_handling (private)
[ GitHub ]# File 'lib/ruby_lsp/rubocop/runtime_adapter.rb', line 61
def with_error_handling return unless @runtime yield rescue StandardError => e ::RuboCop::LSP::Logger.log(e., prefix: '[RuboCop]') = if e.is_a?(::RuboCop::ErrorWithAnalyzedFileLocation) "for the #{e.cop.name} cop" else "- #{e.}" end raise Requests::Formatting::Error, <<~MSG An internal error occurred #{}. Updating to a newer version of RuboCop may solve this. For more details, run RuboCop on the command line. MSG end