]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/pagespec_relative_to_a_target.mdwn
title_natural patch merged
[ikiwiki.git] / doc / todo / pagespec_relative_to_a_target.mdwn
index e92988c3e2dadef44e802bf6053fbf7c5535ee6d..4757988e0a27b0b7cdcb8fa23978f151cc1bbad4 100644 (file)
@@ -30,9 +30,9 @@ Note that if you try to inline `*/blah` you will match `foo/blah`,
 themselves rather than any relatives of theirs.
 
 This patch is useful for (among other things) constructing blogging 
-systems where leaf nodes are organized hierarchically; using has_child,
+systems where leaf nodes are organized hierarchically; using `has_child`,
 you can inline only leaf nodes and ignore "intermediate" nodes.
-match_relative can be used recursively to match properties of arbitrary
+`match_relative` can be used recursively to match properties of arbitrary
 complexity: "show me all the pages who have children called foo that 
 have children called blah". I'm not sure what use it is, though.
 
@@ -57,7 +57,7 @@ diff -urNX ignorepats ikiwiki/IkiWiki/Plugin/relative.pm ikidev/IkiWiki/Plugin/r
 +
 +package IkiWiki::PageSpec;
 +
-+sub match_relative($$;@) { #{{{
++sub match_relative($$;@) {
 +      my $parent = shift;
 +      my $spec = shift;
 +      my %params = @_;
@@ -69,21 +69,29 @@ diff -urNX ignorepats ikiwiki/IkiWiki/Plugin/relative.pm ikidev/IkiWiki/Plugin/r
 +              }
 +      }
 +      return IkiWiki::FailReason->new("$parent can't match $spec against anything");
-+} #}}}
++}
 +
-+sub match_has_child($$;@) { #{{{
++sub match_has_child($$;@) {
 +      my $page = shift;
 +      my $childname = shift;
 +      my $spec;
-+      if ($childname) { #{{{
++      if ($childname) {
 +              $spec = "$page/$childname or $page/*/$childname";
-+      } #}}}
-+      else { #{{{
++      }
++      else {
 +              $spec = "$page/*";
-+      } #}}}
++      }
 +
 +      return match_relative($page, $spec, @_);
-+} #}}}
++}
 +
 +1
-</pre>
\ No newline at end of file
+</pre>
+
+[[!tag patch]]
+
+> This looks really interesting.  It reminds me of XPath and its conditionals.
+> Those might actually work well adapted to pagespecs.  For instance, to write
+> "match any page with a child blah", you could just write *[blah] , or if you
+> don't want to use relative-by-default in the conditionals, *[./blah].
+> -- [[JoshTriplett]]