]> ruderich.org/simon Gitweb - config/dotfiles.git/blobdiff - shell/bin/remove-continuation.pl
Move to shell/ in preparation for merge into new dotfiles repository
[config/dotfiles.git] / shell / bin / remove-continuation.pl
diff --git a/shell/bin/remove-continuation.pl b/shell/bin/remove-continuation.pl
new file mode 100755 (executable)
index 0000000..3deb7d7
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+
+
+use strict;
+use warnings;
+
+
+my $continuation = 0;
+while (<STDIN>) {
+    # 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;