class Model::Diagnostic
Constants
- DOCS_URLS
Attributes
badge[R]
end[R]
message[R]
replacements[R]
start[R]
Public Class Methods
new(offense)
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 27 def initialize(offense) @badge = RuboCop::Cop::Badge.parse(offense.cop_name) @message = offense.message @start = Interface::Position.new(line: offense.line - 1, character: offense.column) @end = Interface::Position.new(line: offense.last_line - 1, character: offense.last_column) @replacements = replacements_from_offense(offense) end
Public Instance Methods
cop_name()
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 39 def cop_name @cop_name ||= badge.to_s end
correctable?()
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 35 def correctable? !!@replacements end
diagnostic_response()
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 43 def diagnostic_response @diagnostic_response ||= Interface::Diagnostic.new( message: message, "source": "RuboCop", code: cop_name, code_description: Interface::CodeDescription.new( href: doc_url ), severity: Constant::DiagnosticSeverity::INFORMATION, range: Interface::Range.new( start: start, end: self.end ) ) end
Private Instance Methods
doc_url()
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 61 def doc_url @doc_url ||= begin anchor = cop_name.downcase.gsub(%r{/}, "") format(DOCS_URLS[badge.department], anchor: anchor) end end
edit_from_replacement(range, replacement)
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 77 def edit_from_replacement(range, replacement) Interface::TextEdit.new( range: Interface::Range.new( start: Interface::Position.new(line: range.line - 1, character: range.column), end: Interface::Position.new(line: range.last_line - 1, character: range.last_column) ), new_text: replacement ) end
replacements_from_offense(offense)
click to toggle source
# File lib/rubocop/lsp/model/diagnostic.rb, line 69 def replacements_from_offense(offense) return unless offense.correctable? offense.corrector.as_replacements.map do |range, replacement| edit_from_replacement(range, replacement) end end