On 3 May 2015 at 19:53, Paolo Di Tommaso <[email protected]> wrote: > I think that AST cannot work here because the string has been already > parsed.
Perhaps, but here's the idea - find all ConstantExpressions with String values and parse them again. If you find '%DONE' inside, try all VariableExpressions in scope with name 'DONE'. If found, replace the ConstantExpression with another one, having a GString that you assembled as a value. My AST skills are a bit rusty, does this seem feasible? Cheers, Dinko > > > p > > > On Sun, May 3, 2015 at 7:30 PM, Dinko Srkoč <[email protected]> wrote: >> >> On 3 May 2015 at 18:01, Paolo Di Tommaso <[email protected]> >> wrote: >> > Hi, >> > >> > I would need to implement a string literal in which the dollar char is >> > not >> > interpreted as variable placeholder, indeed to use a custom character to >> > interpolate variables. >> > >> > For example I would like define a string like this: >> > >> > >> > def DONE = 'Task completed' >> > >> > >> > def script = /% >> > >> > mv file_name $HOME >> > echo %DONE >> > /% >> > >> > >> > >> > In which the $HOME string is ignored while %DONE is interpolated as a >> > groovy variable. >> > >> > Is there any way to do that ? >> >> Probably not ... although, I imagine it might be possible using AST >> transformations. >> >> On a related note, it would be interesting to have the ability to use >> a different GString implementation, instead of GStringImpl. >> >> Cheers, >> Dinko >> >> > >> > >> > Cheers, >> > Paolo >> > >> > >> > > >
