130 def purge(props: T): T = props.filterNot(p => Markup.POSITION_PROPERTIES(p._1)) |
130 def purge(props: T): T = props.filterNot(p => Markup.POSITION_PROPERTIES(p._1)) |
131 |
131 |
132 |
132 |
133 /* here: user output */ |
133 /* here: user output */ |
134 |
134 |
135 def here(pos: T): String = |
135 def here(props: T, delimited: Boolean = false): String = |
136 Markup(Markup.POSITION, pos).markup( |
136 { |
137 (Line.unapply(pos), File.unapply(pos)) match { |
137 val pos = props.filter(p => Markup.POSITION_PROPERTIES(p._1)) |
138 case (Some(i), None) => " (line " + i.toString + ")" |
138 if (pos.isEmpty) "" |
139 case (Some(i), Some(name)) => " (line " + i.toString + " of " + quote(name) + ")" |
139 else { |
140 case (None, Some(name)) => " (file " + quote(name) + ")" |
140 val s0 = |
141 case _ => "" |
141 (Line.unapply(pos), File.unapply(pos)) match { |
142 }) |
142 case (Some(i), None) => "line " + i.toString |
143 |
143 case (Some(i), Some(name)) => "line " + i.toString + " of " + quote(name) |
144 def here_undelimited(pos: T): String = |
144 case (None, Some(name)) => "file " + quote(name) |
145 Markup(Markup.POSITION, pos).markup( |
145 case _ => "" |
146 (Line.unapply(pos), File.unapply(pos)) match { |
146 } |
147 case (Some(i), None) => "line " + i.toString |
147 val s = if (s0 == "") s0 else if (delimited) " (" + s0 + ")" else " " + s0 |
148 case (Some(i), Some(name)) => "line " + i.toString + " of " + quote(name) |
148 Markup(Markup.POSITION, pos).markup(s) |
149 case (None, Some(name)) => "file " + quote(name) |
149 } |
150 case _ => "" |
150 } |
151 }) |
|
152 } |
151 } |