X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=shell%2Fbin%2Fremove-continuation.pl;fp=shell%2Fbin%2Fremove-continuation.pl;h=3deb7d7d376b4d9980083b3bf2a0095fef4486f8;hb=29fe133e2b4ca2a25342fa9a4c3e661bc38895f2;hp=0000000000000000000000000000000000000000;hpb=3e17e82d591782b4750382b00c5bf6ee96eddedf;p=config%2Fdotfiles.git diff --git a/shell/bin/remove-continuation.pl b/shell/bin/remove-continuation.pl new file mode 100755 index 0000000..3deb7d7 --- /dev/null +++ b/shell/bin/remove-continuation.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +# Remove continuation lines from stdin/file. Leading whitespace on the next +# line is removed. + +# Copyright (C) 2012 Simon Ruderich +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +use strict; +use warnings; + + +my $continuation = 0; +while () { + # Remove leading whitespace if the last line was a line continuation. + if ($continuation) { + s/^\s+//; + } + + if (/^(.+?)\\$/) { + print $1; + $continuation = 1; + } else { + print $_; + $continuation = 0; + } +} +# Handle line continuation on the last line. +print "\n" if $continuation;