src/Pure/General/position.scala
changeset 36677 1225dd15827d
parent 34211 686f828548ef
child 36683 41a1210519fd
--- a/src/Pure/General/position.scala	Wed May 05 22:23:45 2010 +0200
+++ b/src/Pure/General/position.scala	Wed May 05 23:09:34 2010 +0200
@@ -33,10 +33,13 @@
   def get_file(pos: T): Option[String] = get_string(Markup.FILE, pos)
   def get_id(pos: T): Option[String] = get_string(Markup.ID, pos)
 
-  def get_offsets(pos: T): (Option[Int], Option[Int]) =
-  {
-    val begin = get_offset(pos)
-    val end = get_end_offset(pos)
-    (begin, if (end.isDefined) end else begin.map(_ + 1))
-  }
+  def get_range(pos: T): Option[(Int, Int)] =
+    (get_offset(pos), get_end_offset(pos)) match {
+      case (Some(begin), Some(end)) => Some(begin, end)
+      case (Some(begin), None) => Some(begin, begin + 1)
+      case (None, _) => None
+    }
+
+  object Id { def unapply(pos: T): Option[String] = get_id(pos) }
+  object Range { def unapply(pos: T): Option[(Int, Int)] = get_range(pos) }
 }