@@ -27,7 +27,7 @@ import java.io.File
27
27
import cats .implicits ._
28
28
import org .clapper .classutil .ClassFinder
29
29
import org .objectweb .asm .Opcodes
30
- import org .scalaexercises .evaluator .types .Dependency
30
+ import org .scalaexercises .evaluator .types .EvaluatorDependency
31
31
import org .scalaexercises .runtime .model ._
32
32
33
33
import scala .util .Try
@@ -36,10 +36,10 @@ object Exercises {
36
36
val LIBRARIES_PACKAGE = " org.scalaexercises.content"
37
37
38
38
private [this ] def classMap (cl : ClassLoader ) = {
39
- val files = cl
39
+ val files = ( cl
40
40
.asInstanceOf [URLClassLoader ]
41
41
.getURLs
42
- .map(url => new File (url.getFile)) filter (_.exists)
42
+ .map(url => new File (url.getFile)) filter (_.exists)).toSeq
43
43
val classFinder = ClassFinder (files, Some (Opcodes .ASM7 ))
44
44
val classes = classFinder.getClasses
45
45
.filter(Try (_).isSuccess)
@@ -50,15 +50,15 @@ object Exercises {
50
50
private [this ] def subclassesOf [A : ClassTag ](cl : ClassLoader ): List [String ] = {
51
51
def loop (currentClassLoader : ClassLoader , acc : List [String ]): List [String ] =
52
52
Option (currentClassLoader) match {
53
- case None ⇒ acc
54
- case Some (cll : URLClassLoader ) ⇒
53
+ case None => acc
54
+ case Some (cll : URLClassLoader ) =>
55
55
val cn = ClassFinder
56
56
.concreteSubclasses(implicitly[ClassTag [A ]].runtimeClass.getName, classMap(cll))
57
57
.filter(_.name.startsWith(LIBRARIES_PACKAGE ))
58
58
.map(_.name)
59
59
.toList
60
60
loop(currentClassLoader.getParent, acc ++ cn)
61
- case Some (o) ⇒ loop(o.getParent, acc)
61
+ case Some (o) => loop(o.getParent, acc)
62
62
}
63
63
loop(cl, Nil )
64
64
}
@@ -67,21 +67,21 @@ object Exercises {
67
67
cl : ClassLoader = classOf [Exercise ].getClassLoader): (List [String ], List [Library ]) = {
68
68
val classNames : List [String ] = subclassesOf[Library ](cl)
69
69
70
- val errorsAndLibraries = classNames.map { name ⇒
70
+ val errorsAndLibraries = classNames.map { name =>
71
71
for {
72
- loadedClass ← guard(Class .forName(name, true , cl), s " $name not found " )
73
- loadedObject ← guard(
72
+ loadedClass <- guard(Class .forName(name, true , cl), s " $name not found " )
73
+ loadedObject <- guard(
74
74
loadedClass.getField(" MODULE$" ).get(null ),
75
75
s " $name must be defined as an object " )
76
- loadedLibrary ← guard(loadedObject.asInstanceOf [Library ], s " $name must extend Library " )
76
+ loadedLibrary <- guard(loadedObject.asInstanceOf [Library ], s " $name must extend Library " )
77
77
} yield loadedLibrary
78
78
}
79
79
80
80
errorsAndLibraries.separate
81
81
}
82
82
83
- private def guard [A ](f : ⇒ A , message : ⇒ String ) =
84
- Either .catchNonFatal(f).leftMap(_ ⇒ message)
83
+ private def guard [A ](f : => A , message : => String ) =
84
+ Either .catchNonFatal(f).leftMap(_ => message)
85
85
86
86
def buildEvaluatorRequest (
87
87
pkg : String ,
@@ -90,18 +90,18 @@ object Exercises {
90
90
imports : List [String ] = Nil ,
91
91
resolvers : List [String ],
92
92
libraryDependencies : List [String ]
93
- ): (List [String ], List [Dependency ], String ) = {
93
+ ): (List [String ], List [EvaluatorDependency ], String ) = {
94
94
95
95
val extractEvaluatorResolvers : List [String ] = {
96
- resolvers.filter(r => ! r.isEmpty && r.contains(" http" )) map { resolver ⇒
96
+ resolvers.filter(r => ! r.isEmpty && r.contains(" http" )) map { resolver =>
97
97
resolver.substring(resolver.indexOf(" http" ))
98
98
}
99
99
}
100
100
101
- val extractEvaluatorDependencies : List [Dependency ] = {
102
- libraryDependencies map { dep ⇒
101
+ val extractEvaluatorDependencies : List [EvaluatorDependency ] = {
102
+ libraryDependencies map { dep =>
103
103
val depArray = dep.split(" :" )
104
- Dependency (groupId = depArray(0 ), artifactId = depArray(1 ), version = depArray(2 ))
104
+ EvaluatorDependency (groupId = depArray(0 ), artifactId = depArray(1 ), version = depArray(2 ))
105
105
}
106
106
}
107
107
0 commit comments