Oggi concludo la telenovela serie sulla conversione maiuscolo|minuscolo all’interno della clipboard. Le puntate precedenti sono qui e qui.
Avevo pensato di poter utilizzare il comando echo con l’opzione dell’here document ma non ci sono riuscito. Non so se è una mia carenza o il metodo non è praticabile. Sono ricorso a cat, soluzione meno bella perché ho dovuto creare un file temporaneo in /tmp.
Il codice è commentato e semplicissimo (non cambia granché dalla puntata precedente) per cui eccolo, senza preamboli:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/usr/bin/newlisp ;; get state of CapsLock (set 'clON (% (int (slice (string (exec "xset q | grep LED")) -4 2)) 2)) ;; get clipboard content (set 'txt (join (exec "xsel -ob") "\n")) ;; case translate (if (= clON 1) (set 'txt (upper-case txt)) (set 'txt (lower-case txt))) ;; park in a temp file (set 'tmpf "/tmp/Mm") (write-file tmpf txt) ;; put the temp file it in the clipboard (set 'cmd (join (list "cat " tmpf " | xsel -ib"))) (exec cmd) (delete-file tmpf) (exit) |
Si potrebbe ancora modificarlo rendendolo più lispico ma poi si perderebbe la possibilità di confronto con la versione del passo successivo, questo che segue immediatamente.
Se a questo punto qualcuno ponesse la domanda “ma si deve fare con newLISP?” risponderei “certo che no! ecco la versione con Python”.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess, os
# stato di capslock
cmd = "xset q | grep LED"
ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
output = (ps.communicate()[0]).strip()
clON = int(output[-2:]) % 2
# contenuto della clipboard
cmd = "xsel -ob"
ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
txt = (ps.communicate()[0])
# converto
if clON:
txt = txt.upper()
else:
txt = txt.lower()
# lo parcheggio in un file temporaneo
tmpf = "/tmp/Mm"
f = open(tmpf, 'w')
f.write(txt)
f.close()
# copio il file nella clipboard
#cmd = "cat"
cmd = "cat {0} | xsel -ib".format(tmpf)
os.system(cmd) #, "", shell = True)
os.remove(tmpf)
Sono quasi equivalenti. Ecco un dump del test effettuato.
Sì newLISP converte anche le lettere non ASCII ![]()
Ma siccome è un’inutility il discorso, per me, si chiude qua
OK, c’è stata una lunga pausa nell’esame di Ruby. L’ultima puntata è stata questa, tanto tempo fa: 





















OK, lo so che non serve a niente ma voglio relazionarvi. Si continua dal post precedente:
ahemmm, sì, ma posso smettere quando voglio, dai 

Ieri c’è stato il compleanno di OK, panico.
Ormai il blog ha un suo pubblico affezionato, ecco un riassunto:
A me è servito parecchio: quando devi raccontare a altri delle cose te le devi chiarire per bene
Il futuro? Chissà! Ma continuerò, anzi prossimamente cose nuove, probabilmente, forse 



















