Hello re Abdel,
Disons que dans mon plan, il faut que le texte soit remplacé car je n'ai
aucun intérêt à garder le pavé en base64. De toute façon, le seul
intérêt du base64 à mon simple niveau, c'est d'être décodé, sinon c'est
rien que de la pollution, je ne vois même pas bien l'intérêt supérieur
par rapport au Quoted-printable. fin bon, ça c'est une autre histoire.
Sinon j'aime beaucoup la ligne:
text = edit.text if not edit.selectedText else edit.selectedText
J'avais oublié qu'on pouvait utiliser if ainsi, en dehors des list
comprehensions!
Ah que j'aimerais avoir plus de temps pour programmer!
bonne soirée,
J.-F.
Le 25/03/2016 20:15, _Abdel_ a écrit :
Resalut JF et la liste,
Voici une amélioration de la fonction permettant de convertir du
base64 en str.
Je t'ai ajouté une autre fonction permettant de réaliser l'opération
dans l'autre sens.
Afin que le texte converti ne soit pas supprimé ou remplacé, je pense
qu'il est préférable d'inscrire le résultat de la conversion à la
suite du texte converti, qu'en pense-tu?
Toute idée d'amélioration sera la bienvenue.
Voici les 2 fonctions qui devraient permettre de convertir du base64
vers str, et vissé-versa grâce aux raccourcis-clavier CTRL+SHIFT+F12
et CTRL+SHIFT+F11, que tu pourras bien sûr modifier à ta guise :
def decode_base64():
# Permet de convertir un texte base64 en str.
# s'applique à une sélection s'il y en a une, sinon au buffer entier.
# Le résultat sera alors inscrit à la suite du texte converti.
# Importation de base64.
import base64
# Création d'une variable pour la page courante.
edit = sp.window.curPage
# On définit le texte à convertir, selon l'état de la sélection.
text = edit.text if not edit.selectedText else edit.selectedText
# On vérifie quand même s'il y a réellement du texte.
if not text:
sp.window.alert("Aucun texte à décoder !", "Erreur")
return
try:
# On vérifie si on est en base64.
s = str(base64.b64decode(text).decode("utf-8"))
except ValueError:
# On est pas en base64, le texte n'est pas convertible.
sp.window.alert("Le texte à décoder n'est pas en base64",
"Erreur")
return
# On localise la fin du buffer ou de la sélection.
iEnd = edit.selectionEnd if edit.selectedText else edit.textLength
# On inscrit le résultat du décodage.
edit.insert(iEnd, "\r\nRésultat du décodage en str :\r\n" + s)
sp.window.addAccelerator("CTRL+SHIFT+F12", decode_base64)
def encode_str_to_base64():
# Permet de convertir un texte str en base64.
# s'applique à une sélection s'il y en a une, sinon au buffer entier.
# Le résultat sera alors inscrit à la suite du texte converti.
# Importation de base64.
import base64
# Création d'une variable pour la page courante.
edit = sp.window.curPage
# On définit le texte à convertir, selon l'état de la sélection.
text = edit.text if not edit.selectedText else edit.selectedText
# On vérifie quand même s'il y a réellement du texte.
if not text:
sp.window.alert("Aucun texte à encoder !", "Erreur")
return
# On applique notre conversion.
b = base64.b64encode(text.encode("utf-8"))
# On localise la fin du buffer ou de la sélection.
iEnd = edit.selectionEnd if edit.selectedText else edit.textLength
# On vérifie le résultat.
s = str(b)
s = s[2:-1] # On retire le préfixe b' et la fin '.
# On inscrit le résultat de la conversion à la suite du texte
converti.
edit.insert(iEnd, "\r\nRésultat de l'encodage en base64 :\r\n" + s)
sp.window.addAccelerator("CTRL+SHIFT+F11", encode_str_to_base64)
Bien amicalement,
Abdel.
----- Original Message ----- From: "_Abdel_" <[email protected]>
To: <[email protected]>
Sent: Friday, March 25, 2016 12:04 AM
Subject: [progliste] Re: 6pad++ et zone d'édition
Salut JF,
Tiens, essaie cette modif, en principe, pour le texte en base64
suivant "TW9uIHRleHRl", tu devrais avoir "Mon texte" comme résultat.
Pour plus d'informations, essaie de lire ce poste sur Stack overflow,
il parle de la base64 avec Python 3x :
http://stackoverflow.com/questions/8908287/base64-encoding-in-python-3
def decode_base64():
# s'applique à une sélection s'il y en a une, sinon au buffer entier
# getSelection est une fonction personnelle retournant le texte
entre selStart et selEnd.
import base64
edit = sp.window.curPage
if getSelection() == "":
# Il n'y a pas de sélection, on sélectionne donc tout le bufer.
edit.selectedText = edit.text
try:
# On vérifie si on est en base64.
s = base64.b64decode(getSelection()).decode("utf-8")
except UnicodeDecodeError:
# On est pas en base64, le texte n'est pas convertible.
sp.window.alert("Le texte à décoder n'est pas en base64",
"Erreur")
return
# On efface la sélection actuelle.
edit.text = edit.text.replace(edit.selectedText, "")
# On inscrit le résultat de la conversion à la place.
edit.selectedText = s
sp.window.addAccelerator("CTRL+SHIFT+F12", decode_base64)
Bien amicalement,
Abdel.
----- Original Message ----- From: "Jean-François Colas"
<[email protected]>
To: <[email protected]>
Sent: Thursday, March 24, 2016 9:09 PM
Subject: [progliste] 6pad++ et zone d'édition
Hello la ML,
Désolé, cet objet me plaît pas trop mais c'est pas une journée de
grive aujourd'hui...
Un truc qui m'échappe.
Je voulais doter 6Pad++ d'une fonction de décodage de données
base64. (Voir la fonction que je mets sous ma signature). Pour ça,
je passe une chaîne à base64.b64decode, j'obtiens en retour une
chaîne. Je voudrais que cette chaîne devienne partie intégrante de
window.curPage.text, à la place de ce que je décode. Et en
définitive, je me retrouve avec une seule ligne, sans retour chariot
ni saut de ligne, mais des \r et \n littéralement... Où se trouve le
problème? Je dois faire fausse route quelque part, quel autre chemin
pourrais-je prendre?
Merci,
J.-F.
def decode_base64():
# s'applique à une sélection s'il y en a une, sinon au buffer entier
# getSelection est une fonction personnelle retournant le texte
entre selStart et selEnd.
import base64
edit = sp.window.curPage
if getSelection() == "":
edit.select(0, edit.textLength-1)
s = str(base64.b64decode(getSelection()))
edit.delete(edit.selectionStart, edit.selectionEnd)
edit.selectionEnd = edit.selectionStart # sais pas si c'est utile
edit.insert(edit.position, s)
Progliste :
Pour se dsinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pices jointe sont activs leur taille est
limit 2 MO
Pour accder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv, je vous rpondrez en priv.
Progliste :
Pour se dsinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pices jointe sont activs leur taille est
limit 2 MO
Pour accder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv, je vous rpondrez en priv.
Progliste :
Pour se d�sinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est
limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv�, je vous r�pondrez en priv�.
Progliste :
Pour se d�sinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je
vous r�pondrez en priv�.