diff --git a/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala b/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala index 6df3bef5..10b2374d 100644 --- a/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala +++ b/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorClient.scala @@ -5,9 +5,9 @@ package org.scalaexercises.evaluator -import cats.data.XorT +import cats.data.EitherT import cats.~> -import cats._, cats.std.all._ +import cats.implicits._ import org.scalaexercises.evaluator.EvaluatorResponses.{EvalIO, EvaluationException, EvaluationResponse, EvaluationResult} import org.scalaexercises.evaluator.free.algebra.EvaluatorOp @@ -25,15 +25,17 @@ object EvaluatorClient { def apply(url: String, authKey: String) = new EvaluatorClient(url, authKey) - implicit class EvaluationIOSyntaxXOR[A]( + implicit class EvaluationIOSyntaxEither[A]( evalIO: EvalIO[EvaluationResponse[A]]) { def exec( implicit I: (EvaluatorOp ~> Future)): Future[EvaluationResponse[A]] = evalIO foldMap I - def liftEvaluator: XorT[EvalIO, EvaluationException, EvaluationResult[A]] = - XorT[EvalIO, EvaluationException, EvaluationResult[A]](evalIO) + def liftEvaluator: EitherT[EvalIO, + EvaluationException, + EvaluationResult[A]] = + EitherT[EvalIO, EvaluationException, EvaluationResult[A]](evalIO) } } diff --git a/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorResponses.scala b/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorResponses.scala index 8a4ebfd3..666e0cfe 100644 --- a/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorResponses.scala +++ b/client/shared/src/main/scala/org/scalaexercises/evaluator/EvaluatorResponses.scala @@ -7,7 +7,7 @@ package org.scalaexercises.evaluator import cats.data.Xor import cats.free.Free -import cats.syntax.xor._ +import cats.implicits._ import io.circe.Decoder import io.circe.parser._ import io.circe.generic.auto._ @@ -23,7 +23,7 @@ object EvaluatorResponses { type EvalIO[A] = Free[EvaluatorOp, A] - type EvaluationResponse[A] = EvaluationException Xor EvaluationResult[A] + type EvaluationResponse[A] = Either[EvaluationException, EvaluationResult[A]] case class EvaluationResult[A](result: A, statusCode: Int, @@ -44,18 +44,17 @@ object EvaluatorResponses { implicit D: Decoder[A]): Future[EvaluationResponse[A]] = futureResponse map { case r if isSuccess(r.statusCode) ⇒ - decode[A](r.body).fold( - e ⇒ - JsonParsingException(e.getMessage, r.body) - .left[EvaluationResult[A]], - result ⇒ - Xor.Right( + decode[A](r.body) match { + case Xor.Left(e) => + Either.left(JsonParsingException(e.getMessage, r.body)) + case Xor.Right(result) => + Either.right( EvaluationResult(result, r.statusCode, r.headers.toLowerCase)) - ) + } case r ⇒ - UnexpectedException( - s"Failed invoking get with status : ${r.statusCode}, body : \n ${r.body}") - .left[EvaluationResult[A]] + Either.left( + UnexpectedException( + s"Failed i(nvoking get with status : ${r.statusCode}, body : \n ${r.body}")) } private[this] def isSuccess(statusCode: Int) = diff --git a/project/EvaluatorBuild.scala b/project/EvaluatorBuild.scala index bcd65353..32f196ef 100644 --- a/project/EvaluatorBuild.scala +++ b/project/EvaluatorBuild.scala @@ -15,14 +15,14 @@ object EvaluatorBuild extends AutoPlugin { object autoImport { val v = Map( - 'cats -> "0.6.1", - 'circe -> "0.5.0-M2", + 'cats -> "0.7.2", + 'circe -> "0.5.2", 'config -> "1.3.0", 'coursier -> "1.0.0-M12", - 'http4s -> "0.14.1", + 'http4s -> "0.14.8", 'jwtcore -> "0.8.0", 'log4s -> "1.3.0", - 'monix -> "2.0-RC8", + 'monix -> "2.0.3", 'roshttp -> "1.1.0", 'scalacheck -> "1.12.5", 'scalaTest -> "2.2.6", @@ -50,7 +50,7 @@ object EvaluatorBuild extends AutoPlugin { private[this] def baseSettings = Seq( - version := "0.1.0-SNAPSHOT", + version := "0.1.1-SNAPSHOT", organization := "org.scala-exercises", scalaVersion := "2.11.8", scalafmtConfig in ThisBuild := Some(file(".scalafmt")), diff --git a/server/src/main/scala/org/scalaexercises/evaluator/evaluation.scala b/server/src/main/scala/org/scalaexercises/evaluator/evaluation.scala index 63bbe528..9c73411e 100644 --- a/server/src/main/scala/org/scalaexercises/evaluator/evaluation.scala +++ b/server/src/main/scala/org/scalaexercises/evaluator/evaluation.scala @@ -183,7 +183,7 @@ private class StringCompiler( } messages += (severityName + lineMessage + ": " + message) :: (if (pos.isDefined) { - pos.inUltimateSource(pos.source).lineContent.stripLineEnd :: + pos.finalPosition.lineContent.stripLineEnd :: (" " * (pos.column - 1) + "^") :: Nil } else {