2009-10-20 30 views
7

Al utilizar parenscript si ejecuto¿Por qué las funciones de parenscript cambian a minúsculas?

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

Produce el javascript

 
$('#mytextarea').selectionstart; 

Tenga en cuenta que selectionStart es ahora selectionstart. Perdió la S mayúscula en el Start! ¿Cómo mantengo esa S mayúscula?

+2

Por defecto, los formularios Common Lisp (que Parenscript toma como entrada) están doblados en mayúsculas (mayúsculas) por el lector. 'selectionStart' se convertirá en' SELECTIONSTART', que Parenscript presumiblemente luego desciende cuando genera salida de JavaScript. – Pillsy

Respuesta

7

Parenscript convertirá automáticamente desde el Lisp (convención de nomenclatura guiones que separan palabras) a CamelCase, así que:

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

resultados en

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

Si necesita una letra mayúscula inicial en su símbolo, tendrá que ponerle un asterisco con un prefijo. –

1

Como observó Pillsy, todos los símbolos son superior con carcasa por predeterminado cuando el compilador Lisp los lee. Sin embargo, hay una manera de apagarlo. Vea el CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader), y la descripción del acceso readtable-case para más detalles. A modo de ejemplo, puede activar el modo “invertido” (que es posiblemente el único entorno práctico que es también entre mayúsculas y minúsculas) poniendo lo siguiente en el archivo de origen Lisp:

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

Por desgracia, no parece ParenScript para hacer mucho uso de una configuración de caso de lectura adaptable, aunque podría (y, en mi opinión, debería) hacerlo.

+0

¿Cómo diría que Parenscript puede hacer el mejor uso de readtable-case? El compilador de Parenscript obtiene el código como s-expresiones con símbolos, por lo que no sabe cómo se leyeron los nombres de los símbolos. Ahora hay una función de compilar archivos en la que puede personalizar el lector, pero eso no funcionará para todos los códigos PS. . – vsedach

+0

@vsedach Eso es verdad. Aún así, en mi opinión, es bastante claro qué hacer con los símbolos de mayúsculas y minúsculas (simplemente déjalos como están), así que el único problema que queda es qué hacer con los símbolos mayúsculos y minúsculos. Personalmente, sugeriría asumir: INVERTIR de manera predeterminada o simplemente deshabilitar todos esos símbolos (para compatibilidad con versiones anteriores) y convertirlo en un ajuste como READTABLE-CASE. –

Cuestiones relacionadas