All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mdoc.internal.io.ConsoleReporter.scala Maven / Gradle / Ivy

The newest version!
package mdoc.internal.io

import fansi.Color._
import java.io.PrintStream
import scala.meta.Position
import scalafix.internal.util.PositionSyntax._
import mdoc.Reporter
import mdoc.internal.pos.PositionSyntax._

class ConsoleReporter(ps: PrintStream) extends Reporter {

  private val myInfo = Blue("info")
  private val myWarning = Yellow("warning")
  private val myError = Red("error")

  private var myWarnings = 0
  private var myErrors = 0
  def hasWarnings: Boolean = myWarnings > 0
  def hasErrors: Boolean = myErrors > 0
  def reset(): Unit = {
    myWarnings = 0
    myErrors = 0
  }

  def error(throwable: Throwable): Unit = {
    error(Position.None, throwable)
  }

  def error(pos: Position, throwable: Throwable): Unit = {
    error(pos, throwable.getMessage)
    throwable.printStackTrace(ps)
  }
  def error(pos: Position, msg: String): Unit = {
    error(pos.toUnslicedPosition.formatMessage("error", msg))
  }
  def error(msg: String): Unit = {
    myErrors += 1
    ps.println(myError ++ s": $msg")
  }
  def info(pos: Position, msg: String): Unit = {
    info(pos.toUnslicedPosition.formatMessage("info", msg))
  }
  def info(msg: String): Unit = {
    ps.println(myInfo ++ s": $msg")
  }
  def warning(pos: Position, msg: String): Unit = {
    warning(pos.toUnslicedPosition.formatMessage("warning", msg))
  }
  def warning(msg: String): Unit = {
    myWarnings += 1
    ps.println(myWarning ++ s": $msg")
  }

  override def print(msg: String): Unit = {
    ps.print(msg)
  }
  override def println(msg: String): Unit = {
    ps.println(msg)
  }
}

object ConsoleReporter {
  def default: Reporter = new ConsoleReporter(System.out)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy