Re: [NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV
Hello Hans, -- Původní e-mail -- { Od: Hans Hagen as you updated, it's just: \startluacode local defined = tokens.defined for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), defined(v), defined(v, true), defined(v, false)) end \stopluacode -- Původní e-mail -- } your solution gives me: " MyMacro false truefalse MyMacWithPars false truefalse Undefined false truefalse DoNothing false truefalse NonExisting false false false " which desn't recognize \Undefined - it should give 'false' in the 2nd column of results, like \NonExisting does. But I have another solution (asked in Czech TUG) - use of 'token.get_meaning(cs)': \startluacode for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), "get_meaning", token.get_meaning(v) or "(non-existing/undefined)") end \stopluacode - Produces: " MyMacro get_meaning ->Ahoj MyMacWithPars get_meaning #1#2->Something Undefined get_meaning (non-existing/undefined) DoNothing get_meaning -> NonExisting get_meaning (non-existing/undefined) " which is perfectly what I need. But thank you anyway for your effort. Best regards, Lukas ___ 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 ___
Re: [NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV
On 6/18/2020 10:27 AM, Lukas/ConTeXt wrote: Hello, I'm using Hans' macro suggested some time before. I've just updated Ctx MkIV and my sample code: \starttext \def\MyMacro{Ahoj} \def\MyMacWithPars#1#2{Something} \def\Undefined{} \let\Undefined\undefined \def\DoNothing{} \let\DoNothing\donothing \startluacode if CONTEXTLMTXMODE == 0 then local d = tokens.defined local c = tokens.create function tokens.defined(s,b) if b then return d(s) else return c(s).cmd_name == "undefined_cmd" end end end -- local defined = tokens.defined for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), defined(v), defined(v, true), defined(v, false)) end \stopluacode Aaa \stoptext as you updated, it's just: \startluacode local defined = tokens.defined for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), defined(v), defined(v, true), defined(v, false)) end \stopluacode - 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 : 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 ___
Re: [NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV
Hello, I need to check within Lua. My sample cases are very minimalistic - I'm working on more complicated task actually, where check-for-control-sequence-existence need to be performed run-time within Lua scope. Best, Lukas -- Původní e-mail -- Od: Hans van der Meer Komu: NTG ConTeXt Datum: 18. 6. 2020 12:25:42 Předmět: Re: [NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV " Why can you not simply use one of the doifundefined macro's? Something for example: \doifundefined{ExitStatus}{\gdef\ExitStatus{0}} % default to ok as in UNIX dr. Hans van der Meer " On 18 Jun 2020, at 10:27, Lukas/ConTeXt mailto:lpr.cont...@email.cz)> wrote: Hello, I'm using Hans' macro suggested some time before. I've just updated Ctx MkIV and my sample code: \starttext \def\MyMacro{Ahoj} \def\MyMacWithPars#1#2{Something} \def\Undefined{} \let\Undefined\undefined \def\DoNothing{} \let\DoNothing\donothing \startluacode if CONTEXTLMTXMODE == 0 then local d = tokens.defined local c = tokens.create function tokens.defined(s,b) if b then return d(s) else return c(s).cmd_name == "undefined_cmd" end end end -- local defined = tokens.defined for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), defined(v), defined(v, true), defined(v, false)) end \stopluacode Aaa \stoptext gives: " MyMacro false false false MyMacWithPars false false false Undefined false false false DoNothing false false false NonExisting false false false " IOW, I'm not able to determine whether a control sequence has not been defined (or has \undefined value) or not. Am I doing a trivial mistake or has anything changed? Thank you for patience... Lukas ___ 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 (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/ (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 ___
Re: [NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV
Why can you not simply use one of the doifundefined macro's? Something for example: \doifundefined{ExitStatus}{\gdef\ExitStatus{0}} % default to ok as in UNIX dr. Hans van der Meer > On 18 Jun 2020, at 10:27, Lukas/ConTeXt wrote: > > Hello, > I'm using Hans' macro suggested some time before. > I've just updated Ctx MkIV and my sample code: > > > \starttext > \def\MyMacro{Ahoj} > > \def\MyMacWithPars#1#2{Something} > > \def\Undefined{} > \let\Undefined\undefined > > \def\DoNothing{} > \let\DoNothing\donothing > > \startluacode >if CONTEXTLMTXMODE == 0 then >local d = tokens.defined >local c = tokens.create > >function tokens.defined(s,b) >if b then >return d(s) >else >return c(s).cmd_name == "undefined_cmd" >end >end >end > >-- > >local defined = tokens.defined > >for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", > "NonExisting" } do > print(string.format("\letterpercent-12s", v), defined(v), defined(v, > true), defined(v, false)) >end > \stopluacode > > Aaa > \stoptext > > > gives: > " > MyMacro false false false > MyMacWithPars false false false > Undefined false false false > DoNothing false false false > NonExisting false false false > " > > IOW, I'm not able to determine whether a control sequence has not been > defined (or has \undefined value) or not. > > Am I doing a trivial mistake or has anything changed? > > Thank you for patience... > > Lukas___ > 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 ___
[NTG-context] Checking existence of a macro (control sequence) by Lua - problem after updating MkIV
Hello, I'm using Hans' macro suggested some time before. I've just updated Ctx MkIV and my sample code: \starttext \def\MyMacro{Ahoj} \def\MyMacWithPars#1#2{Something} \def\Undefined{} \let\Undefined\undefined \def\DoNothing{} \let\DoNothing\donothing \startluacode if CONTEXTLMTXMODE == 0 then local d = tokens.defined local c = tokens.create function tokens.defined(s,b) if b then return d(s) else return c(s).cmd_name == "undefined_cmd" end end end -- local defined = tokens.defined for _, v in ipairs{ "MyMacro", "MyMacWithPars", "Undefined", "DoNothing", "NonExisting" } do print(string.format("\letterpercent-12s", v), defined(v), defined(v, true), defined(v, false)) end \stopluacode Aaa \stoptext gives: " MyMacro false false false MyMacWithPars false false false Undefined false false false DoNothing false false false NonExisting false false false " IOW, I'm not able to determine whether a control sequence has not been defined (or has \undefined value) or not. Am I doing a trivial mistake or has anything changed? Thank you for patience... Lukasopen source > level 1, order 1, name 'd:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-yes.mkiv' system > system > ConTeXt ver: 2020.06.17 18:56 MKIV beta fmt: 2020.6.18 int: english/english system > system > 'cont-new.mkiv' loaded open source > level 2, order 2, name 'd:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-new.mkiv' system > beware: some patches loaded from cont-new.mkiv close source> level 2, order 2, name 'd:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-new.mkiv' system > jobfiles > using path: d:/Lukas/ConTeXt/Styles system > files > jobname 'IsMacDef3', input 'D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv', result 'IsMacDef3' fonts > latin modern fonts are not preloaded languages > language 'en' is active open source > level 2, order 3, name 'D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv' fonts > preloading latin modern fonts (second stage) fonts > 'fallback modern-designsize rm 12pt' is loaded backend > xmp > using file 'd:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/lpdf-pdx.xml' pages > flushing realpage 1, userpage 1, subpage 1 close source> level 2, order 3, name 'D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv' close source> level 1, order 3, name 'd:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-yes.mkiv' system > start used files system > text: IsMacDef3 system > stop used files system > start used files system >1: filename=char-prv.lua filetype=tex format=tex foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/char-prv.lua fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/char-prv.lua usedmethod=database system >2: filename=cont-yes.mkiv filetype=tex foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-yes.mkiv fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-yes.mkiv usedmethod=database system >3: filename=publ-imp-default.lua filetype=lua foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/publ-imp-default.lua fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/publ-imp-default.lua usedmethod=otherwise system >4: filename=cont-new.mkiv filetype=tex foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-new.mkiv fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/cont-new.mkiv usedmethod=database system >5: filename=lang-exc.lua filetype=lua foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/lang-exc.lua fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/base/mkiv/lang-exc.lua usedmethod=otherwise system >6: filename=lang-us.lua filetype=lua foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/patterns/mkiv/lang-us.lua fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/patterns/mkiv/lang-us.lua usedmethod=otherwise system >7: filename=D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv foundname=D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv fullname=D:/Lukas/ConTeXt/Test/IsMacDef3.mkiv usedmethod=direct system >8: filename=lm.lfg filetype=tex foundname=d:/Ctx-Beta/tex/texmf-context/tex/context/fonts/mkiv/lm.lfg fullname=d:/Ctx-Beta/tex/texmf-context/tex/context/fonts/mkiv/lm.lfg usedmethod=database system >9: filename=lmroman12-regular filetype=otf format=otf foundname=d:/Ctx-Beta/tex/texmf/fonts/opentype/public/lm/lmroman12-regular.otf fullname=d:/Ctx-Beta/tex/texmf/fonts/opentype/public/lm/lmroman12-regular.otf usedmethod=database system > 10: filename=latinmodern-math.otf filetype=opentypefonts