Skip to content

Commit 337bdb3

Browse files
Remote Evaluator integration, WIP
1 parent 343f363 commit 337bdb3

File tree

3 files changed

+33
-227
lines changed

3 files changed

+33
-227
lines changed

src/main/scala/org/scalaexercises/exercises/Exercises.scala

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,14 @@ package org.scalaexercises.runtime
77

88
import org.scalaexercises.runtime.model._
99

10-
import scala.annotation.tailrec
1110
import scala.collection.immutable.List
12-
import scala.collection.JavaConversions._
1311
import scala.reflect.ClassTag
14-
1512
import java.net.URLClassLoader
1613
import java.io.File
17-
import java.lang.ClassNotFoundException
1814

1915
import cats.data.Xor
20-
2116
import org.clapper.classutil.ClassFinder
17+
import org.scalaexercises.evaluator.Dependency
2218

2319
object Exercises {
2420
val LIBRARIES_PACKAGE = "org.scalaexercises.content"
@@ -49,9 +45,9 @@ object Exercises {
4945

5046
val (errors, libraries) = classNames.foldLeft((Nil: List[String], Nil: List[Library])) { (acc, name)
5147
val loadedLibrary = for {
52-
loadedClass guard(Class.forName(name, true, cl), s"${name} not found")
53-
loadedObject guard(loadedClass.getField("MODULE$").get(null), s"${name} must be defined as an object")
54-
loadedLibrary guard(loadedObject.asInstanceOf[Library], s"${name} must extend Library")
48+
loadedClass guard(Class.forName(name, true, cl), s"$name not found")
49+
loadedObject guard(loadedClass.getField("MODULE$").get(null), s"$name must be defined as an object")
50+
loadedLibrary guard(loadedObject.asInstanceOf[Library], s"$name must extend Library")
5551
} yield loadedLibrary
5652

5753
// until a bifoldable exists in Cats...
@@ -67,4 +63,33 @@ object Exercises {
6763
private def guard[A](f: A, message: String) =
6864
Xor.catchNonFatal(f).leftMap(_ message)
6965

66+
def buildEvaluatorRequest(
67+
pkg: String,
68+
qualifiedMethod: String,
69+
rawArgs: List[String],
70+
imports: List[String] = Nil,
71+
resolvers: List[String],
72+
libraryDependencies: List[String]
73+
): (List[String], List[Dependency], String) = {
74+
75+
val extractEvaluatorResolvers: List[String] = {
76+
resolvers.filter(!_.isEmpty) map { resolver
77+
resolver.substring(resolver.indexOf("http"))
78+
}
79+
}
80+
81+
val extractEvaluatorDependencies: List[Dependency] = {
82+
libraryDependencies map { dep
83+
val depArray = dep.split(":")
84+
Dependency(groupId = depArray(0), artifactId = depArray(1), version = depArray(2))
85+
}
86+
}
87+
88+
val pre = (s"import $pkg._" :: imports).mkString("; ")
89+
val code = s"""$qualifiedMethod(${rawArgs.mkString(", ")})"""
90+
91+
val allCode = s"{$pre; $code}"
92+
93+
(extractEvaluatorResolvers, extractEvaluatorDependencies, allCode)
94+
}
7095
}

src/main/scala/org/scalaexercises/exercises/MethodEval.scala

Lines changed: 0 additions & 101 deletions
This file was deleted.

src/test/scala/com/fortysevendeg/exercises/MethodEvalSpec.scala

Lines changed: 0 additions & 118 deletions
This file was deleted.

0 commit comments

Comments
 (0)