diff options
-rw-r--r-- | IkiWiki/Render.pm | 3 | ||||
-rw-r--r-- | doc/todo.mdwn | 7 | ||||
-rw-r--r-- | doc/wikilink.mdwn | 10 | ||||
-rwxr-xr-x | ikiwiki | 21 |
4 files changed, 27 insertions, 14 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index 98c86bac8..df24fd568 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -84,8 +84,7 @@ sub finalize ($$$) { #{{{ my $page=shift; my $mtime=shift; - my $title=basename($page); - $title=~s/_/ /g; + my $title=pagetitle(basename($page)); my $template=HTML::Template->new(blind_cache => 1, filename => "$config{templatedir}/page.tmpl"); diff --git a/doc/todo.mdwn b/doc/todo.mdwn index 7926fd954..f01753e33 100644 --- a/doc/todo.mdwn +++ b/doc/todo.mdwn @@ -100,15 +100,10 @@ Requirements: * Need to keep track of the globlists in the index file. - Probably need to redesign the index file format to allow for this sort of future expansion. -* Need to make _ render as " " in page titles. -* Also need to support as much other punctuation as possible in page - titles, ideally all of it. Punctuation that is illegal in filenames for - various good reasons should be embedded encoded in the filenames. Blogs - tend to have more punctuation-intensive page titles than wikis. * Need to pick a good token and note that the token will need to be passed multiple parameters. Possibly something like this: - [[rss pages="myblog/*" show="30"]] + [[embed pages="myblog/*" show="30"]] ## revisit case diff --git a/doc/wikilink.mdwn b/doc/wikilink.mdwn index ac0ec9d56..1da5fb64d 100644 --- a/doc/wikilink.mdwn +++ b/doc/wikilink.mdwn @@ -11,5 +11,15 @@ play when linking between [[SubPage]]s. WikiLinks can be entered in any case you like, the page they link to is always lowercased. +While a WikiLink is limited to alphanumerics and only a few special +charaters, it is possible to create page names containing other characters: + +* To display a page name with a space in it, use "_" in the WikiLink, for + example, [[Multi_Word_Page_Name]]. +* For any other special character, you can use "__nnnn__" where `nnnn` is the + unicode character number. For example, + [[This_page_name_is__44___uselessly__44___a_complete_sentence__46__]] + Limiting use of this to when you really need it is a good idea. + Note that if the file linked to by a WikiLink looks like an image, it will be displayed inline on the page. @@ -19,7 +19,7 @@ sub getconfig () { #{{{ %config=( wiki_file_prune_regexp => qr{((^|/).svn/|\.\.|^\.|\/\.|\.html?$)}, wiki_link_regexp => qr/\[\[([^\s\]]+)\]\]/, - wiki_file_regexp => qr/(^[-A-Za-z0-9_.:\/+]+$)/, + wiki_file_regexp => qr/(^[-A-Za-z0-9_.\&;:\/+]+$)/, verbose => 0, wikiname => "wiki", default_pageext => ".mdwn", @@ -92,11 +92,11 @@ sub checkconfig () { #{{{ unless exists $config{wikistatedir}; if ($config{svn}) { - require IkiWiki::RCS::SVN; + require IkiWiki::Rcs::SVN; $config{rcs}=1; } else { - require IkiWiki::RCS::Stub; + require IkiWiki::Rcs::Stub; $config{rcs}=0; } } #}}} @@ -234,6 +234,13 @@ sub isinlinableimage ($) { #{{{ $file=~/\.(png|gif|jpg|jpeg)$/; } #}}} +sub pagetitle ($) { #{{{ + my $page=shift; + $page=~s/__(\d+)__/&#$1;/g; + $page=~y/_/ /; + return $page; +} #}}} + sub htmllink ($$;$$) { #{{{ my $page=shift; my $link=shift; @@ -248,7 +255,9 @@ sub htmllink ($$;$$) { #{{{ $bestlink="$page/".lc($link); } - return $link if length $bestlink && $page eq $bestlink; + my $linktext=pagetitle($link); + + return $linktext if length $bestlink && $page eq $bestlink; # TODO BUG: %renderedfiles may not have it, if the linked to page # was also added and isn't yet rendered! Note that this bug is @@ -258,7 +267,7 @@ sub htmllink ($$;$$) { #{{{ $bestlink=htmlpage($bestlink); } if (! grep { $_ eq $bestlink } values %renderedfiles) { - return "<a href=\"$config{cgiurl}?do=create&page=$link&from=$page\">?</a>$link" + return "<a href=\"$config{cgiurl}?do=create&page=$link&from=$page\">?</a>$linktext" } $bestlink=File::Spec->abs2rel($bestlink, dirname($page)); @@ -266,7 +275,7 @@ sub htmllink ($$;$$) { #{{{ if (! $noimageinline && isinlinableimage($bestlink)) { return "<img src=\"$bestlink\">"; } - return "<a href=\"$bestlink\">$link</a>"; + return "<a href=\"$bestlink\">$linktext</a>"; } #}}} sub indexlink () { #{{{ |