ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* interfaces.definecommand fails with brackets inside string arguments
@ 2019-07-08 15:18 mf
  2019-07-09  8:31 ` Hans Hagen
  2019-07-09  8:37 ` Taco Hoekwater
  0 siblings, 2 replies; 4+ messages in thread
From: mf @ 2019-07-08 15:18 UTC (permalink / raw)
  To: mailing list for ConTeXt users

[-- Attachment #1: Type: text/plain, Size: 514 bytes --]

Hello list,
i've played a bit with interfaces.definecommand, that lets you define 
TeX macros from lua (see the "ConTeXt Lua Documents", 7.3 User interfacing).

I found that the commands defined by interfaces.definecommand fail when 
you pass string arguments that contain brackets.

I think cldf-int.lua needs a patch to support those kind of arguments.

In the meantime it's possible to bypass the problem passing arguments 
with brackets inside double braces, as in the MWE attached.

Best wishes,
Massimiliano

[-- Attachment #2: int_defcmd.tex --]
[-- Type: text/x-tex, Size: 373 bytes --]

\startluacode
  require("int_defcmd")
\stopluacode

\starttext
  \myCommand{Simple text}.\par

  \myCommand{\blank}

  % no problems with braces inside
  \myCommand{Text with {\it braces} inside}.\par

  % this fails, because there are brackets inside
  \myCommand{\blank[10pt]}

  % this does not fail, because of the double braces
  \myCommand{{\blank[10pt]}}

\stoptext

[-- Attachment #3: int_defcmd.lua --]
[-- Type: text/x-lua, Size: 194 bytes --]

function userdata.myCommand( content )
  context( content )
end

interfaces.definecommand {
  name = "myCommand",
  arguments = {
    { "content", "string" }
  },
  macro = userdata.myCommand
}

[-- Attachment #4: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: interfaces.definecommand fails with brackets inside string arguments
  2019-07-08 15:18 interfaces.definecommand fails with brackets inside string arguments mf
@ 2019-07-09  8:31 ` Hans Hagen
  2019-07-09  8:37 ` Taco Hoekwater
  1 sibling, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2019-07-09  8:31 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 7/8/2019 5:18 PM, mf wrote:
> Hello list,
> i've played a bit with interfaces.definecommand, that lets you define 
> TeX macros from lua (see the "ConTeXt Lua Documents", 7.3 User 
> interfacing).
> 
> I found that the commands defined by interfaces.definecommand fail when 
> you pass string arguments that contain brackets.
> 
> I think cldf-int.lua needs a patch to support those kind of arguments.
> 
> In the meantime it's possible to bypass the problem passing arguments 
> with brackets inside double braces, as in the MWE attached.
catched in next beta

-----------------------------------------------------------------
                                           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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: interfaces.definecommand fails with brackets inside string arguments
  2019-07-08 15:18 interfaces.definecommand fails with brackets inside string arguments mf
  2019-07-09  8:31 ` Hans Hagen
@ 2019-07-09  8:37 ` Taco Hoekwater
  2019-07-09 10:29   ` Hans Hagen
  1 sibling, 1 reply; 4+ messages in thread
From: Taco Hoekwater @ 2019-07-09  8:37 UTC (permalink / raw)
  To: mailing list for ConTeXt users



> On 8 Jul 2019, at 17:18, mf <massifr@fastwebnet.it> wrote:
> 
> Hello list,
> i've played a bit with interfaces.definecommand, that lets you define TeX macros from lua (see the "ConTeXt Lua Documents", 7.3 User interfacing).
> 
> I found that the commands defined by interfaces.definecommand fail when you pass string arguments that contain brackets.
> 
> I think cldf-int.lua needs a patch to support those kind of arguments.

FYI, it fails because definecommand() creates a \myCommand that is equivalent to this:

  \def\myCommand#1{\ctxlua {_clmm_('myCommand',[[#1]])}}

The [[…]] is the lua multi-line string syntax, like /* */ in C. 

So if the #1 expands into \blank[line], that produces [[\blank[line]]] resulting in a trailing extra ‘]’, which is a lua syntax error.


> 
> In the meantime it's possible to bypass the problem passing arguments with brackets inside double braces, as in the MWE attached.

Adding a space at the end also works, but a core patch makes sense to me.

Taco

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: interfaces.definecommand fails with brackets inside string arguments
  2019-07-09  8:37 ` Taco Hoekwater
@ 2019-07-09 10:29   ` Hans Hagen
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2019-07-09 10:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Taco Hoekwater

On 7/9/2019 10:37 AM, Taco Hoekwater wrote:
> 
> 
>> On 8 Jul 2019, at 17:18, mf <massifr@fastwebnet.it> wrote:
>>
>> Hello list,
>> i've played a bit with interfaces.definecommand, that lets you define TeX macros from lua (see the "ConTeXt Lua Documents", 7.3 User interfacing).
>>
>> I found that the commands defined by interfaces.definecommand fail when you pass string arguments that contain brackets.
>>
>> I think cldf-int.lua needs a patch to support those kind of arguments.
> 
> FYI, it fails because definecommand() creates a \myCommand that is equivalent to this:
> 
>    \def\myCommand#1{\ctxlua {_clmm_('myCommand',[[#1]])}}
> 
> The [[…]] is the lua multi-line string syntax, like /* */ in C.
> 
> So if the #1 expands into \blank[line], that produces [[\blank[line]]] resulting in a trailing extra ‘]’, which is a lua syntax error.
> 
> 
>>
>> In the meantime it's possible to bypass the problem passing arguments with brackets inside double braces, as in the MWE attached.
> 
> Adding a space at the end also works, but a core patch makes sense to me.
i'll re-implment it in a more modern way

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 : 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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-07-09 10:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-08 15:18 interfaces.definecommand fails with brackets inside string arguments mf
2019-07-09  8:31 ` Hans Hagen
2019-07-09  8:37 ` Taco Hoekwater
2019-07-09 10:29   ` Hans Hagen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).