hexchat/plugins/perl/generate_header

59 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;
}