src/Pure/General/position.scala
author blanchet
Tue, 17 Feb 2009 14:01:54 +0100
changeset 29956 62f931b257b7
parent 29140 e7ac5bb20aed
child 31705 0c83e3e75fcf
permissions -rw-r--r--
Reintroduce set_interpreter for Collect and op :. I removed them by accident when removing old code that dealt with the "set" type. Incidentally, there is still some broken "set" code in Refute that should be fixed (see TODO in refute.ML).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27968
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/General/position.scala
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     3
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     4
Position properties.
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     5
*/
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     6
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     7
package isabelle
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     8
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
     9
import java.util.Properties
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    10
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    11
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    12
object Position {
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    13
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    14
  private def get_string(name: String, props: Properties) = {
27989
a4fdc97cd2ff get: allow null;
wenzelm
parents: 27968
diff changeset
    15
    val value = if (props != null) props.getProperty(name) else null
27968
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    16
    if (value != null) Some(value) else None
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    17
  }
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    18
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    19
  private def get_int(name: String, props: Properties) = {
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    20
    get_string(name, props) match {
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    21
      case None => None
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    22
      case Some(value) =>
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    23
        try { Some(Integer.parseInt(value)) }
27993
6dd90ef9f927 simplified exceptions: use plain error function / RuntimeException;
wenzelm
parents: 27989
diff changeset
    24
        catch { case _: NumberFormatException => None }
27968
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    25
    }
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    26
  }
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    27
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    28
  def line_of(props: Properties) = get_int(Markup.LINE, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    29
  def column_of(props: Properties) = get_int(Markup.COLUMN, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    30
  def offset_of(props: Properties) = get_int(Markup.OFFSET, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    31
  def end_line_of(props: Properties) = get_int(Markup.END_LINE, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    32
  def end_column_of(props: Properties) = get_int(Markup.END_COLUMN, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    33
  def end_offset_of(props: Properties) = get_int(Markup.END_OFFSET, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    34
  def file_of(props: Properties) = get_string(Markup.FILE, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    35
  def id_of(props: Properties) = get_string(Markup.ID, props)
85b5f024d94b Position properties.
wenzelm
parents:
diff changeset
    36
}