class Steep::Server::InteractionWorker

def handle_request(request)

def handle_request(request)
  case request[:method]
  when "initialize"
    # nop
  when "textDocument/didChange"
    update_source(request)
  when "textDocument/hover"
    id = request[:id]
    uri = URI.parse(request[:params][:textDocument][:uri])
    path = project.relative_path(Pathname(uri.path))
    line = request[:params][:position][:line]
    column = request[:params][:position][:character]
    queue << {
      id: id,
      result: response_to_hover(path: path, line: line, column: column)
    }
  when "textDocument/completion"
    id = request[:id]
    params = request[:params]
    uri = URI.parse(params[:textDocument][:uri])
    path = project.relative_path(Pathname(uri.path))
    line, column = params[:position].yield_self {|hash| [hash[:line]+1, hash[:character]] }
    trigger = params[:context][:triggerCharacter]
    queue << {
      id: id,
      result: response_to_completion(path: path, line: line, column: column, trigger: trigger)
    }
  end
end