X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=scripts%2Fwikilib.ml;h=f4b309bafbd68be58c7faa27e4536e8b5d917ba4;hb=22c5eb291c13270f17f2cee76b760634f230347e;hp=b11b5900767124b8bce037dd45a99be005ca802d;hpb=019c80476c64b5cd86b6e9d115c86162b2ae462c;p=cocanwiki.git diff --git a/scripts/wikilib.ml b/scripts/wikilib.ml index b11b590..f4b309b 100644 --- a/scripts/wikilib.ml +++ b/scripts/wikilib.ml @@ -1,7 +1,7 @@ (* COCANWIKI - a wiki written in Objective CAML. * Written by Richard W.M. Jones . * 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 @@ -43,7 +43,9 @@ let nontrivial_re = Pcre.regexp ~flags:[`CASELESS] "[a-z0-9]" 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. *) @@ -216,9 +218,11 @@ let markup_link dbh hostid link = 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. @@ -435,7 +439,7 @@ let allowed_elements = "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 = [