From e220fbf35d727dca7ed835f797be89381afc873c Mon Sep 17 00:00:00 2001 From: joey Date: Sun, 28 Jan 2007 00:53:00 +0000 Subject: thoughts, responses --- ...conditional_text_based_on_ikiwiki_features.mdwn | 47 ++++++++++++++++++++-- doc/todo/conditional_underlay_files.mdwn | 15 ++++++- doc/todo/recentchanges.mdwn | 2 + 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/doc/todo/conditional_text_based_on_ikiwiki_features.mdwn b/doc/todo/conditional_text_based_on_ikiwiki_features.mdwn index 3cefc97a2..444f1c2d5 100644 --- a/doc/todo/conditional_text_based_on_ikiwiki_features.mdwn +++ b/doc/todo/conditional_text_based_on_ikiwiki_features.mdwn @@ -1,4 +1,10 @@ -I'd like to see some way to conditionally include wiki text based on whether the wiki enables or disables certain features. For example, [[helponformatting]], could use `\[[if (enabled smiley) """Also, because this wiki has the smiley plugin enabled, you can insert \[[smileys]] and some other useful symbols."""]]`, and a standard template for [[plugins]] pages could check for the given plugin name to print "enabled" or "disabled". +I'd like to see some way to conditionally include wiki text based on +whether the wiki enables or disables certain features. For example, +[[helponformatting]], could use `\[[if (enabled smiley) """Also, because +this wiki has the smiley plugin enabled, you can insert \[[smileys]] and +some other useful symbols."""]]`, and a standard template for [[plugins]] +pages could check for the given plugin name to print "enabled" or +"disabled". Some potentially useful conditionals: @@ -11,6 +17,41 @@ Some potentially useful conditionals: * `sourcepage pagespec`: true if pagespec includes the page corresponding to the file actually containing this content, rather than a page including it. * `included`: true if included on another page, via [[plugins/inline]], [[plugins/sidebar]], [[plugins/contrib/navbar]], etc. -You may or may not want to include boolean operations (`and`, `or`, and `not`); if you do, you could replace `disabled` with `not enabled`, and `no pagespec` or `none pagespec` with `not any pagespec` (but you may want to keep the aliases for simplicity anyway). You also may or may not want to include an `else` clause; if so, you could label the text used if true as `then`. +You may or may not want to include boolean operations (`and`, `or`, and +`not`); if you do, you could replace `disabled` with `not enabled`, and `no +pagespec` or `none pagespec` with `not any pagespec` (but you may want to +keep the aliases for simplicity anyway). You also may or may not want to +include an `else` clause; if so, you could label the text used if true as +`then`. -Syntax could vary greatly here, both for the [[PreprocessorDirective]] and for the condition itself. +Syntax could vary greatly here, both for the [[PreprocessorDirective]] and +for the condition itself. + +> I think this is a good thing to consider, although conditionals tend to +> make everything a lot more complicated, so I also want to KISS, and not +> use too many of them. +> +> I'd probably implement this using the same method as pagespecs, so 'and', +> 'or', '!', and paren groupings work. +> +> It could be thought of as simply testing to see if a pagespec matches +> anything, using a slightly expanded syntax for the pagespec, which would +> also allow testing for things like link(somepage), +> created_before(somepage), etc. +> +> That also gives us your "any pagespec" for free: "page or page or page". +> And for "all pagespec", you can do "page and page and page". +> +> For plugins testing, maybe just use "enabled(name)"? +> +> I'm not sure what the use cases are for thispage, sourcepage, and +> included. I don't know if the included test is even doable. I'd be +> inclined to not bother with these three unless there are use cases I'm +> not seeing. +> +> As to the syntax, to fit it into standard preprocessor syntax, it would +> need to look something like this: +> +> \[[if test="enabled(smiley)" """foo"""]] +> +> --[[Joey]] diff --git a/doc/todo/conditional_underlay_files.mdwn b/doc/todo/conditional_underlay_files.mdwn index e5dfdf420..03381943f 100644 --- a/doc/todo/conditional_underlay_files.mdwn +++ b/doc/todo/conditional_underlay_files.mdwn @@ -8,4 +8,17 @@ I'd like to see some way to include certain files from the underlay only when th * Include wikiicons/diff.png (and the wikiicons directory) only if you enable the CGI. * Include a hypothetical restructuredtexthelp.rst or similar for other formats only with those formats enabled. -I can see two good ways to implement this. Ideally, with [[conditional_text_based_on_ikiwiki_features]] available, ikiwiki could parse a page like conditionalpages.mdwn, which could contain a set of conditional-wrapped page names; that seems like the most elegant and ikiwiki-like approach. Alternatively, [[/ikiwiki.setup]] could contain a Perl-generated exclude option by default; that would work, but it seems hackish. \ No newline at end of file +I can see two good ways to implement this. Ideally, with +[[conditional_text_based_on_ikiwiki_features]] available, ikiwiki could +parse a page like conditionalpages.mdwn, which could contain a set of +conditional-wrapped page names; that seems like the most elegant and +ikiwiki-like approach. Alternatively, [[/ikiwiki.setup]] could contain a +Perl-generated exclude option by default; that would work, but it seems +hackish. + +> Another way might be to have a third directory of source files where +> plugins could drop in pages, and only build the files from there if their +> plugins were enabled. +> +> Using the conditionals in a page to control what other pages get built +> feels complex to me, --[[Joey]] diff --git a/doc/todo/recentchanges.mdwn b/doc/todo/recentchanges.mdwn index 4cba25692..f1620ecd0 100644 --- a/doc/todo/recentchanges.mdwn +++ b/doc/todo/recentchanges.mdwn @@ -26,3 +26,5 @@ > That would work rather well for pages like [[todo]] and [[bugs]], where > you want to know about any updates, not just initial > creation. --[[JoshTriplett]] + + > Of course you can use email subscriptions for that too.. --[[Joey]] -- cgit v1.2.3