2009-10-20 6 views
7

parenscript関数がすべて小文字に変更されているのはなぜですか?

を実行する場合にparenscriptを使用する場合
 
(parenscript:ps 
(slot-value ($ "#mytextarea") 'selectionStart)) 

javascript

 
$('#mytextarea').selectionstart; 

selectionStartselectionstartになります。それはStartの大文字のSを失った! どのように大文字のSを保持しますか?

+2

デフォルトでは、Common Lispの書式(Parenscriptは入力として扱われます)は、読者によって大文字に大文字に変換されます。 'selectionStart'は' SELECTIONSTART'になります.ParenscriptはおそらくJavaScript出力を生成するときにダウンケースになります。 – Pillsy

答えて

7

Parenscriptが自動的のでキャメルケースにLispの命名規則(ダッシュ単語を分離する)から変換されます:Pillsyすべてのシンボルがによって上部外装され、述べたように

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

シンボルに大文字の頭文字が必要な場合は、名前の前にアスタリスクを付ける必要があります。 –

1

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

結果それらがLispコンパイラによって読み込まれるときのデフォルトです。しかし、それをオフにする方法があります。詳細は、CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader),とアクセサの説明readtable-caseを参照してください。例として、あなたはLispのソースファイルに次のように置くことによって(ほぼ間違いなくも大文字と小文字が区別される唯一の現実的な設定である)「反転」モードを有効にすることができます。

残念ながら
#.(setf (readtable-case *readtable*) :invert) 

、ParenScriptはいないようですたとえそれが可能であれば(そして、私の意見ではそうするべきですが)、カスタムの読み込み可能なケースの設定を多く使うようにしています。

+0

Parenscriptはreadtable-caseを最大限に活用する方法を教えてください。 Parenscriptコンパイラは記号を含むs式としてコードを取得するので、シンボル名の読み方はわかりません。ここでは、読者をカスタマイズできるコンパイルファイル関数がありますが、これはすべてのPSコードでは機能しません。 – vsedach

+0

@vsedachそれは本当です。それでも、大文字と小文字の混在したシンボルをどうすればいいのかはっきりしているので、残っている唯一の問題はすべて大文字と小文字のすべてのシンボルについて何をすべきかということです。個人的には、デフォルトでINVERTするか、単に後方互換性のためにすべてのそのようなシンボルをダウンケーシングし、READTABLE-CASEと同じように設定することをお勧めします。 –

関連する問題