# HG changeset patch # User Edouard Tisserant # Date 1619646051 -7200 # Node ID 0b05c2bce9e4bc905985946580be7c814c99b598 # Parent 5b23278ed81ff33481ee58faf89e9b2c44478f05 Fix expension of macros in pointers with default values. For example : in xsl decl widget_class(%name, *clsname="%nameWidget", match="widget[@type='%name']", mode="widget_class") alias template { | class `text **clsname` extends Widget{ content; | } }; widget_class('Input'); gives now : class InputWidget extends Widget{ } Without the fix, InputWidget would be %nameWidget diff -r 5b23278ed81f -r 0b05c2bce9e4 yml2/backend.py --- a/yml2/backend.py Thu Apr 08 21:11:30 2021 +0200 +++ b/yml2/backend.py Wed Apr 28 23:40:51 2021 +0200 @@ -247,9 +247,10 @@ resultParms = self.values.copy() macros = self.macros.copy() toDelete = [ key for key in resultParms.keys() ] + toPointers = {} for key in toDelete: if key[0] == "*": - del resultParms[key] + toPointers[key] = resultParms.pop(key) for key, value in callValues.items(): if key[0] == "%": macros[key] = value @@ -259,11 +260,7 @@ for cp in callParms: if i < len(self.parms): if self.parms[i][0] == "*": - cp = u(cp) - if "'" in cp: - pointers[self.parms[i][1:]] = '"' + cp + '"' - else: - pointers[self.parms[i][1:]] = "'" + cp + "'" + toPointers[self.parms[i]] = cp elif self.parms[i][0] == "%": macros[self.parms[i]] = u(cp) else: @@ -272,6 +269,10 @@ extraContent += u(cp) hasContent = True i += 1 + for k,v in toPointers.items(): + v = applyMacros(macros, u(v)) + q = '"' if "'" in v else "'" + pointers[k[1:]] = q + v + q result = "" for p, v in resultParms.items(): if p[0] == "'" or p[0] == '"':