On 07/23/2017 05:55 PM, Jaroslav Hajtmar wrote:
> 
> Thanx Hans for reply.
> 
>>
>> also, it depends on what you want to achieve ... maybe comparing macros is 
>> not needed at all
> 
> You have right, that anytime compares are not needed, but for my very needed 
> compares is not working in next eight examples. Problem is in expansions 
> macros with optional argument. For “normal” macros are compares without 
> problem as you see in last four examples….

Did you read my first reply?  Scanning for optional arguments is _inherently_ 
unexpandable.  Peeking ahead _always_ involves \futurelet which performs an 
assignment.  This can _never_ be edef-expanded.

> 
> 
> mymacro
> 
> \doifelse{\mymacro}{123}{equal content}{not equal content}
> 
> \doifsamestringelse{\mymacro}{123}{equal content}{not equal content}
> 
> \doifinstringelse{\mymacro}{123}{equal content}{not equal content}
> 
> \doifincsnameelse{\mymacro}{123}{equal content}{not equal content}
> 
> 
> \hairline
> 
> mymacro[123]
> 
> \doifelse{\mymacro[123]}{123}{equal content}{not equal content}
> 
> \doifsamestringelse{\mymacro[123]}{123}{equal content}{not equal content}
> 
> \doifinstringelse{\mymacro[123]}{123}{equal content}{not equal content}
> 
> \doifincsnameelse{\mymacro[123]}{123}{equal content}{not equal content}
> 
> 
> 
> \hairline
> 
> 
> myothermacro
> 
> \doifelse{\myothermacro}{123}{equal content}{not equal content}
> 
> \doifsamestringelse{\myothermacro}{123}{equal content}{not equal content}
> 
> \doifinstringelse{\myothermacro}{123}{equal content}{not equal content}
> 
> \doifincsnameelse{\myothermacro}{123}{equal content}{not equal content}
> 
> 
>>
>> there is not that much benefit defining these at the lua end if you directly 
>> feed back into tex anyway
> 
> sure, but I need define some macros automatically from luacode (is part of 
> custom lua library)
> 
> Thanx
> Jaroslav Hajtmar
> 
> 
> 
> 
>> 22. 7. 2017 v 13:23, Hans Hagen <pra...@wxs.nl <mailto:pra...@wxs.nl>>:
>>
>> On 7/22/2017 3:58 AM, Henri wrote:
>>> On Fri, 2017-07-21 at 11:25 +0000, Jaroslav Hajtmar wrote:
>>>> Hello ConTeXist.
>>>> Is there any way to evaluate of contents of two macros as I am showing in 
>>>> my minimal example?
>>>> I know, that problem is in expansion, but I dont know to resolve it.
>>>> My minimal example consist of piece lua code, because I am solving my 
>>>> problem in mixed codes (TeX
>>>> & Lua)
>>> Something similar has been asked before and it is not possible.  The 
>>> interfaces.definecommand
>>> function defines a new macro using \protected\def.  To compare as equal in 
>>> a \doif context, both
>>> operands have to _expand_ to the same thing (here 123).  Here \mymacro is 
>>> not expandable and thus
>>> only \doifelse{\mymacro}{\mymacro} will ever compare true.
>>> Furthermore, scanning for optional arguments (i.e. [...]) is inherently 
>>> non-expandable.  To get
>>> something expandable you must at least switch to mandatory arguments (i.e. 
>>> {...}).  Still, using
>>> interfaces.definecommand will still not be possible.  I believe that 
>>> scanning arguments is better
>>> done on the macro level than in Lua, but that's just my opinion.
>>
>> also, it depends on what you want to achieve ... maybe comparing macros is 
>> not needed at all
>>
>>>> Thanx for help.
>>>> Jaroslav Hajtmar
>>>>    \starttext
>>>>  \startluacode
>>>>                 interfaces.definecommand ("domymacro", {
>>>>                     arguments = { { "option", "string" }  },
>>>>                     macro = function (opt_1)
>>>>                        if #opt_1>0 then
>>>>                                context(opt_1)
>>>>                                else
>>>>                                context("123")
>>>>                                end
>>>>                     end
>>>>                                })
>>>>                 interfaces.definecommand("mymacro", {
>>>>                     macro = function ()
>>>>                       context.dosingleempty()
>>>>                       context["domymacro"]()
>>>>                     end
>>>>                                })
>>>> \stopluacode
>>
>> there is not that much benefit defining these at the lua end if you directly 
>> feed back into tex anyway
>>
>>>> \def\myothermacro{123}
>>>>  \hairline
>>>>  \mymacro[123]
>>>>  \mymacro
>>>>  \myothermacro
>>>>  \hairline
>>>>  \doifelse{\mymacro}{\mymacro[123]}{equal content}{not equal content}
>>>>  \doifsamestringelse{\mymacro}{\mymacro[123]}{equal content}{not equal 
>>>> content}
>>>>  \doifinstringelse{\mymacro}{\mymacro[123]}{equal content}{not equal 
>>>> content}
>>>>  \doifincsnameelse{\mymacro}{\mymacro[123]}{equal content}{not equal 
>>>> content}
>>>>    \hairline
>>>>  \doifelse{\mymacro}{\myothermacro}{equal content}{not equal content}
>>>>  \doifsamestringelse{\mymacro}{\myothermacro}{equal content}{not equal 
>>>> content}
>>>>  \doifinstringelse{\mymacro}{\myothermacro}{equal content}{not equal 
>>>> content}
>>>>  \doifincsnameelse{\mymacro}{\myothermacro}{equal content}{not equal 
>>>> content}
>>>>      \stoptext
>>>>      
>>>> ___________________________________________________________________________________
>>>> If your question is of interest to others as well, please add an entry to 
>>>> the Wiki!
>>>>
>>>> maillist : ntg-context@ntg.nl <mailto:ntg-context@ntg.nl> / 
>>>> 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
>>>> ___________________________________________________________________________________
>>> ___________________________________________________________________________________
>>> If your question is of interest to others as well, please add an entry to 
>>> the Wiki!
>>> maillist : ntg-context@ntg.nl <mailto:ntg-context@ntg.nl> / 
>>> 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
>>> ___________________________________________________________________________________
>>
>>
>> -- 
>>
>> -----------------------------------------------------------------
>>                                          Hans Hagen | PRAGMA ADE
>>              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
>>       tel: 038 477 53 69 | www.pragma-ade.nl <http://www.pragma-ade.nl/> | 
>> www.pragma-pod.nl <http://www.pragma-pod.nl/>
>> -----------------------------------------------------------------
>> ___________________________________________________________________________________
>> If your question is of interest to others as well, please add an entry to 
>> the Wiki!
>>
>> maillist : ntg-context@ntg.nl <mailto:ntg-context@ntg.nl> / 
>> http://www.ntg.nl/mailman/listinfo/ntg-context
>> webpage  : http://www.pragma-ade.nl <http://www.pragma-ade.nl/> / 
>> http://context.aanhet.net <http://context.aanhet.net/>
>> archive  : https://bitbucket.org/phg/context-mirror/commits/
>> wiki     : http://contextgarden.net <http://contextgarden.net/>
>> ___________________________________________________________________________________
> 
> 
> 
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
> 
> maillist : ntg-context@ntg.nl / 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
> ___________________________________________________________________________________
> 

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 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