def describe_pos(buffer, buffer_index)
len = 75
num_before = [len/2, buffer_index].min
num_after = [len/2, buffer.size - buffer_index].min
num_before_max = buffer_index
num_after_max = buffer.size - buffer_index
num_before = [num_before_max, len - num_after].min
num_after = [num_after_max, len - num_before].min
index_start = [buffer_index - num_before, 0].max
index_end = [buffer_index + num_after, buffer.size].min
size = index_end - index_start
str = buffer[index_start, size]
str.gsub!("\n", 'N')
str.gsub!("\t", 'T')
if index_end == buffer.size
str += "EOF"
end
pre_s = buffer_index - index_start
pre_s = [pre_s, 0].max
pre_s2 = [len - pre_s, 0].max
pre = " " * pre_s
"-" * len + "\n" +
str + "\n" +
"-" * pre_s + "|" + "-" * pre_s2 + "\n" +
pre + "+--- Byte #{buffer_index}\n"+
"Shown bytes [#{index_start} to #{size}] of #{buffer.size}:\n"+
buffer.gsub(/^/, ">")
end