aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/Allow_filenames_that_are_all_type.mdwn
blob: bebbcafa8a4855d6895976a74802f92f5f1c33b8 (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
36
37
38
39
40
41
This is a [[patch]] to allow filenames that are just the type.  The best example of this is wanting to
pass a `Makefile` through one of the [[todo/syntax_highlighting/]] plugins.  With this patch,
if the plugin can process files of type `.Makefile` then it will also process `Makefile`.

I put this patch on the [[todo/syntax_highlighting/]] page a while ago, but it seemed to get
lost because it didn't have its own bug to track it.  Now it does :).  -- [[Will]]

> This changes `pagename()`, but what about `pagetype()`?
> Many things in ikiwiki check if `pagetype($file)` returns
> true to see if it's a page, etc. --[[Joey]] 

>> I think this patch is complete.  It does not change `pagename()`, it
>> changes `pagetype()` (the diff is fairly old - line numbers may have
>> changed).
>>
>> Before this patch, `pagetype()` required a `.` in the page name.  With
>> this patch it doesn't, as long as the extension is being kept.  This allows
>> the filename to be all extension.  `pagename()` relies on `pagetype()`
>> to detect the type.  `pagename()` also removes the extension on some
>> pages, but this patch only affects pages where the extension isn't
>> removed.
>>
>> So, yeah, I think this patch is complete. :)  -- [[Will]]

>>> Thanks, [[applied|done]], but I added a noextension parameter,
>>> since having keepextension allow files with no extension didn't make
>>> sense. Also, made it work for pages in subdirs.. --[[Joey]] 

    diff --git a/IkiWiki.pm b/IkiWiki.pm
    index 8d728c9..1bd46a9 100644
    --- a/IkiWiki.pm
    +++ b/IkiWiki.pm
    @@ -618,6 +618,8 @@ sub pagetype ($) {
     	
     	if ($page =~ /\.([^.]+)$/) {
     		return $1 if exists $hooks{htmlize}{$1};
    +	} elsif ($hooks{htmlize}{$page}{keepextension}) {
    +		return $page;
     	}
     	return;
     }