On 11/16/2021 9:09 PM, Jairo A. del Rio via ntg-context wrote:
If I understand it correctly, you may need something like this...?

% Protection is key
\protected\def\inner[#1]{\empty}
% \outer is (or was) already defined in \CONTEXT
% Please use another name
\def\Outer{\inner[123] and \inner[some text] etc.}
\startluacode
local implement = interfaces.implement
local argument = tokens.scanners.argument
local function parseinner()
   local r = {}
   local str = argument()
   str = str:gsub("\\inner%s*(%b[])",function(s)r[#r+1] = s:sub(2,#s-1)end)
   context(table.concat(r," ")) -- Change " " by another spacer if needed
end
implement{name = "parseinner", public = true, actions = parseinner}
\stopluacode
\starttext
\parseinner{\Outer}
\stoptext

However, this will only work with very simple cases (no nesting, etc.). Hope this helps.
well, if we start talking weird code ...

\starttext

\tolerant\def\MyInnerOuter#1\MyInner[#2]#3\MyDone\ignorearguments{#2}

\def\MyOuter#1{\MyInnerOuter#1\MyDone\ignorearguments}

whatever: \MyOuter{\MyInner[oeps]}\par
whatever: \MyOuter{\InnerMy[oeps]}\par

\edef\ItWorksA{\MyOuter{\MyInner[oeps]}}
\edef\ItWorksB{\MyOuter{\InnerMy[oeps]}}

whatever: \meaningless\ItWorksA\par
whatever: \meaningless\ItWorksB\par

\stoptext

(1) we're tolerant so no problem when no match
(2) the ignore hack quits scanning because tex will keep looking

it's pretty fast and needs no lua magic, only a twisted mind

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : [email protected] / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to