On 2016-04-02 10:41, V.Krishn wrote:
(:test param1 param2 param3:)
CODE:
Markup('test','directives','/\\(:test\\s(.*?):\\)/',"CallbackTest");
...
Wondering if were possible to produce:
Array
(
    [0] => (:test param1 param2 param3:)
    [1] => test param1 param2 param3
    [name] => test
)
One benefit is I can write a single CallBack<fn> for all markups in given
recipe.

Place the directive name in () parentheses:

  '/\\(:(test)\\s(.*?):\\)/'

This way you'll have the name as $m[1], and the arguments in $m[2] (which you can parse with ParseArgs). Then, you can have more than one directive name:

  '/\\(:(name1|name2|name999)\\s(.*?):\\)/'

Petko

P.S. The "\\s" assumes that the directives always have a space after the name: "(:name:)" will not be recognized. You may want to use a different pattern, something like:

  '/\\(:(name1|name2|name999)(\\s.*?)?:\\)/'

the (\\s.*?)? part makes sure that if there are arguments, they will be preceded by a space; but there may not be arguments, then it will also work.

_______________________________________________
pmwiki-devel mailing list
pmwiki-devel@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-devel

Reply via email to