Mise à jour du plugin

This commit is contained in:
Pierre-Elliott Bécue 2015-05-18 23:28:19 +02:00
parent 8cc8770ee4
commit d23bda8bd2
2 changed files with 9 additions and 17 deletions

View file

@ -35,6 +35,7 @@ class SafeEnvironment(dict):
},
# Fonction de base pour imprimer quelque chose
"out": self.out,
"_out": self._out,
# Le séparateur pour la forme: variable keysep valeur
"keysep": "=",
# Le charactère de commentaire
@ -73,12 +74,14 @@ class SafeEnvironment(dict):
"""Quand on fait un export, on utilise defvar pour incorporer la variable
et sa valeur dans le fichier produit"""
# On écrit mavariable = toto, en appliquant une éventuelle conversion à toto
self.out("%s%s%s\n" % (variable, self['keysep'], self.tostring(value)))
self.out("%s%s%s" % (variable, self['keysep'], self.tostring(value)))
def out(self, string):
"""C'est le print local. Sauf qu'on écrit dans self.stream. C'est pas
indispensable, car l'évaluation du fichier se fait déjà à sys.stdout
pointant vers ledit stream."""
def out(self, string=""):
"""C'est le print local. Sauf qu'on écrit dans self.stream"""
self._out("%s\n" % (string,))
def _out(self, string=""):
"""C'est le print local sans retour à la ligne."""
self.stream.write(string)
def tostring(self, value):

View file

@ -122,13 +122,6 @@ class PythonFile(Debuggable):
if environment is None:
environment = PythonEnv.SafeEnvironment(additionnal, self)
# On ne réaffecte stdout que sur le premier élément de la pile
have_to_get_out = False
if sys.stdout == sys.__stdout__:
sys.stdout = environment.stream
have_to_get_out = True
# Lors de l'exécution d'un fichier, on inclut
# toujours common (ie on l'exécute dans l'environnement)
environment.include("common")
@ -137,12 +130,8 @@ class PythonFile(Debuggable):
exec(self.data, environment)
except Exception:
sys.stderr.write('code: %r\n' % (self.data,))
sys.stdout = sys.__stdout__
raise
if sys.stdout != sys.__stdout__ and have_to_get_out:
sys.stdout = sys.__stdout__
have_to_get_out = False
return environment.stream.getvalue(), environment['info']
#+---------------------------------------------+
@ -192,7 +181,7 @@ def compileSource(source, filename="", logger=None):
newsource.write(line)
# Et un superbe \n.
newsource.write('\\n")')
newsource.write('")')
# %, affectation.
elif linetype == "%":