From 0cdc4de86d2cea46aa6981427d7c23a5b0dad909 Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Thu, 22 May 2008 14:26:57 -0500 Subject: refactor getting buffer offsets by line into a method on the buffer object --- lib/Language/TECO/Buffer.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'lib/Language/TECO/Buffer.pm') diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm index bc0f7c8..65c0e93 100644 --- a/lib/Language/TECO/Buffer.pm +++ b/lib/Language/TECO/Buffer.pm @@ -51,4 +51,23 @@ sub print { print substr $self->{buffer}, $start, $end - $start; } +sub get_line_offset { + my $self = shift; + my $num = shift; + + if ($num > 0) { + pos $self->{buffer} = $self->{pointer}; + $self->{buffer} =~ /(?:.*(?:\n|$)){$num}/g; + return ($-[0], $+[0]); + } + else { + $num = -$num; + my $rev = reverse $self->{buffer}; + my $len = length $self->{buffer}; + pos $rev = $len - $self->{pointer}; + $rev =~ /.*?(?:\n.*?){$num}(?=\n|$)/g; + return ($len - $+[0], $len - $-[0]); + } +} + 1; -- cgit v1.2.3-54-g00ecf