From 0d325a86c6300abf8f5f8ec0f9fe5c2e5ee4fdb7 Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Mon, 19 May 2008 21:27:45 -0500 Subject: add a buffer class --- lib/Language/TECO/Buffer.pm | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 lib/Language/TECO/Buffer.pm 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; -- cgit v1.2.3-54-g00ecf