diff options
author | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-19 21:27:45 -0500 |
---|---|---|
committer | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-19 21:27:45 -0500 |
commit | 0d325a86c6300abf8f5f8ec0f9fe5c2e5ee4fdb7 (patch) | |
tree | e2a01eb08cbfd7ff40fa0e72e4b8856e30dc715e /lib | |
parent | a886df7e0b15eb32b0fcd73375bd7b4ee2b392cd (diff) | |
download | language-teco-0d325a86c6300abf8f5f8ec0f9fe5c2e5ee4fdb7.tar.gz language-teco-0d325a86c6300abf8f5f8ec0f9fe5c2e5ee4fdb7.zip |
add a buffer class
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Language/TECO/Buffer.pm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm new file mode 100644 index 0000000..53a80ba --- /dev/null +++ b/lib/Language/TECO/Buffer.pm @@ -0,0 +1,46 @@ +#!/usr/bin/perl +use strict; +use warnings; +package Language::TECO::Buffer; + +sub new { + return bless { buffer => '', pointer => 0 }, shift; +} + +sub set { + my $self = shift; + my $pointer = shift; + return if $pointer < 0 || $pointer > length $self->{buffer} + $self->{pointer} = $pointer; +} + +sub offset { + my $self = shift; + $self->set($self->{pointer} + shift); +} + +sub insert { + my $self = shift; + my $text = shift; + substr($self->{buffer}, $self->{pointer}, 0) = $text; + $self->offset(length $text); +} + +sub delete { + my $self = shift; + my $length = shift; + if ($length < 0) { + $length = -$length; + $self->{pointer} -= $length; + } + substr($self->{buffer}, $self->{pointer}, $length) = ''; +} + +sub endpos { length shift->{buffer} } + +sub curpos { shift->{pointer} } + +sub print { +} + +1; |