aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/modify_page_filename_in_plugin.mdwn
blob: a13c8b62ffeb3d2f6b49dcf381e8fec2354fa62b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
I'm writing a plugin to wikify c/c++ code.

By default ikiwiki generates xxx.html for a file called xxx.c.

The problem is that I occasionally have xxx.c and xxx.h in the same directory and there's a filename collision.

My solution is to allow plugins to provide a hook that sets the pagename. --[[/users/bstpierre]]

> You might also find the solution to [[bugs/multiple_pages_with_same_name]] helps you.  That patch is already applied. -- [[Will]]

    --- /usr/share/perl5/IkiWiki.pm.ORIG    2008-10-03 14:12:50.000000000 -0400
    +++ /usr/share/perl5/IkiWiki.pm 2008-10-07 11:57:26.000000000 -0400
    @@ -196,11 +196,32 @@

     sub pagename ($) {
            my $file=shift;

            my $type=pagetype($file);
    +
    +   if(defined $type &&
    +      exists $hooks{pagename} &&
    +      exists $hooks{pagename}{$type}) {
    +
    +      return $hooks{pagename}{$type}{call}($file);
    +
    +   } else {
    +
            my $page=$file;
            $page=~s/\Q.$type\E*$// if defined $type;
            return $page;
    +   }
     }

     sub htmlpage ($) {