src/Pure/Isar/isar_document.scala
author wenzelm
Fri, 02 Oct 2009 22:15:08 +0200
changeset 32861 105f40051387
parent 32467 4dab52ca1402
child 36682 3f989067f87d
permissions -rw-r--r--
eliminated dead code;
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
32450
375db037f4d2 misc tuning;
wenzelm
parents: 32448
diff changeset
     9
32467
4dab52ca1402 modernized Isar_Document;
wenzelm
parents: 32450
diff changeset
    10
object Isar_Document
32450
375db037f4d2 misc tuning;
wenzelm
parents: 32448
diff changeset
    11
{
29553
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
29645
bbc8de8d1c8c plain non-dependent types;
wenzelm
parents: 29644
diff changeset
    17
}
bbc8de8d1c8c plain non-dependent types;
wenzelm
parents: 29644
diff changeset
    18
32450
375db037f4d2 misc tuning;
wenzelm
parents: 32448
diff changeset
    19
32467
4dab52ca1402 modernized Isar_Document;
wenzelm
parents: 32450
diff changeset
    20
trait Isar_Document extends Isabelle_Process
29645
bbc8de8d1c8c plain non-dependent types;
wenzelm
parents: 29644
diff changeset
    21
{
32467
4dab52ca1402 modernized Isar_Document;
wenzelm
parents: 32450
diff changeset
    22
  import Isar_Document._
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    23
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    24
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    25
  /* commands */
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    26
29644
fbbd0197155c turned IsarDocument into trait for IsabelleProcess;
wenzelm
parents: 29553
diff changeset
    27
  def define_command(id: Command_ID, text: String) {
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    28
    output_sync("Isar.define_command " + Isabelle_Syntax.encode_string(id) + " " +
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    29
      Isabelle_Syntax.encode_string(text))
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    30
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    31
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    32
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    33
  /* documents */
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    34
29644
fbbd0197155c turned IsarDocument into trait for IsabelleProcess;
wenzelm
parents: 29553
diff changeset
    35
  def begin_document(id: Document_ID, path: String) {
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    36
    output_sync("Isar.begin_document " + Isabelle_Syntax.encode_string(id) + " " +
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    37
      Isabelle_Syntax.encode_string(path))
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    38
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    39
29644
fbbd0197155c turned IsarDocument into trait for IsabelleProcess;
wenzelm
parents: 29553
diff changeset
    40
  def end_document(id: Document_ID) {
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    41
    output_sync("Isar.end_document " + Isabelle_Syntax.encode_string(id))
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    42
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    43
29644
fbbd0197155c turned IsarDocument into trait for IsabelleProcess;
wenzelm
parents: 29553
diff changeset
    44
  def edit_document(old_id: Document_ID, new_id: Document_ID,
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    45
      edits: List[(Command_ID, Option[Command_ID])])
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    46
  {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    47
    def append_edit(edit: (Command_ID, Option[Command_ID]), result: StringBuilder)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    48
    {
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    49
      edit match {
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    50
        case (id, None) => Isabelle_Syntax.append_string(id, result)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    51
        case (id, Some(id2)) =>
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    52
          Isabelle_Syntax.append_string(id, result)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    53
          result.append(" ")
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    54
          Isabelle_Syntax.append_string(id2, result)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    55
      }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    56
    }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    57
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    58
    val buf = new StringBuilder(40)
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    59
    buf.append("Isar.edit_document ")
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    60
    Isabelle_Syntax.append_string(old_id, buf)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    61
    buf.append(" ")
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    62
    Isabelle_Syntax.append_string(new_id, buf)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    63
    buf.append(" ")
32448
a89f876731c5 moved Pure/Tools/isabelle_syntax.scala to Pure/System/isabelle_syntax.scala;
wenzelm
parents: 31797
diff changeset
    64
    Isabelle_Syntax.append_list(append_edit, edits, buf)
29644
fbbd0197155c turned IsarDocument into trait for IsabelleProcess;
wenzelm
parents: 29553
diff changeset
    65
    output_sync(buf.toString)
29553
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    66
  }
c3b937e8597b Scala wrapper for interactive Isar documents;
wenzelm
parents:
diff changeset
    67
}