Я пишу компилятор уценки в Erlang для использования на стороне сервера. Поскольку он должен работать с клиентами, я решил принять библиотеку на стороне клиента (showdown.js) в качестве спецификации, а затем протестировать мой код на совместимость с этим.
В первые пару итераций я построил 260 с лишним модульных тестов, которые проверяли, что моя программа выдает результат, совместимый с тем, что я считал действительной уценкой на основе чтения примечания к синтаксису .
Но сейчас я пытаюсь написать программу на javascript для генерации моих модульных тестов.
У меня есть такой ввод:
"3 > 4\na"
Я хочу запустить 'showdown', чтобы получить:
"<p>3 > 4\na</p>"
и я хочу добавить это в утверждение EUnit:
"?_assert(conv(\"3 > 4\na\") == \"<p>3 > 4\na</p>\"),",
, который является действительным синтаксисом Эрланга для модульного теста. Чтобы упростить жизнь и сделать генератор модульных тестов переносимым, я делаю это на веб-странице, добавляя несколько строк в файл javascript и затем просматривая страницу, чтобы получить новый набор модульных тестов внутри <textarea />
, который Затем вы копируете в модуль для запуска EUnit.
Проблема в том, что я не могу преобразовать разрывы строк в \n
в строке, поэтому я получаю:
"?_assert(conv(\"3 > 4
a\") == \"<p>3 > 4
a</p>\"),",
Я пытался преобразовать переводы строк в их экранированные версии, используя такой код:
text.replace("\\", "\\\\");
text.replace("\n", "\\n");
но без радости ...