2009-10-20 13 views
7

Podczas korzystania parenscript gdybym wykonaćDlaczego funkcje parenscript zostały zmienione na wszystkie małe litery?

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

Produkuje javascript

 
$('#mytextarea').selectionstart; 

Zauważ, że selectionStart jest teraz selectionstart. Stracił wielką literę S na Start! Jak zachować wielkość liter S?

+2

Domyślnie, zwykłe formularze Lisp (które Parenscript przyjmuje jako dane wejściowe) są składane (na duże) przez czytnik. 'selectionStart' zmieni się na' SELECTIONSTART', który Parenscript prawdopodobnie obniży, gdy wygeneruje JavaScript. – Pillsy

Odpowiedz

7

Parenscript automatycznie konwersji z seplenieniem konwencji nazewnictwa (łączniki oddzielają słowa) na camelCase tak:

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

skutkuje

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

Jeśli potrzebujesz początkowej wielkiej litery w swoim symbolu, musisz poprzedzić nazwę gwiazdką. –

1

Jak zauważono Pillsy wszystkie symbole górnej obudowie przez domyślnie, gdy są odczytywane przez kompilator Lisp. Jest jednak sposób na wyłączenie tego. Szczegóły: CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader), i opis akcesora readtable-case. Jako przykład, można włączyć tryb „odwrócić” (co jest zapewne jedynym praktycznym ustawieniem, które jest również wielkość liter) poprzez wprowadzenie następujących w swojej Lisp pliku źródłowego:

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

niestety ParenScript nie wydaje w dużym stopniu wykorzystywać niestandardowe ustawienie przypadku do odczytu, nawet jeśli mogłoby to (i, moim zdaniem, powinno to zrobić).

+0

Jak można powiedzieć, że Parenscript może w jak najlepszy sposób wykorzystać przypadek do odczytu? Kompilator Parenscript pobiera kod jako wyrażeń s z symbolami, więc nie wie, w jaki sposób zostały odczytane nazwy symboli. Istnieje teraz funkcja kompilacji plików, w której można dostosować czytnik, ale to nie zadziała dla całego kodu PS . – vsedach

+0

@vsedach To prawda. Mimo to, moim zdaniem, jest całkiem jasne, co zrobić z symbolami o mieszanej wielkości (po prostu pozostaw je takimi, jakimi są), więc pozostaje tylko kwestia, co zrobić z wielkimi i małymi literami. Osobiście proponuję albo zakładać: ODWRÓCENIE domyślnie, albo po prostu przechodzenie w dół wszystkich takich symboli (dla kompatybilności wstecznej) i ustawienie go tak, jak w przypadku READTABLE-CASE. –

Powiązane problemy