From 173130b8c5cee06e63fd6507dec066345db25f69 Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Sat, 24 May 2008 17:14:01 -0500 Subject: refactor the delete method of the buffer a bit --- lib/Language/TECO.pm | 2 +- lib/Language/TECO/Buffer.pm | 22 ++++++---------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/lib/Language/TECO.pm b/lib/Language/TECO.pm index ccca57f..efbb394 100644 --- a/lib/Language/TECO.pm +++ b/lib/Language/TECO.pm @@ -157,7 +157,7 @@ sub execute { } $self->cmd(sub { my $self = shift; - $self->buf->delete($self->num); + $self->buf->delete($self->pointer, $self->pointer + $self->num); }); } elsif (/k/i) { diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm index d997c85..5d45397 100644 --- a/lib/Language/TECO/Buffer.pm +++ b/lib/Language/TECO/Buffer.pm @@ -19,6 +19,7 @@ sub buffer { my ($start, $end) = @_; $start = 0 unless defined $start; $end = $self->endpos unless defined $end; + ($start, $end) = ($end, $start) if $start > $end; return substr $self->{buffer}, $start, $end - $start; } @@ -46,23 +47,12 @@ sub insert { sub delete { my $self = shift; - my $length; - if (@_ > 1) { - my $pos = shift; - $self->set($pos); - $length = shift() - $pos; - } - else { - $length = shift; - } + my ($start, $end) = @_; + ($start, $end) = ($end, $start) if $start > $end; - if ($length < 0) { - $length = -$length; - $self->offset(-$length); - } - die "Pointer off page" - if $self->curpos + $length > $self->endpos; - substr($self->{buffer}, $self->curpos, $length) = ''; + die "Pointer off page" if $start < 0 || $end > $self->endpos; + substr($self->{buffer}, $start, $end - $start) = ''; + $self->set($start); return; } -- cgit v1.2.3