module Solargraph::Diagnostics::RubocopHelpers

def find_rubocop_file filename

Returns:
  • (String, nil) -

Parameters:
  • filename (String) --
def find_rubocop_file filename
  dir = File.dirname(filename)
  until File.dirname(dir) == dir
    here = File.join(dir, '.rubocop.yml')
    return here if File.exist?(here)
    dir = File.dirname(dir)
  end
  nil
end

def fix_drive_letter path

Returns:
  • (String) -

Parameters:
  • path (String) --
def fix_drive_letter path
  return path unless path.match(/^[a-z]:/)
  path[0].upcase + path[1..-1]
end

def generate_options filename, code

Returns:
  • (Array(Array, Array)) -

Parameters:
  • code (String) --
  • filename (String) --
def generate_options filename, code
  args = ['-f', 'j']
  rubocop_file = find_rubocop_file(filename)
  args.push('-c', fix_drive_letter(rubocop_file)) unless rubocop_file.nil?
  args.push filename
  options, paths = RuboCop::Options.new.parse(args)
  options[:stdin] = code
  [options, paths]
end

def redirect_stdout

Returns:
  • (String) -

Other tags:
    Todo: - This is a smelly way to redirect output, but the RuboCop specs do
def redirect_stdout
  redir = StringIO.new
  $stdout = redir
  yield if block_given?
  $stdout = STDOUT
  redir.string
end