Szerkesztő:UTF46/src/editor/texteditor.pm

editor/texteditor.pm forráskódja szerkesztés

package editor::texteditor;
use utf8;
use strict;
use warnings;

sub new {
	my $class=shift;
	my $editor=$ENV{EDITOR};
	die "NO EDITOR in environment variables set. set it explicitely" if not $editor;
	die "Enter explicite filename of the editor in the environment variable. PATH is unsupported" if $editor !~ /\//;
	if ($editor =~ /^(\/[\w\-\/]+)$/) {
		$editor=$1;
	} else {
		die "unexpected character in EDITOR env-var";
	};
	my $self={
		editor=>$editor,
	};
	bless $self,$class;
	return $self;
};

sub automata {
	my $self=shift;
	return 0;
};

sub edit {
	my $self=shift;
	my $title=shift;
	my $text=shift;
	
	my $fname="file_$$";
	my $fsummary="summary_$$";
	my $summary='';
	
	local $ENV{PATH}='/bin:/usr/bin';

	while (not $summary) {
		open F,">:utf8",$fname;
		print F $text;
		close F;
		system ($self->{editor},$fname,$fsummary);
		local $/=undef;
		open F,"<:utf8",$fname;
		$text=<F>;
		close F;
		open F,"<:utf8",$fsummary;
		$summary=<F>;
		close F;
		$summary=~ s/[\s\r\n]+/ /sg;
		if ($text=~ /^(.*)$/) {
			$text=$1;
		};
		if ($summary=~ /^(.*)$/) {
			$summary=$1;
		};
	};
	
	return {
		summary=>$summary,
		text=>$text,
		notminor=>1,
		nocreate=>1,
	};
};

1;

en:WTFPL