2009-10-20 3 views
7

Quando si utilizza parenscript se eseguoPerché le funzioni di Parenscript sono state modificate in lettere minuscole?

 
(parenscript:ps 
(slot-value ($ "#mytextarea") 'selectionStart)) 

produce il javascript

 
$('#mytextarea').selectionstart; 

noti che selectionStart è ora selectionstart. Ha perso la S maiuscola sul Start! Come mantenere la S maiuscola in giro?

+2

Per impostazione predefinita, i moduli Common Lisp (che Parenscript prende come input) sono piegati a caso (in maiuscolo) dal lettore. 'selectionStart' diventerà' SELECTIONSTART', che Parenscript presumibilmente eseguirà il downcases quando genera l'output di JavaScript. – Pillsy

risposta

7

Parenscript convertirà automaticamente dalla lisca di convenzione di denominazione (trattini separano parole) a CamelCase, quindi:

(parenscript:ps 
(slot-value ($ "#mytextarea") 'selection-start)) 

risultati in

"$('#mytextarea').selectionStart;" 
+1

Se hai bisogno di una lettera maiuscola iniziale nel tuo simbolo, dovrai inserire il prefisso del nome con un asterisco. –

1

Come osservato Pillsy, tutti i simboli sono in maiuscolo by predefinito quando vengono letti dal compilatore Lisp. C'è un modo per disattivarlo, però. Vedere lo CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader), e la descrizione dell'accessorio readtable-case per i dettagli. A titolo di esempio, è possibile attivare la modalità “invertito” (che è probabilmente l'unica impostazione pratica che è anche tra maiuscole e minuscole), mettendo il seguente nel file sorgente Lisp:

#.(setf (readtable-case *readtable*) :invert) 

Purtroppo, ParenScript non sembra fare molto uso di un'impostazione personalizzata per il caso leggibile, anche se potrebbe (e, secondo me, dovrebbe) farlo.

+0

Come diresti che Parenscript può fare il miglior uso del caso leggibile? Il compilatore Parenscript ottiene il codice come espressioni S con simboli, quindi non sa come sono stati letti i nomi dei simboli. Ora c'è una funzione di compilazione dei file in cui puoi personalizzare il lettore, ma questo non funzionerà per tutti i codici PS . – vsedach

+0

@vsedach Questo è vero. Eppure, a mio parere, è piuttosto chiaro cosa fare con i simboli di maiuscole e minuscole (basta lasciarli così come sono), quindi l'unico problema rimasto è cosa fare con i simboli tutto maiuscolo e tutto minuscolo. Personalmente, suggerirei di assumere: INVERT di default o semplicemente rovesciare tutti questi simboli (per compatibilità con le versioni precedenti) e renderlo un'impostazione come READTABLE-CASE. –