insilmaril@192: #!/usr/bin/perl 
insilmaril@192: #
insilmaril@192: # Hack to make single-line XML file  easier to read by using indention
insilmaril@192: #
insilmaril@192: # (c) Uwe Drechsel
insilmaril@192: #
insilmaril@192: # License: GPL 
insilmaril@192: 
insilmaril@192: my $filename =shift;
insilmaril@192: my $s;
insilmaril@192: open (INFILE, "<$filename") ||
insilmaril@192: 	die "Could not read $filename.";
insilmaril@192: $s=join("\n",<INFILE>);
insilmaril@192: 
insilmaril@192: $s=~s/>/>\n/gm;
insilmaril@192: 
insilmaril@192: my @lines=split ("\n",$s);
insilmaril@192: my $i=0;
insilmaril@192: my $is="";
insilmaril@192: 
insilmaril@192: foreach (@lines)
insilmaril@192: {
insilmaril@192: 	if (!/<.*?\/>/)
insilmaril@192: 	{
insilmaril@192: 		if (/<\//)
insilmaril@192: 		{
insilmaril@192: 			# Closing tag
insilmaril@192: 			$i--;
insilmaril@192: 			if ($i<0) {$i=0};
insilmaril@192: 			$is=indent($i);
insilmaril@192: 			print "$is$_\n";
insilmaril@192: 		} else
insilmaril@192: 		{
insilmaril@192: 			if (/<(?!\?)/)  # ignore <? ... ?>
insilmaril@192: 			{
insilmaril@192: 				# Opening tag
insilmaril@192: 				print "$is$_\n";
insilmaril@192: 				$i++;
insilmaril@192: 				$is=indent($i);
insilmaril@192: 			} else 
insilmaril@192: 			{ 
insilmaril@192: 				# empty lines etc
insilmaril@192: 				print "$is$_\n"; 
insilmaril@192: 			}
insilmaril@192: 		}
insilmaril@192: 	} else 
insilmaril@192: 	{ 
insilmaril@192: 		# Ignor single tags <../>
insilmaril@192: 		print "$is$_\n"; 
insilmaril@192: 	}
insilmaril@192: }
insilmaril@192: print "\n";
insilmaril@192: exit;
insilmaril@192: 
insilmaril@192: sub indent()
insilmaril@192: {
insilmaril@192: 	my $size=shift;
insilmaril@192: 	my $s="";
insilmaril@192: 	for ($i=0; $i<$size; $i++)
insilmaril@192: 	{
insilmaril@192: 		$s=$s."  ";
insilmaril@192: 	}
insilmaril@192: 	return $s;
insilmaril@192: }