Skip to content

Commit 62d66ad

Browse files
author
Javier de Silóniz Sandino
committed
Merge branch 'master' into js-IncludeFPinScalaExercises
2 parents 3e91fc2 + 337bdb3 commit 62d66ad

File tree

8 files changed

+53
-400
lines changed

8 files changed

+53
-400
lines changed

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

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

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/main/scala/org/scalaexercises/exercises/Security.scala

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

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

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ trait Library {
1818
def color: Option[String]
1919
def sections: List[Section]
2020
def timestamp: String
21+
def buildMetaInfo: BuildInfo
22+
}
23+
24+
/** Library Build Metadata Information
25+
*/
26+
trait BuildInfo {
27+
def resolvers: List[String]
28+
def libraryDependencies: List[String]
2129
}
2230

2331
/** A section in a library.
@@ -57,13 +65,14 @@ trait Exercise {
5765

5866
// default case class implementations
5967
case class DefaultLibrary(
60-
owner: String,
61-
repository: String,
62-
name: String,
63-
description: String,
64-
color: Option[String],
65-
sections: List[Section] = Nil,
66-
timestamp: String
68+
owner: String,
69+
repository: String,
70+
name: String,
71+
description: String,
72+
color: Option[String],
73+
sections: List[Section] = Nil,
74+
timestamp: String,
75+
buildMetaInfo: BuildInfo
6776
) extends Library
6877

6978
case class DefaultContribution(

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ object LibraryA extends Library {
1010
override def name = ???
1111
override def sections = ???
1212
override def timestamp = ???
13+
override def buildMetaInfo = ???
1314
}
1415

1516
object LibraryB extends Library {
@@ -20,6 +21,7 @@ object LibraryB extends Library {
2021
override def name = ???
2122
override def sections = ???
2223
override def timestamp = ???
24+
override def buildMetaInfo = ???
2325
}
2426

2527
object LibraryC extends Library {
@@ -30,6 +32,7 @@ object LibraryC extends Library {
3032
override def name = ???
3133
override def sections = ???
3234
override def timestamp = ???
35+
override def buildMetaInfo = ???
3336
}
3437

3538
class ErrorLibrary extends Library {
@@ -40,4 +43,5 @@ class ErrorLibrary extends Library {
4043
override def name = ???
4144
override def sections = ???
4245
override def timestamp = ???
46+
override def buildMetaInfo = ???
4347
}

0 commit comments

Comments
 (0)