(*
* bibtex2html - A BibTeX to HTML translator
* Copyright (C) 1997-2000 Jean-Christophe Filliātre and Claude Marché
*
* This software is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU General Public License version 2 for more details
* (enclosed in the file GPL).
*)
(*i $Id: html.ml,v 1.20 2006/03/15 09:14:15 filliatr Exp $ i*)
(*s Production of HTML syntax. *)
open Printf
let bgcolor = ref None
let css = ref None
let open_document ch ftitle =
output_string ch
"\n\n";
output_string ch "\n\n
\n";
output_string ch ""; ftitle(); output_string ch "\n";
begin match !css with
| None -> ()
| Some f ->
fprintf ch "\n" f
end;
output_string ch "\n\n";
begin match !bgcolor with
| None -> output_string ch "\n"
| Some color -> fprintf ch "\n" color
end;
flush ch
let close_document ch =
output_string ch "\n\n";
flush ch
let open_balise ch s =
output_string ch ("<" ^ s ^ ">");
flush ch
let close_balise ch s =
output_string ch ("" ^ s ^ ">");
flush ch
let open_anchor ch s =
open_balise ch ("a name=\"" ^ s ^ "\"")
let close_anchor ch =
close_balise ch "a"
let absolute_url_regexp = Str.regexp "\\(.+://\\)\\|#\\|mailto:"
let is_absolute_url u =
try Str.search_forward absolute_url_regexp u 0 = 0 with Not_found -> false
let is_relative_url u = not (is_absolute_url u)
let open_href ch s =
open_balise ch ("a href=\"" ^ s ^ "\"")
let close_href ch =
close_balise ch "a"
let open_h ch i =
open_balise ch (sprintf "h%d" i)
let close_h ch i =
close_balise ch (sprintf "h%d" i)
let open_em ch =
open_balise ch "em"
let close_em ch =
close_balise ch "em"
let open_b ch =
open_balise ch "b"
let close_b ch =
close_balise ch "b"
let paragraph ch =
open_balise ch "p"
let h_title ch n title =
let s = sprintf "h%d" n in
open_balise ch s;
output_string ch title;
close_balise ch s
let h1_title ch s = h_title ch 1 s
let h2_title ch s = h_title ch 2 s