Это вопрос «для установления фактов», чтобы понять, насколько сложно будет создать ColdFusion UDF для анализа разметки на сервере с помощью парсера showdown.js. Уже существует Java-реализация, использующая showdown.js (см. Код в конце этого сообщения), и я хочу увидеть, как реализовать ее для ColdFusion. У меня нет опыта работы с Java и я бы не стал называть себя "программистом", но я не хочу, чтобы это помешало мне попытаться.
Резюме
Я бы хотел запустить Shadown.js на стороне сервера, чтобы преобразовать Markdown в HTML.
Почему?
Сохранение двух версий пользовательской записи, одна в формате уценки, а другая в формате HTML, позволяет нам отображать исходную версию уценки для конечного пользователя на случай, если они захотят отредактировать свою запись.
Почему бы не использовать сервер- сторонний парсер?
По двум причинам:
Есть очень хорошая запись в блоге , в которой обсуждается проблема.
Почему бы не провести весь синтаксический анализ на стороне клиента и не опубликовать обе версии?
Это не кажется мне безопасное решение. Я также думаю, что пользователи потенциально смогут публиковать разметку с помощью HTML, который не соответствует.
Существуют ли какие-либо существующие реализации?
Существует одна реализация под названием CFShowdown , но она не для этой конкретной цели . Скорее, это для обработки вывода на странице. В разделе комментариев вышеупомянутого блога представлена чистая реализация Java, написанная пользователем по имени Дэвид:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("js");
try
{
jsEngine.eval(new InputStreamReader(getClass().getResourceAsStream("showdown.js")));
showdownConverter = jsEngine.eval("new Showdown.converter()");
}
catch (Exception e)
{
log.error("could not create showdown converter", e);
}
try
{
return ((Invocable) jsEngine).invokeMethod(
showdownConverter,
"makeHtml",
markdownString
) + "";
}
catch (Exception e)
{
log.error("error while converting markdown to html", e);
return "[could not convert input]";
}
Цель
Создание класса Java, который позволит нам использовать эту реализацию с ColdFusion UDF или пользовательский тег внутри компонента, что-то вроде
Поскольку у меня нет опыта работы с Java, я хочу получить несколько советов и комментариев от пользователей о том, где и как начать решать эту задачу. Я создал