src/Tools/jEdit/src/proofdocument/Token.scala
author wenzelm
Tue, 02 Jun 2009 21:36:22 +0200
changeset 34584 3457ef52de04
parent 34554 7dc6c231da40
child 34585 4c65620f5318
permissions -rw-r--r--
use RichString.* to produce blanks;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34407
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     1
/*
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     2
 * Document tokens as text ranges
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     3
 *
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     4
 * @author Johannes Hölzl, TU Munich
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     5
 * @author Fabian Immler, TU Munich
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     6
 */
aad6834ba380 added some headers and comments;
wenzelm
parents: 34390
diff changeset
     7
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
     8
package isabelle.proofdocument
34483
0923926022d7 superficial tuning;
wenzelm
parents: 34482
diff changeset
     9
0923926022d7 superficial tuning;
wenzelm
parents: 34482
diff changeset
    10
34481
660c639870a4 replaced type parameter C by Command (thanks to globally simultaneous scope);
wenzelm
parents: 34407
diff changeset
    11
import isabelle.prover.Command
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    12
34483
0923926022d7 superficial tuning;
wenzelm
parents: 34482
diff changeset
    13
34388
23b8351ecbbe arbitrary type for tokens
immler@in.tum.de
parents: 34318
diff changeset
    14
object Token {
34482
0f4b34445f40 turned Token.Kind into Enumeration;
wenzelm
parents: 34481
diff changeset
    15
  object Kind extends Enumeration {
0f4b34445f40 turned Token.Kind into Enumeration;
wenzelm
parents: 34481
diff changeset
    16
    val COMMAND_START = Value("COMMAND_START")
0f4b34445f40 turned Token.Kind into Enumeration;
wenzelm
parents: 34481
diff changeset
    17
    val COMMENT = Value("COMMENT")
0f4b34445f40 turned Token.Kind into Enumeration;
wenzelm
parents: 34481
diff changeset
    18
    val OTHER = Value("OTHER")
34388
23b8351ecbbe arbitrary type for tokens
immler@in.tum.de
parents: 34318
diff changeset
    19
  }
34389
e858aafb4809 moved methods to object Token
immler@in.tum.de
parents: 34388
diff changeset
    20
34551
bd2b8fde9e25 incomplete changes of immutable tokens and commands
immler@in.tum.de
parents: 34539
diff changeset
    21
  def string_from_tokens (tokens: List[Token], starts: Map[Token, Int]): String = {
bd2b8fde9e25 incomplete changes of immutable tokens and commands
immler@in.tum.de
parents: 34539
diff changeset
    22
    def stop(t: Token) = starts(t) + t.length
34526
b504abb6eff6 tokens and commands as lists
immler@in.tum.de
parents: 34492
diff changeset
    23
    tokens match {
b504abb6eff6 tokens and commands as lists
immler@in.tum.de
parents: 34492
diff changeset
    24
      case Nil => ""
34551
bd2b8fde9e25 incomplete changes of immutable tokens and commands
immler@in.tum.de
parents: 34539
diff changeset
    25
      case t::tokens => ( tokens.foldLeft
bd2b8fde9e25 incomplete changes of immutable tokens and commands
immler@in.tum.de
parents: 34539
diff changeset
    26
          (t.content, stop(t))
34584
3457ef52de04 use RichString.* to produce blanks;
wenzelm
parents: 34554
diff changeset
    27
          ((a, token) => (a._1 + " " * (starts(token) - a._2) + token.content, stop(token)))
34526
b504abb6eff6 tokens and commands as lists
immler@in.tum.de
parents: 34492
diff changeset
    28
        )._1
34389
e858aafb4809 moved methods to object Token
immler@in.tum.de
parents: 34388
diff changeset
    29
    }
e858aafb4809 moved methods to object Token
immler@in.tum.de
parents: 34388
diff changeset
    30
  }
34526
b504abb6eff6 tokens and commands as lists
immler@in.tum.de
parents: 34492
diff changeset
    31
34388
23b8351ecbbe arbitrary type for tokens
immler@in.tum.de
parents: 34318
diff changeset
    32
}
23b8351ecbbe arbitrary type for tokens
immler@in.tum.de
parents: 34318
diff changeset
    33
34551
bd2b8fde9e25 incomplete changes of immutable tokens and commands
immler@in.tum.de
parents: 34539
diff changeset
    34
class Token(val content: String, val kind: Token.Kind.Value) {
34526
b504abb6eff6 tokens and commands as lists
immler@in.tum.de
parents: 34492
diff changeset
    35
  val length = content.length
34554
7dc6c231da40 abs. stops, markup nodes depend on doc-version;
immler@in.tum.de
parents: 34551
diff changeset
    36
  override def toString = content
34318
c13e168a8ae6 original sources from Johannes Hölzl a48e0c6ab1aea77c52d596f7efc007a543d3d10c with minor modifications of directory layout;
wenzelm
parents:
diff changeset
    37
}