如何在发布之前从wmd降价编辑器中截取和修改markdown?

时间:2009-10-13 15:33:04

标签: javascript wmd

我正在启动Stack Exchange网站,我希望能够在markdown脚本获取之前和之后拦截问题文本。

我希望能够在问题窗口中输入[custom-tag]stuff to be altered[/custom-tag],然后将要更改的内容删除(因为标准降价引擎无法解释它)存储它,然后将输出中的标记替换为我自己(服务器端)引擎处理后要更改的内容。

我在第一步失败了;我找不到降价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)

他们将首先访问第三方网站并将其转换为:

PokerStars底池限注奥马哈,$ 200.00 BB(双手)
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

我想删除用户必须访问第三方网站的步骤,粘贴他们的手,选择HTML输出,然后将结果复制并粘贴到问题中。相反,我希望他们能够用[hand] [/ hand]标签包装原始手测试,转换将自动处理。

编辑2:

进一步调查看起来这是不可能的(没有很多hacky JS)。 首先需要解决Ajax跨域问题,以便使用任何外部服务进行转换。

然后,如果您设法覆盖WMD预览 - 您仍然需要确定在正常呈现实际答案时要执行的操作。一种方法是让JS在呈现任何问题或答案时查找标记,并使用转换后的版本更新DOM - 这会从性能POV中吮吸。

我想我必须等待并希望SE允许我们采用其他方式来覆盖它。

1 个答案:

答案 0 :(得分:0)

WMD会在您键入时自动填充预览元素,对吗?好吧,它需要在某个地方有一个转换器才能做到这一点。该转换器是Showdown(你可以obtain here)。这是它的用法(从源文件中提取):

// Showdown usage:

var text = "Markdown *rocks*.";

var converter = new Showdown.converter();
var html = converter.makeHtml(text);

这意味着你不能使用所提供的预览元素,而是自己填充自己的预览元素。此外,您需要自己收听textarea上的keypress事件并解析文本,然后调用Showdown。当输出是您喜欢的时候,将它扔到您自己的预览元素中。