如何在发布之前从 wmd markdown 编辑器拦截并修改 markdown?
-
21-09-2019 - |
题
我正在启动一个 Stack Exchange 站点,我希望能够在 Markdown 脚本获取问题文本之前和之后拦截问题文本。
我希望能够进入 [custom-tag]stuff to be altered[/custom-tag]
在问题窗口中,然后删除要更改的内容(因为标准 Markdown 引擎无法解释它)存储它,然后用要更改的内容替换输出中的标签由我自己的(服务器端)引擎处理。
我第一步就失败了;我找不到 markdown javascript。它是否隐藏在某个地方 /content/js/master.js
?
编辑:我将尝试通过一个我想要实现的目标的例子来使这一点更清楚。
我正在运行一个面向扑克的 SE 网站。玩家讨论扑克牌局,但他们不会输入牌局中发生的情况的纯文本记录,而是使用转换器使其更具可读性。
因此,不要将其发布在论坛上:
PokerStars Game #29112867044: Omaha Pot Limit ($100/$200) - 2009/06/07 19:51:27 ET Table 'Thomsen' 9-max Seat #2 is the button Seat 2: Mary & Joey ($14729 in chips) Seat 4: William ($28306 in chips) Mary & Joey: posts small blind $100 William: posts big blind $200 *** HOLE CARDS *** Mary & Joey: raises $400 to $600 William: calls $400 *** FLOP *** [6d Td 3c] William: checks Mary & Joey: checks *** TURN *** [6d Td 3c] [Kc] William: checks Mary & Joey: checks *** RIVER *** [6d Td 3c Kc] [7d] William: bets $600 Mary & Joey: folds Uncalled bet ($600) returned to William William collected $1198 from pot William: doesn't show hand *** SUMMARY *** Total pot $1200 | Rake $2 Board [6d Td 3c Kc 7d] Seat 2: Mary & Joey (button) (small blind) folded on the River Seat 4: William (big blind) collected ($1198)
他们将首先访问第 3 方网站并将其转换为:
PokerStars 底池限注奥马哈,$200.00 BB(2 人牌)
SB ($14729)
BB ($28306)
翻牌前:
SB 下注 $600,BB 跟注 $400
翻牌: ($1200) 6, 10, 3 (2名玩家)
BB 检查、SB 检查
转动:($1200) K (2名玩家)
BB 检查、SB 检查
河: ($1200) 7 (2名玩家)
BB 下注 600 美元, 1 折
总底池: $1200 |耙: $2
我想删除用户必须访问第 3 方网站、粘贴到他们手中、选择 HTML 输出,然后将结果复制并粘贴到问题中的步骤。相反,我希望他们能够用 [hand][/hand] 标签包装原始手测试,并且转换将自动处理。
编辑2:
经过进一步调查,这似乎是不可能的(没有大量 hacky JS)。首先需要解决 Ajax 跨域问题,才能使用任何外部服务进行转换。
然后,如果您设法覆盖 WMD 预览 - 您仍然需要弄清楚当实际答案正常呈现时该怎么做。一种方法是让 JS 在呈现任何问题或答案时查找标签,并使用转换后的版本更新 DOM - 这会降低性能 POV。
我想我必须等待并希望 SE 允许我们通过其他方式来覆盖这个问题。
解决方案
当您键入时,WMD 会自动填充预览元素,对吗?嗯,它需要有一个转换器来做到这一点。该转换器是 Showdown(你可以 在这里获取)。这是它的用法(从源文件中提取):
// Showdown usage:
var text = "Markdown *rocks*.";
var converter = new Showdown.converter();
var html = converter.makeHtml(text);
这意味着您可以不使用提供的预览元素,而是使用您自己填充的预览元素。此外,您还需要聆听 keypress
自己在文本区域上事件并解析文本,然后调用 Showdown。当输出符合您的要求时,将其放入您自己的预览元素中。