(* COCANWIKI - a wiki written in Objective CAML.
* Written by Richard W.M. Jones <rich@merjis.com>.
* Copyright (C) 2004 Merjis Ltd.
- * $Id: wikilib.ml,v 1.11 2004/10/09 11:03:58 rich Exp $
+ * $Id: wikilib.ml,v 1.13 2004/10/14 15:57:15 rich Exp $
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
let generate_url_of_title (dbh : Dbi.connection) hostid title =
(* Create a suitable URL from this title. *)
let url =
- String.map (function '\000' .. ' ' | '<' | '>' | '&' | '"' | '+' -> '_'
+ String.map (function
+ '\000' .. ' ' | '<' | '>' | '&' | '"' | '+' | '#' | '%'
+ -> '_'
| c -> Char.lowercase c) title in
(* Check URL is not too trivial. *)
let url, clasz, title =
if Pcre.pmatch ~rex:url_re url then
escape_html_tag url, "external", url (* http://.... *)
- else if Pcre.pmatch ~rex:mailto_re url then (
+ else if Pcre.pmatch ~rex:mailto_re url then
obscure_mailto url, "mailto", url
- ) else (
+ else if String.length url >= 1 && url.[0] = '/' then (* /index etc. *)
+ escape_html_tag url, "internal", url
+ else (
let title = url in
(* Look up the 'URL' against the titles in the database and
* obtain the real URL.
"br", [];
] in
let headers = [ "h3", []; "h4", []; "h5", []; "h6", [] ] in
- let links = [ "a", ["href"] ] in
+ let links = [ "a", ["href"; "name"] ] in
let images = [ "img", ["src"; "alt"; "width"; "height"; "longdesc"] ] in
let forms = [