Моя проблема в том, что CL-WHO начинает каждое выражение с одного рынка котировок, когда оно превращает S-выражения Lisp в вывод html. Это нормально в большинстве случаев, но это проблема, так как я связываю свой файл с внешним файлом javascript. Я пытаюсь сделать этот проект простым, и поскольку никто из разработчиков javascript в моей команде не знает Common Lisp, использование parenscript, вероятно, выходит за рамки уравнения. Вот пример моей проблемы и одной из ошибок в моей программе:
:onclick "alertUser('id')"
Когда в html-документе нажимается определенный элемент, это должно вызвать функцию JavaScript с именем alertUser, а идентификатор тега должен быть передан функции JavaScript в качестве аргумента. Но независимо от того, что я делаю, CL-WHO преобразует эту строку в одинарные кавычки, поэтому я получаю недопустимое выражение. Вот что этот код преобразует в:
onclick='alertUser('id')'>
Все это одинарные кавычки, поэтому 'alertUser (') передается как первая строка, которая явно недействительна, и я получаю область синтаксиса в моих инструментах разработчика. Я подумал, что могу решить эту проблему, используя функцию форматирования с escape-символами . Это будет равно:
CL-USER> (format t "\"alertUser('id')\"")
"alertUser('id')"
NIL
CL-USER>
Но когда я попробую это с CL-WHO:
:onclick (format nil "\"alertUser('id')\"")
Это означает:
onclick='"alertUser('locos-tacos-order')"'>
Что также является недействительным HTML. Как видите, CL-WHO начнёт с одинарной цитаты, несмотря ни на что. Затем я попробовал функцию CL-WHO fmt:
:onclick (fmt "\"alertUser('locos-tacos-order')\"")
Когда я использую функцию fmt, она полностью избавляется от выражения my: onclick при преобразовании в html!:
id='id'"alertUser('id')">
Наконец, я попробовал функцию str и получил аналогично недействительный вывод для моей первоначальной попытки:
onclick='"alertUser('id')"'
Очевидно, что если я напишу это в чистом HTML, это будет выглядеть так:
onclick="alertUser('id')">
Что действительно.
Мой вопрос состоит в том, как просто разрешить CL-WHO использовать двойные кавычки в этих ситуациях вместо одинарных кавычек?