这是一个"事实发现"问题,看看使用showdown.js解析器创建ColdFusion UDF来解析服务器上的markdown是多么困难.已经有一个使用showdown.js的java实现(参见本文末尾的代码),我想看看如何为ColdFusion实现它.我没有Java经验,我不会特别称自己为"程序员",但我不希望这阻止我尝试.
摘要
我想运行Shadown.js服务器端,以便将markdown转换为HTML.
为什么?
保存两个版本的用户条目,一个是markdown格式,另一个是HTML格式,允许我们向最终用户显示原始markdown版本,以防他们想要编辑他们的条目.
为什么不使用服务器端解析器?
有两个原因:
有一个非常好的博客文章讨论了这个问题.
为什么不在客户端进行所有解析并发布两个版本?
这并不是一个安全的解决方案.我还认为用户可能能够使用不匹配的HTML发布降价.
有没有现有的实施?
有一个名为CFShowdown的实现,但它不是出于这个特定目的.相反,它是用于处理页面上的输出.上述博客的评论部分包含一个名为David的用户编写的纯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); …Run Code Online (Sandbox Code Playgroud)