Python, la puissance du langage
Pour graffle2svg , j’ai besoin de parser du RTF (format pseudo ouvert). En gros, pour définir les couleurs de police, je dois transformer une déclaration du type
defn= '{\colortbl;\red255\green255\blue255;\red75\green75\blue75;}foo'
en un tableau du type [”#000000”, “#ffffff”, “#4b4b4b”] (le premier point-virgule signifie déclaration vide, donc couleur par défaut).
En python, avec les expressions rationnelles, c’est limpide :
endidx = defn.find("}", startidx) primitive_reg = re.compile(r"(\D+)(\d+)") for colordef in defn[startidx-1:endidx-1].split(";"): color = {'red':0, 'green':0, 'blue':0} for primitivedef in colordef.split('\\'): primitive_match = primitive_reg.match(primitivedef) if primitive_match is not None: primitive, value = primitive_match.groups() color[primitive] = int(value) self.color.append("#%02x"%color['red'] + "%02x"%color['green'] + "%02x"%color['blue'])
Dix lignes, pas mal !
two comments

C’est effectivement une étape dans la traduction de progit, pour pouvoir localiser les figures. Je n’apparais pas dans les contributeurs pour la simple et bonne raison que j’ai déjà envoyé des correctifs, mais que les auteurs n’ont pas daigné les intégrer. Je continue mon petit bonhomme de chemin avec un version perso (encore une fois, vive git)
Le plus étonnant dans l’histoire est que le format .graffle est utilisé par l’application Omnigraffle, spécifique à MacOSX. Je m’attendais plutôt à trouver du ps ou du pdf dans les sections texte, pas un format issu de Redmond.
“graffle2svg” ? Un autre de tes projets libres ? C’est juste un besoin croisé sur le chemin de progit ? Tu n’apparais pas comme contributeur sur la page du projet…