[stats_cableurs2] Maj pour les adhésions glissantes, et rationalisation.
* Il y a une fonction pour afficher des tableaux, j'ai ajouté le colour swapping sur les lignes. * Le parsing des arguments est amélioré. * J'ai viré les tabulations. * Il faut aérer le code !
This commit is contained in:
parent
87cfd39b7f
commit
096a243c77
2 changed files with 119 additions and 130 deletions
|
@ -9,8 +9,8 @@
|
|||
# ---------
|
||||
#
|
||||
# Décorateur :
|
||||
# static_var(name, val), un décorateur pour créer une variable
|
||||
# statique dans une fonction
|
||||
# static_var([(name, val)]), un décorateur pour créer des variables
|
||||
# statiques dans une fonction
|
||||
#
|
||||
# Fonctions :
|
||||
# getTerminalSize(), une fonction qui récupère le couple
|
||||
|
@ -47,14 +47,15 @@ term_format = '\x1b\[[0-1];([0-9]|[0-9][0-9])m'
|
|||
dialog_format = '\\\Z.'
|
||||
sep_col = u"|"
|
||||
|
||||
def static_var(name, val):
|
||||
def static_var(couples):
|
||||
"""Decorator setting static variable
|
||||
to a function.
|
||||
|
||||
"""
|
||||
def decorate(fun):
|
||||
functools.wraps(fun)
|
||||
setattr(fun, name, val)
|
||||
for (name, val) in couples:
|
||||
setattr(fun, name, val)
|
||||
return fun
|
||||
return decorate
|
||||
|
||||
|
@ -220,7 +221,7 @@ def nostyle(dialog=False):
|
|||
return "\Zn"
|
||||
return "\033[1;0m"
|
||||
|
||||
@static_var("styles", {})
|
||||
@static_var([("styles", {})])
|
||||
def style(texte, what=[], dialog=False):
|
||||
"""
|
||||
Pretty text is pretty
|
||||
|
@ -396,7 +397,7 @@ def format_data(data, format):
|
|||
return "%.2f %s" % (data/oct_sizes[i], oct_names[i])
|
||||
return "%.0f o" % (data)
|
||||
|
||||
def tableau(data, titre=None, largeur=None, alignement=None, format=None, dialog=False, width=None, styles=None):
|
||||
def tableau(data, titre=None, largeur=None, alignement=None, format=None, dialog=False, width=None, styles=None, swap=[]):
|
||||
"""
|
||||
Retourne une chaine formatée repésentant un tableau.
|
||||
|
||||
|
@ -418,6 +419,10 @@ def tableau(data, titre=None, largeur=None, alignement=None, format=None, dialog
|
|||
o = octet
|
||||
Si None, s pour chaque colonne
|
||||
width : force la largeur
|
||||
|
||||
styles : applique une liste de styles, un à chaque colonne.
|
||||
|
||||
swap : Met styles à None et alterne une ligne sur deux niveau couleurs.
|
||||
"""
|
||||
|
||||
if data and isinstance(data, list):
|
||||
|
@ -428,6 +433,11 @@ def tableau(data, titre=None, largeur=None, alignement=None, format=None, dialog
|
|||
if format is None:
|
||||
format = ['s'] * nb_cols
|
||||
|
||||
if swap != []:
|
||||
styles = None
|
||||
else:
|
||||
swap = [None]
|
||||
|
||||
if styles is None:
|
||||
styles = [None] * nb_cols
|
||||
|
||||
|
@ -465,7 +475,15 @@ def tableau(data, titre=None, largeur=None, alignement=None, format=None, dialog
|
|||
|
||||
# Les données
|
||||
#############
|
||||
chaine += u'\n'.join([sep_col + sep_col.join([style(ligne[i], styles[i]) for i in range(nb_cols)]) + sep_col for ligne in data])
|
||||
j = 0
|
||||
for ligne in data:
|
||||
chaine += u"%s" % (sep_col,)
|
||||
if swap:
|
||||
chaine += sep_col.join([style(ligne[i], swap[j]) for i in range(nb_cols)])
|
||||
else:
|
||||
chaine += sep_col.join([style(ligne[i], styles[i]) for i in range(nb_cols)])
|
||||
chaine += u"%s\n" % (sep_col,)
|
||||
j = (j + 1) % len(swap)
|
||||
|
||||
return chaine
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue