当使用parenscript时,如果我执行以下代码:
(parenscript:ps (slot-value ($ "#mytextarea") 'selectionStart))
它会产生以下javascript代码:
$('#mytextarea').selectionstart;
请注意,selectionStart
现在变成了selectionstart
。它失去了Start
上的大写字母!我该如何保留那个大写字母S?
ParenScript会自动将lisp命名惯例(使用破折号分隔单词)转换为CamelCase,因此:
(parenscript:ps
(slot-value ($ "#mytextarea") 'selection-start))
"$('#mytextarea').selectionStart;"
正如Pillsy所指出的那样,当Lisp编译器读取符号时,默认情况下所有符号都是大写的。不过,有一种方法可以关闭这个功能。请参见CLHS, 23.1.2 (Effect of Readtable Case on the Lisp Reader)以及访问器readtable-case
的描述以获取详细信息。例如,您可以通过将以下内容放入Lisp源文件中来启用“反转”模式(这可能是唯一实用的、同时也区分大小写的设置):
#.(setf (readtable-case *readtable*) :invert)
不幸的是,ParenScript似乎不太使用自定义readtable-case设置,尽管它可以(并且在我看来应该)这样做。
selectionStart
将变成SELECTIONSTART
,然后Parenscript在生成JavaScript输出时可能会将其转换为小写。 - Pillsy