Peter, thanks for the reply. Unfortunately, your method doesn't seem to work quite correctly either. The method you specified (and several variations on it that I tried) works for suppressing the "sop" markup on pages that don't have "(:sop:)" specified, but it removes all sectioning on the pages on which "(:sop:)" is specified.
It still seems to me that the most straightforward and sensible way to do this is to allow a "Markup()" call within a "Markup()" call, but that doesn't seem to work. So I'm still banging my head over this one. Scott On Sat, Feb 7, 2009 at 9:30 AM, Peter Bowers <[email protected]> wrote: > On Fri, Feb 6, 2009 at 8:33 PM, Scott Diegel <[email protected]>wrote: > >> I want a Markup() call to apply only to a given type of page, specifically >> if (:sop:) is included on a wiki page. The Markup will affect section >> numbering, but I still need the standard section markup to be used. >> > ... > >> Loading the file in which this is defined via config.php results in the >> section formatting being changed for all pages. I tried the following, and >> checked using ?action=ruleset whether the 'sop' rule was being applied; >> 'sopheaders' is being applied, but 'sop' is not. >> >> /* >> function SOPheaders(){ >> Markup('sop','>include','/^(!{2,4})(?:\s*)(.*)$/e', >> "MkSopNumTitle(strlen('$1'),PSS('$2'))"); >> } >> Markup('sopheaders','directives','/\\(:sop:\\)/e',"SOPheaders()"); >> */ >> >> Is this the right approach? Is there another approach I can try? >> > > That looks fine to me. And if SOPheaders is always active but sop only > active on the appropriate pages then that's exactly what you want, right? > My only concern is whether a markup that gets defined *during* markup will > get applied correctly (i.e., will it get put in the right order, etc. -- is > all that done inside the Markup() function or is it done separately in > pmwiki.php after config.php). I'd say if it works then you've got a great > solution. > > If, on the other hand, it's not working then this is what I would suggest: > > function MkSopNumTitle($arg1, $arg2, $MakeMeActive=false){ > static $MarkupActive = false; > > if ($MakeMeActive) { > $MarkupActive = true; > return(true); > } > if (!$MarkupActive) return; > > ... /* the rest of the code for MkSopNumTitle */ > } > Markup('sop','>include','/^(!{2,4})(?:\s*)(.*)$/e', > "MkSopNumTitle(strlen('$1'),PSS('$2'))"); > Markup('sopheaders','directives','/\\(:sop:\\)/e',"MkSopNumTitle(false, > false, true)"); > > However, your rule-based solution is superior as long as it actually > works. It's better to not even have a rule to process when you don't need > it... > > -Peter >
_______________________________________________ pmwiki-users mailing list [email protected] http://www.pmichaud.com/mailman/listinfo/pmwiki-users
