From: Shawn Boyette Date: Mon, 10 Nov 2008 23:08:22 +0000 (+0000) Subject: added yank-line and flip-line X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=7b4ec53df0a3c8012f7aec13de01ce0d62cc21c9 added yank-line and flip-line --- diff --git a/marc-cleanup b/marc-cleanup index 58b59a8..b25e323 100755 --- a/marc-cleanup +++ b/marc-cleanup @@ -6,8 +6,6 @@ use warnings; use Getopt::Long; use Term::ReadLine; -$| = 1; - my $term = new Term::ReadLine 'yaz-cleanup'; my $OUT = $term->OUT || \*STDOUT; @@ -34,8 +32,10 @@ open my $EXMARC, '>:utf8', $conf->{exception}; my %commands = ( c => \&print_context, C => \&print_linecontext, o => \&show_original, + O => \&insert_original, f => \&flip_lines, k => \&kill_line, + y => \&yank_line, m => \&merge_lines, n => \&next_line, p => \&prev_line, @@ -309,6 +309,7 @@ sub message { sub substitute { my ($line_in, @chunks) = @_; + my $ofrom = shift @chunks; if ($ofrom =~ /^'/ or !@chunks) { until ($ofrom =~ /'$/) @@ -327,12 +328,15 @@ sub substitute { $char = "\\" . $char if ($char =~ /\W/); $from = join('', $from, $char); } + + $conf->{prevline} = $record[$recptr]; $record[$recptr] =~ s/$from/$to/; print_linecontext(); return 0; } sub merge_lines { + $conf->{prevline} = $record[$recptr]; # remove //; # and move to front of line @@ -351,7 +355,16 @@ sub merge_lines { return 0; } +sub flip_line { + my $temp = $record[$recptr]; + $record[$recptr] = $conf->{prevline}; + $conf->{prevline} = $temp; + print_linecontext(); + return 0; +} + sub kill_line { + $conf->{prevline} = $record[$recptr]; my @a = @record[0 .. $recptr - 1]; my @b = @record[$recptr + 1 .. $#record]; @record = (@a, @b); @@ -359,6 +372,20 @@ sub kill_line { return 0; } +sub yank_line { + my @a = @record[0 .. $recptr - 1]; + my @b = @record[$recptr .. $#record]; + @record = (@a, $conf->{prevline}, @b); + print_linecontext(); + return 0; +} + +sub show_original { + my ($line_in) = @_; + print $OUT "\n", $conf->{origline}, "\n"; + return 0; +} + sub dump_record { my ($line_in, @explanation) = @_; $recmeta{explanation} = join(' ', 'Tag', $recmeta{tag}, @explanation); @@ -378,12 +405,6 @@ sub prev_line { return 0; } -sub show_original { - my ($line_in) = @_; - print $OUT "\n", $conf->{origline}, "\n"; - return 0; -} - sub commit_edit { return 1 } sub help {