src/Pure/Thy/present.scala
changeset 50707 5b2bf7611662
child 51399 6ac3c29a300e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Pure/Thy/present.scala	Thu Jan 03 20:42:18 2013 +0100
@@ -0,0 +1,41 @@
+/*  Title:      Pure/Thy/present.scala
+    Author:     Makarius
+
+Theory presentation: HTML.
+*/
+
+package isabelle
+
+
+object Present
+{
+  /* maintain session index -- NOT thread-safe */
+
+  private val index_path = Path.basic("index.html")
+  private val session_entries_path = Path.explode(".session/entries")
+  private val pre_index_path = Path.explode(".session/pre-index")
+
+  private def get_entries(dir: Path): List[String] =
+    split_lines(File.read(dir + session_entries_path))
+
+  private def put_entries(entries: List[String], dir: Path): Unit =
+    File.write(dir + session_entries_path, cat_lines(entries))
+
+  def create_index(dir: Path): Unit =
+    File.write(dir + index_path,
+      File.read(dir + pre_index_path) +
+      HTML.session_entries(get_entries(dir)) +
+      HTML.end_document)
+
+  def update_index(dir: Path, names: List[String]): Unit =
+    try {
+      put_entries(get_entries(dir).filterNot(names.contains) ::: names, dir)
+      create_index(dir)
+    }
+    catch {
+      case ERROR(msg) =>
+        java.lang.System.err.println(
+          "### " + msg + "\n### Browser info: failed to update session index of " + dir)
+    }
+}
+