[Date Index][Thread Index]
[Date Prev][Date Next][Thread Prev][Thread Next]
Re: RegExp, Double Quotes and ^E
- From: Denis Barbier <nospam@thanx>
- Date: Tue, 20 Feb 2001 23:37:18 +0100
On Tue, Feb 20, 2001 at 04:47:11PM +0100, Axel Beckert wrote:
> Hi
>
> Axel Beckert wrote:
> > [...]
> > DESTINATION=<get-var DESTINATION>
> [results in]
> > DESTINATION="/fnord/"
>
> There is another little problem: Those double quotes shouldn't be
> there in the last line.
Hi Axel,
the problem is that double quotes may have a special meaning under some
circumstances, e.g. within attributes. In body tags, it is assumed to
be a normal character, so when read it is replaced by ^E and output
routines revert this change.
> But matching regexps against that strings with doublequotes seems not
> to work (single-backslash quoted double quotes according to the WML
> documentation at engelschall.com):
>
> <subst-in-var val "^\"(.*)\"$" "\\1" />
Hmmm, we should have this discussion on sw-wml-dev, i must explain
some internals here to explain what happens. Basically, some extra
characters are added by mp4h around `val', so you have to write
<subst-in-var val "^\003*\"(.*)\"\004*$" "\\1" />
> The debugging output says always ^E instead of double quotes:
Forgot to replace ^E by double quotes in debugging output, will be
fixed.
> Oh and another BTW: The solution from my last does not work, if values
> go over several lines (in pass 2, so you may use pass 1 to concatenate
> several lines using backslashes)...
The right solution is to use a new <disjoin> function (patch attached).
First try:
<set-var <disjoin %body>>
Seems to work, but the quotes are still here as explained above.
2nd try:
<set-var <disjoin <subst-in-string %body "\"" "">>>
But now, it won't work if values are more than 1 word long.
Last try:
<subst-in-string "=LT=set-var <disjoin
<subst-in-string %body "\"([^\"]*)\""
"=LT=compound>\\1=LT=/compound>">>>" "=LT=" "<">
Hey, isn't that nice? ;)
But maybe you should use wml_p3_eperl to parse your conf files, things
would be much easier.
--
Denis Barbier
WML Maintainer
______________________________________________________________________
Website META Language (WML) www.engelschall.com/sw/wml/
Official Support Mailing List sw-wml@engelschall.com
Automated List Manager majordomo@engelschall.com