prompt() ne crashe pas salement mais propose de retenter son coup
Parce que recommencer tout son câblage parce qu'on a foiré la redirection mail, c'est ultra-chiant.
This commit is contained in:
parent
56dc6e668c
commit
3137d3a315
1 changed files with 31 additions and 13 deletions
|
@ -7,7 +7,14 @@ Copyright (C) Frédéric Pauget
|
||||||
Licence : GPLv2
|
Licence : GPLv2
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys, re, os, tempfile, subprocess
|
import sys
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import tempfile
|
||||||
|
import subprocess
|
||||||
|
if not "/usr/scripts" in sys.path:
|
||||||
|
sys.path.append("/usr/scripts")
|
||||||
|
import cranslib.cransstrings
|
||||||
|
|
||||||
# Détermination de l'encodage
|
# Détermination de l'encodage
|
||||||
encoding = None
|
encoding = None
|
||||||
|
@ -290,21 +297,32 @@ def get_screen_size():
|
||||||
except:
|
except:
|
||||||
return (24, 80)
|
return (24, 80)
|
||||||
|
|
||||||
def prompt(prompt, defaut='', couleur='gras'):
|
def prompt(prompt, defaut=u'', couleur='gras'):
|
||||||
u"""
|
"""
|
||||||
Pose la question prompt en couleur (défaut gras), retourne la réponse.
|
Pose la question prompt en couleur (défaut gras), retourne la réponse.
|
||||||
"""
|
"""
|
||||||
sys.stdout.write(coul(prompt, couleur).encode(encoding))
|
prompt = cranslib.cransstrings.decode_dammit(prompt)
|
||||||
|
defaut = cranslib.cransstrings.decode_dammit(defaut)
|
||||||
|
# coul renvoie alors un unicode
|
||||||
|
prompt_s = coul(prompt, couleur)
|
||||||
if defaut :
|
if defaut :
|
||||||
sys.stdout.write((" [%s]" % defaut).encode(encoding))
|
prompt_s += u" [%s]" % defaut
|
||||||
sys.stdout.write(" ".encode(encoding))
|
# On fait tout pour ne pas faire crasher le script appelant
|
||||||
v = sys.stdin.readline()
|
# si on lève une erreur, on la rattrappe et on laisse une chance
|
||||||
|
# de refaire une proposition.
|
||||||
|
# On laisse néanmoins la possibilité de sortir sur un Ctrl+C
|
||||||
|
while True:
|
||||||
try:
|
try:
|
||||||
v = v.decode(encoding).strip()
|
v = raw_input(prompt_s.encode(encoding))
|
||||||
except UnicodeDecodeError as error:
|
v = cranslib.cransstrings.decode_dammit(v)
|
||||||
raise UnicodeDecodeError("%s: %r" % (error, v))
|
if not v:
|
||||||
if not v: v = defaut
|
v = defaut
|
||||||
return v
|
return v
|
||||||
|
except UnicodeDecodeError as error:
|
||||||
|
try:
|
||||||
|
print "UnicodeDecodeError rattrappée (chaîne : %s)" % v
|
||||||
|
except UnicodeDecodeError as error2:
|
||||||
|
print "UnicodeDecodeError catched but could not be displayed. Trying ASCII."
|
||||||
|
|
||||||
class anim :
|
class anim :
|
||||||
""" Permet de créer une animation :
|
""" Permet de créer une animation :
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue