mumuki/mumuki-wollok-runner

View on GitHub
lib/wollok_hook.rb

Summary

Maintainability
A
0 mins
Test Coverage
class WollokHook < Mumukit::Hook

  def run!(request)
    transform_response JSON.pretty_parse(RestClient.post(server_path, request.to_json))
  end

  def compile(request)
    {program: compile_program(request),
     programType: program_type}
  end

  def server_path
    'http://server.wollok.org:8080/run'
  end

  def errored?(response)
    response['compilation'] && response['compilation']['issues'].any? do |issue|
      compilation_error? issue
    end
  end

  def extract_compilation_errors(response)
    response['compilation']['issues']
        .select { |it| compilation_error? it  }
        .map { |it| transform_compilation_error(it) }
        .join("\n")
  end

  def compilation_error?(issue)
    %w(org.eclipse.xtext.diagnostics.Diagnostic.Syntax
       org.eclipse.xtext.diagnostics.Diagnostic.Linking).include? issue['code']
  end

  def transform_compilation_error(issue)
    "#{issue['severity']}: #{issue['message']}"
  end
end