diff options
author | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-22 15:41:42 -0500 |
---|---|---|
committer | jluehrs2 <jluehrs2@uiuc.edu> | 2008-05-22 15:41:42 -0500 |
commit | a776c55b160c99e1c507c0c08227b692cfe1b31a (patch) | |
tree | a433e4d54a2f5a4b2d41eddc04e45c1bd90cad6b /lib | |
parent | d466b70df09f9110d412717aad0ff21c34677e89 (diff) | |
download | language-teco-a776c55b160c99e1c507c0c08227b692cfe1b31a.tar.gz language-teco-a776c55b160c99e1c507c0c08227b692cfe1b31a.zip |
make execute return anything that would be printed to stdout, rather than printing it directly
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Language/TECO.pm | 5 | ||||
-rw-r--r-- | lib/Language/TECO/Buffer.pm | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/Language/TECO.pm b/lib/Language/TECO.pm index 7d2d63e..4aee5a3 100644 --- a/lib/Language/TECO.pm +++ b/lib/Language/TECO.pm @@ -90,6 +90,7 @@ sub push_cmd { sub execute { my $self = shift; $self->{command} = shift; + my $ret = ''; while ($self->{command}) { $_ = substr($self->{command}, 0, 1, ''); @@ -215,11 +216,13 @@ sub execute { $self->num(1); } my $num = $self->num; - $self->{buffer}->print($self->{buffer}->get_line_offset($num)); + $ret .= $self->{buffer}->print($self->{buffer}->get_line_offset($num)); } }); } } + + return $ret; } =head1 NAME diff --git a/lib/Language/TECO/Buffer.pm b/lib/Language/TECO/Buffer.pm index 66440f9..7ba2923 100644 --- a/lib/Language/TECO/Buffer.pm +++ b/lib/Language/TECO/Buffer.pm @@ -15,11 +15,13 @@ sub set { my $pointer = shift; die 'Pointer off page' if $pointer < 0 || $pointer > length $self->{buffer}; $self->{pointer} = $pointer; + return; } sub offset { my $self = shift; $self->set($self->{pointer} + shift); + return; } sub insert { @@ -27,6 +29,7 @@ sub insert { my $text = shift; substr($self->{buffer}, $self->{pointer}, 0) = $text; $self->offset(length $text); + return; } sub delete { @@ -48,6 +51,7 @@ sub delete { die "Pointer off page" if $self->{pointer} + $length > length $self->{buffer}; substr($self->{buffer}, $self->{pointer}, $length) = ''; + return; } sub endpos { length shift->{buffer} } @@ -57,7 +61,7 @@ sub curpos { shift->{pointer} } sub print { my $self = shift; my ($start, $end) = @_; - print substr $self->{buffer}, $start, $end - $start; + return substr $self->{buffer}, $start, $end - $start; } sub get_line_offset { |