line_starts[0] = 0
end
+ # Create a new sourcefile using a dummy filename and a given content
+ init from_string(filename: String, string: String)
+ do
+ self.filename = filename
+ self.string = string
+ line_starts[0] = 0
+ end
+
# Position of each line start
var line_starts: Array[Int] = new Array[Int]
end
_column_end = column_e
end
+ # The index in the start character in the source
+ fun pstart: Int do return file.line_starts[line_start-1] + column_start-1
+
+ # The index on the end character in the source
+ fun pend: Int do return file.line_starts[line_end-1] + column_end-1
+
# The verbatim associated text in the source-file
fun text: String
do
var res = self.text_cache
if res != null then return res
var l = self
- var pstart = l.file.line_starts[l.line_start-1] + l.column_start-1
- var pend = l.file.line_starts[l.line_end-1] + l.column_end-1
+ var pstart = self.pstart
+ var pend = self.pend
res = l.file.string.substring(pstart, pend-pstart+1)
self.text_cache = res
return res
end
# Return the associated line with the location highlihted with color and a carret under the starting position
- # `color' must be and terminal escape sequence used as "{escape}[{color}m;"
- # "0;31" for red
- # "1;31" for bright red
- # "0;32" for green
+ # `color` must be and terminal escape sequence used as `"{escape}[{color}m;"`
+ # * `"0;31"` for red
+ # * `"1;31"` for bright red
+ # * `"0;32"` for green
fun colored_line(color: String): String
do
var esc = 27.ascii