src/Pure/Isar/isar_document.scala
author wenzelm
Wed, 21 Jan 2009 23:21:44 +0100
changeset 29606 fedb8be05f24
parent 29553 c3b937e8597b
child 29644 fbbd0197155c
permissions -rw-r--r--
removed Ids;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/Isar/isar_document.scala
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     3
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     4
Interactive Isar documents.
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     5
*/
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     6
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     7
package isabelle
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     8
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
     9
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    10
object IsarDocument
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    11
{
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    12
  /* unique identifiers */
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    13
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    14
  type State_ID = String
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    15
  type Command_ID = String
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    16
  type Document_ID = String
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    17
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    18
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    19
  /* commands */
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    20
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    21
  def define_command(proc: IsabelleProcess, id: Command_ID, text: String) {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    22
    proc.output_sync("Isar.define_command " + IsabelleSyntax.encode_string(id) + " " +
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    23
      IsabelleSyntax.encode_string(text))
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    24
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    25
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    26
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    27
  /* documents */
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    28
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    29
  def begin_document(proc: IsabelleProcess, id: Document_ID, path: String) {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    30
    proc.output_sync("Isar.begin_document " + IsabelleSyntax.encode_string(id) + " " +
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    31
       IsabelleSyntax.encode_string(path))
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    32
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    33
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    34
  def end_document(proc: IsabelleProcess, id: Document_ID) {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    35
    proc.output_sync("Isar.end_document " + IsabelleSyntax.encode_string(id))
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    36
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    37
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    38
  def edit_document(proc: IsabelleProcess, old_id: Document_ID, new_id: Document_ID,
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    39
      edits: List[(Command_ID, Option[Command_ID])])
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    40
  {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    41
    def append_edit(edit: (Command_ID, Option[Command_ID]), result: StringBuilder)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    42
    {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    43
      edit match {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    44
        case (id, None) => IsabelleSyntax.append_string(id, result)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    45
        case (id, Some(id2)) =>
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    46
          IsabelleSyntax.append_string(id, result)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    47
          result.append(" ")
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    48
          IsabelleSyntax.append_string(id2, result)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    49
      }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    50
    }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    51
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    52
    val buf = new StringBuilder(40)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    53
    buf.append("Isar.edit_document ")
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    54
    IsabelleSyntax.append_string(old_id, buf)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    55
    buf.append(" ")
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    56
    IsabelleSyntax.append_string(new_id, buf)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    57
    buf.append(" ")
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    58
    IsabelleSyntax.append_list(append_edit, edits, buf)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    59
    proc.output_sync(buf.toString)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    60
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    61
}