src/Pure/Thy/html.scala
changeset 67336 3ee6da378183
parent 67255 f1f983484878
child 67337 4254cfd15b00
--- a/src/Pure/Thy/html.scala	Wed Jan 03 11:06:41 2018 +0100
+++ b/src/Pure/Thy/html.scala	Wed Jan 03 20:55:13 2018 +0100
@@ -153,6 +153,7 @@
   /* structured markup operators */
 
   def text(txt: String): XML.Body = if (txt.isEmpty) Nil else List(XML.Text(txt))
+  val no_text: XML.Tree = XML.Text("")
   val break: XML.Body = List(XML.elem("br"))
 
   class Operator(val name: String)
@@ -176,6 +177,12 @@
   val emph = new Operator("em")
   val bold = new Operator("b")
   val code = new Operator("code")
+  val item = new Operator("li")
+  val list = new Operator("ul")
+  val enum = new Operator("ol")
+  val descr = new Operator("dl")
+  val dt = new Operator("dt")
+  val dd = new Operator("dd")
 
   val title = new Heading("title")
   val chapter = new Heading("h1")
@@ -185,14 +192,10 @@
   val paragraph = new Heading("h5")
   val subparagraph = new Heading("h6")
 
-  def itemize(items: List[XML.Body]): XML.Elem =
-    XML.elem("ul", items.map(XML.elem("li", _)))
-
-  def enumerate(items: List[XML.Body]): XML.Elem =
-    XML.elem("ol", items.map(XML.elem("li", _)))
-
+  def itemize(items: List[XML.Body]): XML.Elem = list(items.map(item(_)))
+  def enumerate(items: List[XML.Body]): XML.Elem = enum(items.map(item(_)))
   def description(items: List[(XML.Body, XML.Body)]): XML.Elem =
-    XML.elem("dl", items.flatMap({ case (x, y) => List(XML.elem("dt", x), XML.elem("dd", y)) }))
+    descr(items.flatMap({ case (x, y) => List(dt(x), dd(y)) }))
 
   def link(href: String, body: XML.Body = Nil): XML.Elem =
     XML.Elem(Markup("a", List("href" -> href)), if (body.isEmpty) text(href) else body)