Re: conditional replace
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: conditional replace
- From: "Thomas A. Schmitz" <thomas.schmitz@...>
- Date: 2007年9月18日 22:40:12 +0200
On Sep 18, 2007, at 5:31 AM, Patrick Donnelly wrote:
It would probably be better to just let everything be done via stdin
and stdout, using pipes:
========
#!/usr/local/bin/lua
file = io.stdin:read("*all");
file = string.gsub(file, "localgreek(%b{})", function(lines)
return "localgreek"..string.gsub(lines, 'a', 'b');
end);
io.stdout:write(file);
=======
You will probably want to have the "return "localgreek" ..." part of
the code just call a function which iterates over your table of
substitutions for each capture. Notice that you need the "localgreek"
part concatenated otherwise you lose it.
HTH,
--
-Patrick Donnelly
Yes, this and Tomás's answer have helped a lot. I've got the function-
with-gsub and the iterator working, but I've hit another snag: I
build my array of substitutions like so:
subs = {
a = "α",
b = "β"
}
etc. But as soon as I try to stick some non-alphanumerical characters
in there like so:
>~h| = ᾖ
I get errors. Is it impossible to have keys to an array that are of
this form, or am I missing something obvious?
Thanks again!
Thomas