# HG changeset patch # User wenzelm # Date 1357244594 -3600 # Node ID 07202e00fe4d51caf38ee91b9102e2ce67682a7a # Parent 573d84e08f3f9756ea68562dd16fcfb866d0692c# Parent 5b2bf7611662ef34e894c2a7f69913821c56d7b9 merged diff -r 573d84e08f3f -r 07202e00fe4d src/Pure/System/session.ML --- a/src/Pure/System/session.ML Thu Jan 03 17:40:36 2013 +0100 +++ b/src/Pure/System/session.ML Thu Jan 03 21:23:14 2013 +0100 @@ -8,6 +8,7 @@ sig val id: unit -> string list val name: unit -> string + val path: unit -> string list val welcome: unit -> string val finish: unit -> unit val init: bool -> bool -> bool -> string -> string -> bool -> string -> (string * string) list -> diff -r 573d84e08f3f -r 07202e00fe4d src/Pure/Thy/html.scala --- a/src/Pure/Thy/html.scala Thu Jan 03 17:40:36 2013 +0100 +++ b/src/Pure/Thy/html.scala Thu Jan 03 21:23:14 2013 +0100 @@ -1,7 +1,7 @@ /* Title: Pure/Thy/html.scala Author: Makarius -Basic HTML output. +HTML presentation elements. */ package isabelle @@ -29,75 +29,19 @@ } - /// FIXME unused stuff - - // common elements and attributes - - val BODY = "body" - val DIV = "div" - val SPAN = "span" - val BR = "br" - val PRE = "pre" - val CLASS = "class" - val STYLE = "style" - + // common markup elements - // document markup - - def span(cls: String, body: XML.Body): XML.Elem = - XML.Elem(Markup(SPAN, List((CLASS, cls))), body) - - def user_font(font: String, txt: String): XML.Elem = - XML.Elem(Markup(SPAN, List((STYLE, "font-family: " + font))), List(XML.Text(txt))) - - def hidden(txt: String): XML.Elem = - span(Markup.HIDDEN, List(XML.Text(txt))) - - def sub(txt: String): XML.Elem = XML.elem("sub", List(XML.Text(txt))) - def sup(txt: String): XML.Elem = XML.elem("sup", List(XML.Text(txt))) - def bold(txt: String): XML.Elem = span("bold", List(XML.Text(txt))) + def session_entry(name: String): String = + XML.string_of_tree( + XML.elem("li", + List(XML.Elem(Markup("a", List(("href", name + "/index.html"))), + List(XML.Text(name)))))) + "\n" - def spans(input: XML.Tree): XML.Body = - { - def html_spans(tree: XML.Tree): XML.Body = - tree match { - case XML.Wrapped_Elem(markup, _, ts) => - List(span(markup.name, ts.flatMap(html_spans))) - case XML.Elem(markup, ts) => - List(span(markup.name, ts.flatMap(html_spans))) - case XML.Text(txt) => - val ts = new ListBuffer[XML.Tree] - val t = new StringBuilder - def flush() { - if (!t.isEmpty) { - ts += XML.Text(t.toString) - t.clear - } - } - def add(elem: XML.Tree) { - flush() - ts += elem - } - val syms = Symbol.iterator(txt) - while (syms.hasNext) { - val s1 = syms.next - def s2() = if (syms.hasNext) syms.next else "" - if (s1 == "\n") add(XML.elem(BR)) - else if (s1 == Symbol.sub_decoded || s1 == Symbol.isub_decoded) - { add(hidden(s1)); add(sub(s2())) } - else if (s1 == Symbol.sup_decoded || s1 == Symbol.isup_decoded) - { add(hidden(s1)); add(sup(s2())) } - else if (s1 == Symbol.bsub_decoded) t ++= s1 // FIXME - else if (s1 == Symbol.esub_decoded) t ++= s1 // FIXME - else if (s1 == Symbol.bsup_decoded) t ++= s1 // FIXME - else if (s1 == Symbol.esup_decoded) t ++= s1 // FIXME - else if (s1 == Symbol.bold_decoded) { add(hidden(s1)); add(bold(s2())) } - else if (Symbol.fonts.isDefinedAt(s1)) { add(user_font(Symbol.fonts(s1), s1)) } - else t ++= s1 - } - flush() - ts.toList - } - html_spans(input) - } + def session_entries(names: List[String]): String = + if (names.isEmpty) "" + else + "\n\n