increment $VERSION after 1.003029 release
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / DumpHistory.pm
CommitLineData
1716b200 1use strict;
2use warnings;
a2532f46 3package Devel::REPL::Plugin::DumpHistory;
9d2a4940 4# ABSTRACT: Plugin for Devel::REPL to save or print the history
a2532f46 5
77327851 6our $VERSION = '1.003030';
54beb05d 7
6a5409bc 8use Devel::REPL::Plugin;
aa8b7647 9use namespace::autoclean;
a2532f46 10
11## Seems to be a sequence issue with requires
afc8677b 12# requires qw{ history };
a2532f46 13
14around 'read' => sub {
15 my $orig = shift;
16 my ($self, @args) = @_;
17
18 my $line = $self->$orig(@args);
19 if (defined $line) {
20 if ($line =~ m/^:dump ?(.*)$/) {
21 my $file = $1;
22 $self->print_history($file);
23 return '';
24 }
25 }
26 return $line;
27};
28
29sub print_history {
30 my ( $self, $file ) = @_;
31
32 if ($file) {
33 open( my $fd, ">>", $file )
34 or do { warn "Couldn't open '$file': $!\n"; return; };
35 print $fd "$_\n" for ( @{ $self->history } );
36 $self->print( sprintf "Dumped %d history lines to '$file'\n",
37 scalar @{ $self->history } );
38 close $fd;
39 } else {
40 $self->print("$_\n") for ( @{ $self->history } );
41 }
42 return 1;
43}
44
451;
46
47__END__
48
9d2a4940 49=pod
a2532f46 50
51=head1 SYNOPSIS
52
a2532f46 53 use Devel::REPL;
54
55 my $repl = Devel::REPL->new;
56 $repl->load_plugin('LexEnv');
57 $repl->load_plugin('History');
58 $repl->load_plugin('DumpHistory');
59 $repl->run;
60
61=head1 DESCRIPTION
62
afc8677b 63Plugin that adds the C<:dump> and C<:dump file_name> commands to the
a2532f46 64repl which will print the history to STDOUT or append the history to the
65file given.
66
67=head1 SEE ALSO
68
69C<Devel::REPL>
70
71=head1 AUTHOR
72
73mgrimes, E<lt>mgrimes at cpan dot org<gt>
74
75=head1 COPYRIGHT AND LICENSE
76
77Copyright (C) 2007 by mgrimes
78
79This library is free software; you can redistribute it and/or modify
80it under the same terms as Perl itself, either Perl version 5.8.2 or,
81at your option, any later version of Perl 5 you may have available.
82
83=cut