import java.io.*;

public class ConvertiInferno {
  public static void main (String[] args) throws IOException {

    File fileInferno = new File("INFERNO.TXT");
    File fileHTML = new File ("inferno.html");
    FileReader streamInferno = new FileReader(fileInferno);
    
    // verifica dell'esistenza del file .html
    FileWriter streamHTML = null;
    try {
      streamHTML = new FileWriter(fileHTML);
    }
    catch(IOException e) {
      System.out.println("Impossibile aprire il file.");
      System.out.println("JVM ha sollevato l'eccezione: " + e);
      System.exit(0);
    }
    PrintWriter pwHTML = new PrintWriter(streamHTML);
    
    String titolo = "INFERNO :: DIVINA COMMEDIA :: DANTE ALIGHIERI";
    
    // l'header del mio file html e l'inizio del body
    pwHTML.print("<html>\n<head>\n<title>" + titolo + "</title>\n</head>\n");
    pwHTML.print("<body bgcolor=\"#ffffff\">\n");
    
    // contenuto del body
    int carattereLetto;
    int numeroTilde = 0, numeroAsterischi = 0;
    while( (carattereLetto=streamInferno.read()) != -1 ) {
      if(carattereLetto == (int)'\n')
        pwHTML.print("<br>\n");
      else if (carattereLetto == (int)' ')
        pwHTML.print("&nbsp;");
      else if ((carattereLetto == (int)'~') && (numeroTilde == 0)) {
        pwHTML.print("<i>");
        numeroTilde++;
      }
      else if ((carattereLetto == (int)'~') && (numeroTilde == 1)) {
        pwHTML.print("</i>");
        numeroTilde=0;
      }
      else if ((carattereLetto == (int)'*') && (numeroAsterischi == 3)) {
        pwHTML.print("</b>");
        numeroAsterischi=0;
      }
      else if ((carattereLetto == (int)'*') && (numeroAsterischi == 0)) {
        pwHTML.print("<b>");
        numeroAsterischi++;
      }
      else if (carattereLetto == (int)'*')
        numeroAsterischi++;
      else
        pwHTML.write(carattereLetto);
    }
    
    // fine body
    pwHTML.print("</body>\n</html>");
      
    // chiudiamo lo stream
    pwHTML.close();
  }
}