]> ruderich.org/simon Gitweb - config/dotfiles.git/blob - shell/bin/remove-continuation.pl
Merge branch 'os'
[config/dotfiles.git] / shell / bin / remove-continuation.pl
1 #!/usr/bin/perl
2
3 # Remove continuation lines from stdin/file. Leading whitespace on the next
4 # line is removed.
5
6 # Copyright (C) 2012  Simon Ruderich
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
21
22 use strict;
23 use warnings;
24
25
26 my $continuation = 0;
27 while (<STDIN>) {
28     # Remove leading whitespace if the last line was a line continuation.
29     if ($continuation) {
30         s/^\s+//;
31     }
32
33     if (/^(.+?)\\$/) {
34         print $1;
35         $continuation = 1;
36     } else {
37         print $_;
38         $continuation = 0;
39     }
40 }
41 # Handle line continuation on the last line.
42 print "\n" if $continuation;