Thanks, but I’m still getting the same error. I’m thinking that it has something to do with the percent characters…

 

This here works just fine:

 

\startluacode

function test(s)

  result = string.gsub(s, 'x20', 'MATCH')

  context(result)

end

\stopluacode

 

\define[1]\test{\ctxlua{test("#1")}}

 

\starttext

\test{asdfx20} % -> asdfMATCH

\stoptext

 

But this here won’t:

 

\startluacode

function test(s)

  result = string.gsub(s, '%%20', 'MATCH')

  context(result)

end

\stopluacode

 

\define[1]\test{\ctxlua{test("#1")}}

 

\starttext

\test{asdf%20} % -> does not work

\stoptext

 

Any ideas?

 

Best,

Denis

 

 

Von: Hans van der Meer via ntg-context <ntg-context@ntg.nl>
Gesendet: Freitag, 21. Juli 2023 16:26
An: NTG ConTeXt <ntg-context@ntg.nl>
Cc: Hans van der Meer <havdmeer@ziggo.nl>
Betreff: [NTG-context] Re: Replacing %20 with spaces in xml attributes

 

Here in Terminal on my Mac:

 

21 ~: lua

Lua 5.4.6  Copyright (C) 1994-2023 Lua.org, PUC-Rio

> string.gsub('a%20b', '%%20', ' ')

a b        1

> (string.gsub('a%20b', '%%20', ' '))

a b

> ^D

21 ~: 



The first call returns the 1 giving the match, the extra ()'s get rid of that second return value.



yours sincerely

dr. Hans van der Meer

 

 



On 21 Jul 2023, at 12:37, denis.maier@unibe.ch wrote:

 

Hi,

 

I’m typesetting an XML document where the links to the images contain spaces which are encoded as %20

<graphic xlink:href="a%20filename%20with%20spaces.jpg"/>

 

Using this works in cases without spaces:

 

\startxmlsetups xml:fig:graphic

  \externalfigure[\xmlatt{#1}{xlink:href}]

\stopxmlsetups

 

This also works for normal spaces, but is there a way to decode/expand the %20s to regular spaces?

 

I’ve tried with some Lua, but I don’t really know how to pass data around.

 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\startluacode

function replaceSpaces(s)

  result = string.gsub(s, "%%20", " ")

  context(result)

end

\stopluacode

 

\define[1]\replaceSpaces{\ctxlua{replaceSpaces("#1")}}

 

\startxmlsetups xml:fig:graphic

  \externalfigure[\replaceSpaces{\xmlatt{#1}{xlink:href}}]

\stopxmlsetups

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 

Any hints, why this does not work?`

 

Also, maybe there’s a simpler way for this kind of scenario?


Best,

Denis

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

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