src/Pure/General/pretty.scala
changeset 36683 41a1210519fd
child 36687 58020b59baf7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/General/pretty.scala	Thu May 06 16:27:47 2010 +0200
@@ -0,0 +1,50 @@
+/*  Title:      Pure/General/pretty.scala
+    Author:     Makarius
+
+Symbolic pretty printing.
+*/
+
+package isabelle
+
+
+object Pretty
+{
+  object Block
+  {
+    def apply(indent: Int, body: List[XML.Tree]): XML.Tree =
+      XML.Elem(Markup.BLOCK, List((Markup.INDENT, indent.toString)), body)
+
+    def unapply(tree: XML.Tree): Option[(Int, List[XML.Tree])] =
+      tree match {
+        case XML.Elem(Markup.BLOCK, List((Markup.INDENT, indent)), body) =>
+          Markup.parse_int(indent) match {
+            case Some(i) => Some((i, body))
+            case None => None
+          }
+        case _ => None
+      }
+  }
+
+  object Break
+  {
+    def apply(width: Int): XML.Tree =
+      XML.Elem(Markup.BREAK, List((Markup.WIDTH, width.toString)), List(XML.Text(" " * width)))
+
+    def unapply(tree: XML.Tree): Option[Int] =
+      tree match {
+        case XML.Elem(Markup.BREAK, List((Markup.WIDTH, width)), _) => Markup.parse_int(width)
+        case _ => None
+      }
+  }
+
+  object FBreak
+  {
+    def apply(): XML.Tree = XML.Elem(Markup.FBREAK, Nil, List(XML.Text(" ")))
+
+    def unapply(tree: XML.Tree): Boolean =
+      tree match {
+        case XML.Elem(Markup.FBREAK, Nil, _) => true
+        case _ => false
+      }
+  }
+}