From 624c6db627be968e9a8debfd49961c3cbe23a293 Mon Sep 17 00:00:00 2001 From: "http://www.cse.unsw.edu.au/~willu/" Date: Sun, 12 Apr 2009 03:57:24 -0400 Subject: Note possible bug --- doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn (limited to 'doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn') diff --git a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn new file mode 100644 index 000000000..9d3c22921 --- /dev/null +++ b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn @@ -0,0 +1,14 @@ +It seems that the inline directive doesn't generate wikilinks to the pages it includes. For example I would expect the following to inline all bugs inside this bug report: + +\[[!inline pages="bugs/* and !*/discussion and backlink(bugs)" feeds=no postform=no archive=yes show="10"]] + +But here it is: + +[[!inline pages="bugs/* and !*/discussion and backlink(bugs)" feeds=no postform=no archive=yes show="10"]] + +and note that it only included the 'normal' wikilinks (and also note that this page is not marked done even though the done page is inlined). +One might also wonder if inline would make this page link to any internal links on those inlined pages too, but I think +that would be overkill. + +I'm not even really sure if this is a bug or defined behaviour, but I thought it might work and it didn't. Regardless, +the correct behaviour, whichever is decided, should be documented. -- [[Will]] -- cgit v1.2.3 From fee12a97b3b15f2ff7f89196e082047195179011 Mon Sep 17 00:00:00 2001 From: "http://www.cse.unsw.edu.au/~willu/" Date: Sun, 12 Apr 2009 04:33:20 -0400 Subject: Note that map has the same issue --- doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn') diff --git a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn index 9d3c22921..7d2004406 100644 --- a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn +++ b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn @@ -1,4 +1,4 @@ -It seems that the inline directive doesn't generate wikilinks to the pages it includes. For example I would expect the following to inline all bugs inside this bug report: +It seems that the [[ikiwiki/directive/inline]] directive doesn't generate wikilinks to the pages it includes. For example I would expect the following to inline all bugs inside this bug report: \[[!inline pages="bugs/* and !*/discussion and backlink(bugs)" feeds=no postform=no archive=yes show="10"]] @@ -12,3 +12,7 @@ that would be overkill. I'm not even really sure if this is a bug or defined behaviour, but I thought it might work and it didn't. Regardless, the correct behaviour, whichever is decided, should be documented. -- [[Will]] + +It appears that [[ikiwiki/directive/map]] also doesn't wikilink to the pages it links. Perhaps in each of these +cases there should be another parameter to the directive that allows linking to switched on. Just switching +it on universally at this point might break a number of people's pagespecs. -- [[Will]] -- cgit v1.2.3 From 461053db6ae0eb94492e937110ef32f82b292e50 Mon Sep 17 00:00:00 2001 From: "http://www.cse.unsw.edu.au/~willu/" Date: Mon, 13 Apr 2009 08:38:25 -0400 Subject: Add patch --- .../Inline_doesn__39__t_wikilink_to_pages.mdwn | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn') diff --git a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn index 7d2004406..89e0b9d69 100644 --- a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn +++ b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn @@ -16,3 +16,58 @@ the correct behaviour, whichever is decided, should be documented. -- [[Will]] It appears that [[ikiwiki/directive/map]] also doesn't wikilink to the pages it links. Perhaps in each of these cases there should be another parameter to the directive that allows linking to switched on. Just switching it on universally at this point might break a number of people's pagespecs. -- [[Will]] + +Here is a patch to make map link to its linked pages (when passed `link="yes"`). It is a bit problematic in that it uses a pagespec +to decide what to link to (which is why I wanted it). However, at the time the pagespec is used the links +for each page haven't finished being calculated (we're using the pagespec to figure out those links, +remember). This means that some pagespec match functions may not work correctly. Sigh. +It would be nice to find a topological ordering of the pages and scan them in that order +so that everything we need is found before we need it, but this patch doesn't do that (it would be +complex). + +If you just use simple pagespecs you'll be fine. Unfortunately I really wanted this for more complex +pagespecs. -- [[Will]] + + diff --git a/IkiWiki/Plugin/map.pm b/IkiWiki/Plugin/map.pm + index 3284931..57c0a7a 100644 + --- a/IkiWiki/Plugin/map.pm + +++ b/IkiWiki/Plugin/map.pm + @@ -13,7 +13,7 @@ use IkiWiki 3.00; + + sub import { + hook(type => "getsetup", id => "map", call => \&getsetup); + - hook(type => "preprocess", id => "map", call => \&preprocess); + + hook(type => "preprocess", id => "map", call => \&preprocess, scan => 1); + } + + sub getsetup () { + @@ -27,7 +27,9 @@ sub getsetup () { + sub preprocess (@) { + my %params=@_; + $params{pages}="*" unless defined $params{pages}; + - + + + + return if (!defined wantarray && !IkiWiki::yesno($params{link})); + + + my $common_prefix; + + # Get all the items to map. + @@ -42,6 +44,9 @@ sub preprocess (@) { + else { + $mapitems{$page}=''; + } + + if (!defined wantarray && IkiWiki::yesno($params{link})) { + + push @{$links{$params{page}}}, $page; + + } + # Check for a common prefix. + if (! defined $common_prefix) { + $common_prefix=$page; + @@ -62,6 +67,8 @@ sub preprocess (@) { + } + } + + + return if ! defined wantarray; + + + # Common prefix should not be a page in the map. + while (defined $common_prefix && length $common_prefix && + exists $mapitems{$common_prefix}) { -- cgit v1.2.3 From 69a814c011132bec884c405f3630f73406f74f9d Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 14 Apr 2009 15:51:25 -0400 Subject: not a bug --- doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn') diff --git a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn index 89e0b9d69..168c1b2c4 100644 --- a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn +++ b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn @@ -17,6 +17,12 @@ It appears that [[ikiwiki/directive/map]] also doesn't wikilink to the pages it cases there should be another parameter to the directive that allows linking to switched on. Just switching it on universally at this point might break a number of people's pagespecs. -- [[Will]] +> There's a simple reason why these directives don't generate a record of a +> wikilink between them and the pages they include: Semantically, inlining +> a page is not the same as writing a link to it. Nor is generating a map that +> lists a page the same as linking to it. I don't think this is a bug. +> --[[Joey]] + Here is a patch to make map link to its linked pages (when passed `link="yes"`). It is a bit problematic in that it uses a pagespec to decide what to link to (which is why I wanted it). However, at the time the pagespec is used the links for each page haven't finished being calculated (we're using the pagespec to figure out those links, -- cgit v1.2.3 From 825366a007a1145b9487cb3cd7e0180c96709fd8 Mon Sep 17 00:00:00 2001 From: "http://www.cse.unsw.edu.au/~willu/" Date: Tue, 14 Apr 2009 22:29:57 -0400 Subject: Respond, and close bug --- doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn') diff --git a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn index 168c1b2c4..32f9f1245 100644 --- a/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn +++ b/doc/bugs/Inline_doesn__39__t_wikilink_to_pages.mdwn @@ -23,6 +23,27 @@ it on universally at this point might break a number of people's pagespecs. -- > lists a page the same as linking to it. I don't think this is a bug. > --[[Joey]] +>> Fair enough. I guess we can mark this as [[done]] then. +>> +>> Just a bit of background on where I was going here... I was looking for +>> a simpler way of attacking [[todo/tracking_bugs_with_dependencies]]. +>> In particular, rather than introducing changes to the pagespec definition, +>> I wondered if you could use wiki pages as the defined pagespec and +>> introduce a 'match_mutual' function which matches whenever two pages +>> link to the same third page, then you don't need to alter the pagespec +>> handling code. +>> +>> But that requires being able use use a pagespec to decide what pages +>> are linked to. e.g. I want to make an 'openbugs' page that links to all +>> open bugs. Then I could make a 'readybugs' page that links to +>> `backlink(openbugs) and !mutualLink(openbugs)`. That is, all bugs +>> that are open and do not themselves link to an open bug. +>> +>> The problem with all this is that it introduces an ordering dependency, +>> as I noted below. I think the original proposal is better, because it +>> handles that ordering dependency in the definition of the pagespecs. +>> --[[Will]] + Here is a patch to make map link to its linked pages (when passed `link="yes"`). It is a bit problematic in that it uses a pagespec to decide what to link to (which is why I wanted it). However, at the time the pagespec is used the links for each page haven't finished being calculated (we're using the pagespec to figure out those links, -- cgit v1.2.3