[NTG-context] lua lpeg + utf8

Thomas A. Schmitz thomas.schmitz at uni-bonn.de
Sun Jan 6 18:53:40 CET 2019


Hi everybody,

best wishes for (the still new) 2019! My question is not strictly a 
ConTeXt problem, but about the way luatex (and pure Lua) can handle utf8 
in lpeg. Here is my Lua example:

mystring = "abcdeφὴὰabcde"

local replace_table = {
   a = "y",
   c = "z",
   ὴ = "ή",
   ὰ = "ά",
}

function replace(s)
	local patt = (lpeg.Cs(1)) / replace_table
	local parser = lpeg.Cs((patt + 1)^0)
	t = parser:match(s)
	return t
end

newstring = replace(mystring)

print(newstring)

This will successfully replace "a" and "c," but not "ὴ" or "ὰ" because 
lpeg.Cs(1) sees only the first byte of these multibyte characters. Pure 
Lua complains with an error message; luatex runs, but does not do the 
replacement. What would be a good way to work around this limitation?

All best

Thomas


More information about the ntg-context mailing list