兩個javascript庫用做在線代碼編輯器都是非常優秀的選擇
我這兩天對這兩個類庫做了簡單的研究,重點是語法高亮的自定義:
ace editor的主要思路是生成狀態機,從一個startstate開始,使用正則表達式匹配,返回token,然后next,next...這樣返回token,其中用到push和pop這樣的概念,以便於匹配多行注釋這樣類似的情況:
/*
dfsadfas
asdfasd
*/
codemirror的主要思路是提供字節流,通過對給定字節流的讀取返回token,提供的讀取方法非常方便好用,狀態數據可以自定義,在全局中使用。
我要做到的是縮排處理,這種情況下,只有codemirror比較適合了。
比如,我希望##開頭的行及緊隨此行並且縮進級別較高的行形成的段落辨認為注釋:
##注釋
注釋注釋注釋
注釋注釋注釋
不是注釋不是注釋不是注釋