Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

# ABSTRACT: Utility class for authoring commit messages
package Pinto::Editor;
use Moose;
#-----------------------------------------------------------------------------
our $VERSION = '0.14'; # VERSION
#-----------------------------------------------------------------------------
sub EDITOR {
return $ENV{VISUAL} || $ENV{EDITOR};
}
#-----------------------------------------------------------------------------
our $__singleton__;
sub __singleton__ {
return $__singleton__ ||=__PACKAGE__->new;
}
#-----------------------------------------------------------------------------
sub edit_file {
my $self = shift;
my $file = shift;
die "*** Missing editor (No \$VISUAL or \$EDITOR)\n" unless my $editor = $self->EDITOR;
my $rc = system $editor, $file;
unless ( $rc == 0 ) {
my ($exit_value, $signal, $core_dump);
$exit_value = $? >> 8;
$signal = $? & 127;
$core_dump = $? & 128;
die "Error during edit ($editor): exit value($exit_value), signal($signal), core_dump($core_dump): $!";
}
}
#-----------------------------------------------------------------------------
sub edit {
my $self = shift;
$self = $self->__singleton__ unless blessed $self;
my %given = @_;
my $document = delete $given{document};
$document = '' unless defined $document;
my $file = delete $given{file};
$file = $self->tmp unless defined $file;
my $edit = Pinto::Editor::Edit->new(
editor => $self,
file => $file,
document => $document,
%given, # process, split, ...
);
return $edit->edit;
}
#-----------------------------------------------------------------------------
sub tmp { return File::Temp->new( unlink => 1 ) }
#-----------------------------------------------------------------------------
1;
=pod
=encoding UTF-8
=for :stopwords Jeffrey Ryan Thalhammer
=head1 NAME
Pinto::Editor - Utility class for authoring commit messages
=head1 VERSION
version 0.14
=head1 DESCRIPTION
This is a forked version of L<Term::EditorEdit> which does not use the deprecated
module L<Any::Moose>. My thanks to Robert Krimen for authoring the original.
No user-servicable parts in here.
=head1 AUTHOR
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
__END__
#-----------------------------------------------------------------------------