class LanguageServer::Linter::RubyWC
Public Class Methods
new(source)
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 25 def initialize(source) @source = source end
Public Instance Methods
call()
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 29 def call error_message.scan(/.+:(\d+):\s*(.+?)[,:]\s(.+)/).map do |line_num, type, message| Error.new(line_num: line_num.to_i - 1, characters: get_characters_from_error_message(error_message, line_num.to_i - 1), message: message, type: type) end end
Private Instance Methods
capture_stderr() { || ... }
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 69 def capture_stderr origin = $stderr $stderr = StringIO.new yield $stderr.string ensure $stderr = origin end
error_message()
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 39 def error_message with_verbose do begin capture_stderr { RubyVM::InstructionSequence.compile(@source) } rescue SyntaxError => e e.message end end end
get_characters_from_error_message(error_message, line_index)
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 80 def get_characters_from_error_message(error_message, line_index) error_mark_included_line = error_message.split("\n")[2] if !error_mark_included_line.nil? && character_start = error_mark_included_line.index("^") Range.new(character_start, character_start + 1) else Range.new(0, @source.split("\n")[line_index].length - 1) end end
with_verbose() { || ... }
click to toggle source
# File lib/language_server/linter/ruby_wc.rb, line 61 def with_verbose origin = $VERBOSE $VERBOSE = true yield ensure $VERBOSE = origin end