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;