58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
#!/usr/bin/perl
 | 
						|
 | 
						|
use strict;
 | 
						|
use warnings;
 | 
						|
 | 
						|
sub header {
 | 
						|
  my $file = shift;
 | 
						|
  open my $input, "<", $file or die "Couldn't open '$file':$!";
 | 
						|
  my @file = <$input>;
 | 
						|
  close $file;
 | 
						|
  return toc(@file);
 | 
						|
}
 | 
						|
 | 
						|
sub toc {
 | 
						|
  my @lines = @_;
 | 
						|
  for( @lines ) {
 | 
						|
    if( /^\s*$/s ) { $_ = qq{"\\n"\n}; next; }
 | 
						|
    if( /^\s*#/ ) { $_ = qq{"\\n"\n}; next; }
 | 
						|
    s/\\/\\\\/g; # double the number of \'s
 | 
						|
    s/"/\\"/g;
 | 
						|
    s/^\s*/"/;
 | 
						|
    s/\n/\\n"\n/;
 | 
						|
  }
 | 
						|
  return @lines;
 | 
						|
}
 | 
						|
 | 
						|
for my $files (
 | 
						|
	[ "hexchat.pm.h",         # output file
 | 
						|
		"lib/HexChat.pm",      # input files
 | 
						|
		"lib/Xchat.pm",
 | 
						|
		"lib/HexChat/Embed.pm",
 | 
						|
		"lib/HexChat/List/Network.pm",
 | 
						|
		"lib/HexChat/List/Network/Entry.pm",
 | 
						|
		"lib/HexChat/List/Network/AutoJoin.pm",
 | 
						|
	],
 | 
						|
	[ "irc.pm.h",   # output file
 | 
						|
		"lib/IRC.pm" # input file
 | 
						|
	]
 | 
						|
) {
 | 
						|
	my ($output,@inputs) = @$files;
 | 
						|
 | 
						|
	open my $header, ">", $output or die "Couldn't open '$output': $!";
 | 
						|
 | 
						|
	print $header qq["BEGIN {\\n"\n];
 | 
						|
	for my $input ( @inputs ) {
 | 
						|
		(my $trimmed = $input) =~ s{^lib/}{};
 | 
						|
		print $header qq["\$INC{'$trimmed'} = 'Compiled into the plugin.';\\n"\n];
 | 
						|
	}
 | 
						|
	print $header qq["}\\n"\n];
 | 
						|
 | 
						|
	for my $input ( @inputs ) {
 | 
						|
		print $header qq["{\\n"\n];
 | 
						|
		print $header qq{"#line 1 \\"$input\\"\\n"\n};
 | 
						|
		print $header header( $input );
 | 
						|
		print $header qq["}\\n"\n];
 | 
						|
	}
 | 
						|
	close $header;
 | 
						|
}
 |