2014-06-05 32 views
2

我試過在線搜索,但似乎涵蓋此主題的主題非常稀少,並且 - 缺少關於PageDown's Google Code page的信息,似乎沒有太多的主題(什麼更全面)使用Pagedown的PreBlockGamut鏈接

我想添加自定義格式使用PageDown鍵來無論是preBlockGamutpreSpanGamut,兩者都沒有完成的事情,我希望它做的事。

我想要做的事情應該很簡單:我希望任何出現在兩個代字之間的文本在<del>標籤之間格式化。

我已經試過各種方法至今所preBlockGamut,這一個提供最接近我正在尋找:

converter.hooks.chain("preBlockGamut", function (text, rbg) { 
    return text.replace(/~(.*?)~/, function (whole, inner) { 
    return "<del>" + inner +"</del>"; 
    }); 
}); 

這隻能有些如預期的,因爲它包圍第一個這樣的文字實例如下:<del>T{inner text}</del>T。這隻發生在第一個實例,我也不知道T的來源,因爲 - 就我可以告訴我的代碼而言 - 它不在正則表達式或替換中的任何地方。

我知道preBlockGamut應該用於塊級語句,所以我試過類似的方法preSpanGamut,沒有更好的運氣。

有沒有人在這裏有任何這方面的經驗,可以提供一些洞察這個問題?我顯然做錯了什麼,但我似乎無法弄清楚在哪裏。

回答

2

花了一段時間瀏覽PageDown的文件後,我發現我的問題的來源。

Markdown.Converter.js具有以下線:

// attacklab: Replace ~ with ~T 
// This lets us use tilde as an escape char to avoid md5 hashes 
// The choice of character is arbitray; anything that isn't 
// magic in Markdown will work. 
text = text.replace(/~/g, "~T"); 

此之前執行的preBlockGamut鉤將採取影響,導致~{inner text}~成爲~T{inner text}~T然後解析爲<del>T{inner text}</del>T