#!/usr/bin/perl -W

# TP texte en perl
#
# Question III
# solution partielle!
# 
# Antoine Miné
# 26/01/2007

die "$0: il faut un argument" unless $#ARGV>=0;

# lit le fichier en entier dans $cont
# cela permet de reconnaître des motifs à cheval sur plusieurs lignes
# (non exploité actuellement...)
open (FILE,$ARGV[0]) || die "$ARGV[0]: $!";
$cont=join "",<FILE>;
close FILE;

# choisit le nom du fichier de sortie
$OUT=$ARGV[1] || "$ARGV[0].html";

# échappe le HTML
$cont =~ s/&/&amp;/g;
$cont =~ s/</&lt;/g;
$cont =~ s/>/&gt;/g;
$cont =~ s/"/&quot;/g;

# met en italique quelques mots-clefs
$cont =~ s!\b(for|while|do|if|else|break|continue|return|switch|case|default)\n!<i>$1</i>!g;

# met en gras les types
$cont =~ s!\b(unsigned|signed|char|short|int|long|float|double|void)\b!<b>$1</b>!g;
$cont =~ s!\b((struct|enum|union)\s+\w+)\b!<b>$1</b>!g;

# transforme les espaces et sauts de lignes en HTML
$cont =~ s/\n/<br>\n/g;
$cont =~ s/\r//g;
$cont =~ s/ /&nbsp;/g;

# affiche le résultat
open OUT,">$OUT";
print OUT "<html><head><title>$ARGV[0]</title></head>\n";
print OUT "<body><tt>$cont</tt></body></html>\n";
close OUT;
