yml2/backend.py
changeset 78 0b05c2bce9e4
parent 74 c3c5a089072a
equal deleted inserted replaced
77:5b23278ed81f 78:0b05c2bce9e4
   245         if self.content:
   245         if self.content:
   246             hasContent = True
   246             hasContent = True
   247         resultParms = self.values.copy()
   247         resultParms = self.values.copy()
   248         macros = self.macros.copy()
   248         macros = self.macros.copy()
   249         toDelete = [ key for key in resultParms.keys() ]
   249         toDelete = [ key for key in resultParms.keys() ]
       
   250         toPointers = {}
   250         for key in toDelete:
   251         for key in toDelete:
   251             if key[0] == "*":
   252             if key[0] == "*":
   252                 del resultParms[key]
   253                 toPointers[key] = resultParms.pop(key)
   253         for key, value in callValues.items():
   254         for key, value in callValues.items():
   254             if key[0] == "%":
   255             if key[0] == "%":
   255                 macros[key] = value
   256                 macros[key] = value
   256             else:
   257             else:
   257                 resultParms[key] = value
   258                 resultParms[key] = value
   258         i = 0
   259         i = 0
   259         for cp in callParms:
   260         for cp in callParms:
   260             if i < len(self.parms):
   261             if i < len(self.parms):
   261                 if self.parms[i][0] == "*":
   262                 if self.parms[i][0] == "*":
   262                     cp = u(cp)
   263                     toPointers[self.parms[i]] = cp
   263                     if "'" in cp:
       
   264                         pointers[self.parms[i][1:]] = '"' + cp + '"'
       
   265                     else:
       
   266                         pointers[self.parms[i][1:]] = "'" + cp + "'"
       
   267                 elif self.parms[i][0] == "%":
   264                 elif self.parms[i][0] == "%":
   268                     macros[self.parms[i]] = u(cp)
   265                     macros[self.parms[i]] = u(cp)
   269                 else:
   266                 else:
   270                     resultParms[self.parms[i]] = cp
   267                     resultParms[self.parms[i]] = cp
   271             else:
   268             else:
   272                 extraContent += u(cp)
   269                 extraContent += u(cp)
   273                 hasContent = True
   270                 hasContent = True
   274             i += 1
   271             i += 1
       
   272         for k,v in toPointers.items():
       
   273             v = applyMacros(macros, u(v))
       
   274             q = '"' if "'" in v else "'"
       
   275             pointers[k[1:]] = q + v + q
   275         result = ""
   276         result = ""
   276         for p, v in resultParms.items():
   277         for p, v in resultParms.items():
   277             if p[0] == "'" or p[0] == '"':
   278             if p[0] == "'" or p[0] == '"':
   278                 p = eval(p)
   279                 p = eval(p)
   279             result += " "+ p + "=" + quoteattr(applyMacros(macros, u(v)))
   280             result += " "+ p + "=" + quoteattr(applyMacros(macros, u(v)))