src/Pure/General/output.scala
author wenzelm
Sat, 09 Apr 2016 20:38:08 +0200
changeset 62938 79f41fbdf74a
parent 62930 51ac6bc389e8
child 64370 865b39487b5d
permissions -rw-r--r--
clean message more thoroughly;

/*  Title:      Pure/General/output.scala
    Module:     PIDE
    Author:     Makarius

Isabelle output channels.
*/

package isabelle


object Output
{
  def clean_yxml(msg: String): String =
    try { XML.content(Protocol_Message.clean_reports(YXML.parse_body(msg))) }
    catch { case ERROR(_) => msg }

  def writeln_text(msg: String): String = clean_yxml(msg)
  def warning_text(msg: String): String = cat_lines(split_lines(clean_yxml(msg)).map("### " + _))
  def error_text(msg: String): String = cat_lines(split_lines(clean_yxml(msg)).map("*** " + _))

  def writeln(msg: String, stdout: Boolean = false)
  {
    if (msg != "") {
      if (stdout) Console.println(writeln_text(msg))
      else Console.err.println(writeln_text(msg))
    }
  }

  def warning(msg: String, stdout: Boolean = false)
  {
    if (msg != "") {
      if (stdout) Console.println(warning_text(msg))
      else Console.err.println(warning_text(msg))
    }
  }

  def error_message(msg: String, stdout: Boolean = false)
  {
    if (msg != "") {
      if (stdout) Console.println(error_text(msg))
      else Console.err.println(error_text(msg))
    }
  }
}