src/Pure/General/position.scala
author wenzelm
Fri, 19 Dec 2008 20:37:29 +0100
changeset 29140 e7ac5bb20aed
parent 27993 6dd90ef9f927
child 31705 0c83e3e75fcf
permissions -rw-r--r--
removed Ids;
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
}