SF.net SVN: geany:[4172] trunk/scripts/fix-alignment.pl

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Sep 10 16:11:13 UTC 2009


Revision: 4172
          http://geany.svn.sourceforge.net/geany/?rev=4172&view=rev
Author:   ntrel
Date:     2009-09-10 16:11:13 +0000 (Thu, 10 Sep 2009)

Log Message:
-----------
Take multiple files if -w argument is supplied.

Modified Paths:
--------------
    trunk/scripts/fix-alignment.pl

Modified: trunk/scripts/fix-alignment.pl
===================================================================
--- trunk/scripts/fix-alignment.pl	2009-09-07 18:33:31 UTC (rev 4171)
+++ trunk/scripts/fix-alignment.pl	2009-09-10 16:11:13 UTC (rev 4172)
@@ -18,69 +18,79 @@
 my $argc = $#ARGV + 1;
 my $scriptname = $0;
 
-($argc == 1) or die <<END;
+(($argc == 1) or ($argc >= 1 and $opt_write)) or die <<END;
 Usage:
 $scriptname sourcefile [>outfile]
   Print formatted output to STDOUT or outfile.
-  Warning: do not use the same file for both.
+  Warning: do not use the same file for outfile.
 
-$scriptname -w sourcefile
-  Writes to the file in-place.
+$scriptname -w sourcefile(s)
+  Writes to the file(s) in-place.
   Warning: backup your file(s) first or use clean version control files.
 END
 
-# TODO: operate on multiple files
-my ($infile) = @ARGV;
-my @lines;
 
-open(INPUT, $infile) or die "Couldn't open $infile for reading: $!\n";
+sub parse($)
+{
+	my ($infile) = @_;
+	my @lines;
 
-while (<INPUT>) {
-	my $line = $_;	# read a line, including \n char
+	open(INPUT, $infile) or die "Couldn't open $infile for reading: $!\n";
 
-	# strip trailing space & newline
-	$line =~ s/\s+$//g;
+	while (<INPUT>) {
+		my $line = $_;	# read a line, including \n char
 
-	# for now, don't process lines with comments, strings, preproc non-defines, overflowed lines or chars
-	# multi-line comment internal lines are skipped only if they start with '* '.
-	if (!($line =~ m,/\*|\*/|//|"|\\$|',) and !($line =~ m/^\s*(\*\s|#[^d])/)) {
-		# make binary operators have *one* space each side
-		# operators must have longer variants first otherwise trailing operators can be broken e.g. "+ ="
-		# '*' ignored as could be pointer
-		# '-' ignored as could be unary "-1"
-		# '&' ignored as could be address-of "(type*)&foo"
-		my $ops = '<<=,<<,>>=,>>,<=,>=,<,>,||,|=,|,&&,&=,-=,+=,+,*=,/=,/,==,!=,%=,%,^=,^,=';
-		$ops =~ s/([|*+])/\\$1/g; # escape regex chars
-		$ops =~ s/,/|/g;
-		$line =~ s/([\w)\]])\s*($ops)\s*([\w(]|$)/$1 $2 $3/g;
+		# strip trailing space & newline
+		$line =~ s/\s+$//g;
 
-		# space ternary conditional operator
-		$line =~ s/\s*\?\s*(.+?)\s*:\s*/ ? $1 : /g;
+		# for now, don't process lines with comments, strings, preproc non-defines, overflowed lines or chars
+		# multi-line comment internal lines are skipped only if they start with '* '.
+		if (!($line =~ m,/\*|\*/|//|"|\\$|',) and !($line =~ m/^\s*(\*\s|#[^d])/)) {
+			# make binary operators have *one* space each side
+			# operators must have longer variants first otherwise trailing operators can be broken e.g. "+ ="
+			# '*' ignored as could be pointer
+			# '-' ignored as could be unary "-1"
+			# '&' ignored as could be address-of "(type*)&foo"
+			my $ops = '<<=,<<,>>=,>>,<=,>=,<,>,||,|=,|,&&,&=,-=,+=,+,*=,/=,/,==,!=,%=,%,^=,^,=';
+			$ops =~ s/([|*+])/\\$1/g; # escape regex chars
+			$ops =~ s/,/|/g;
+			$line =~ s/([\w)\]])\s*($ops)\s*([\w(]|$)/$1 $2 $3/g;
 
-		# space comma operator (allowing for possible alignment space afterwards)
-		$line =~ s/\s*,(\S)/, $1/g;
+			# space ternary conditional operator
+			$line =~ s/\s*\?\s*(.+?)\s*:\s*/ ? $1 : /g;
 
-		# space after statements
-		my $statements = 'for|if|while|switch';
-		$line =~ s/\b($statements)\b\s*/$1 /g;
+			# space comma operator (allowing for possible alignment space afterwards)
+			$line =~ s/\s*,(\S)/, $1/g;
 
-		# no space on inside of brackets
-		$line =~ s/\(\s+/(/g;
-		$line =~ s/(\S)\s+\)/$1)/g;
+			# space after statements
+			my $statements = 'for|if|while|switch';
+			$line =~ s/\b($statements)\b\s*/$1 /g;
+
+			# no space on inside of brackets
+			$line =~ s/\(\s+/(/g;
+			$line =~ s/(\S)\s+\)/$1)/g;
+		}
+		# strip trailing space again (e.g. a trailing operator now has space afterwards)
+		$line =~ s/\s+$//g;
+
+		$opt_write or print $line."\n";
+		$opt_write and push(@lines, $line);
 	}
-	# strip trailing space again (e.g. a trailing operator now has space afterwards)
-	$line =~ s/\s+$//g;
+	close(INPUT);
 
-	$opt_write or print $line."\n";
-	$opt_write and push(@lines, $line);
+	$opt_write or return;
+
+	open(OUTPUT, ">$infile") or die "Couldn't open $infile for writing: $!\n";
+	foreach my $line (@lines)
+	{
+		print OUTPUT $line."\n";
+	}
+	close(OUTPUT);
 }
-close(INPUT);
 
-$opt_write or exit;
 
-open(OUTPUT, ">$infile") or die "Couldn't open $infile for writing: $!\n";
-foreach my $line (@lines)
+foreach my $infile (@ARGV)
 {
-	print OUTPUT $line."\n";
+	parse($infile);
 }
-close(OUTPUT);
+


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list