㰀栀琀洀氀㸀ഀഀ
㰀洀攀琀愀 挀栀愀爀猀攀琀㴀∀甀琀昀ⴀ㠀∀㸀ഀഀ
CodeMirror代码美化高亮插件demo - 我爱模板网 www.5imoban.net
㰀氀椀渀欀 爀攀氀㴀∀猀琀礀氀攀猀栀攀攀琀∀ 栀爀攀昀㴀∀氀椀戀⼀挀漀搀攀洀椀爀爀漀爀⸀挀猀猀∀⼀㸀ഀഀ
㰀猀挀爀椀瀀琀 猀爀挀㴀∀氀椀戀⼀挀漀搀攀洀椀爀爀漀爀⸀樀猀∀㸀㰀⼀猀挀爀椀瀀琀㸀ഀഀ
㰀⼀栀攀愀搀㸀ഀഀ
㰀琀攀砀琀愀爀攀愀 挀氀愀猀猀㴀∀昀漀爀洀ⴀ挀漀渀琀爀漀氀∀ 椀搀㴀∀挀漀搀攀∀ 渀愀洀攀㴀∀挀漀搀攀∀㸀ഀഀ
// Demo code (the actual new parser character stream implementation)
ഀഀ
function StringStream(string) {
ऀ 琀栀椀猀⸀瀀漀猀 㴀 㬀ഀഀ
this.string = string;
ऀ紀ഀഀ
ऀ匀琀爀椀渀最匀琀爀攀愀洀⸀瀀爀漀琀漀琀礀瀀攀 㴀 笀ഀഀ
done: function() {return this.pos >= this.string.length;},
ऀ 瀀攀攀欀㨀 昀甀渀挀琀椀漀渀⠀⤀ 笀爀攀琀甀爀渀 琀栀椀猀⸀猀琀爀椀渀最⸀挀栀愀爀䄀琀⠀琀栀椀猀⸀瀀漀猀⤀㬀紀Ⰰഀഀ
next: function() {
ऀऀ椀昀 ⠀琀栀椀猀⸀瀀漀猀 㰀 琀栀椀猀⸀猀琀爀椀渀最⸀氀攀渀最琀栀⤀ഀഀ
return this.string.charAt(this.pos++);
ऀ 紀Ⰰഀഀ
eat: function(match) {
ऀऀ瘀愀爀 挀栀 㴀 琀栀椀猀⸀猀琀爀椀渀最⸀挀栀愀爀䄀琀⠀琀栀椀猀⸀瀀漀猀⤀㬀ഀഀ
if (typeof match == "string") var ok = ch == match;
ऀऀ攀氀猀攀 瘀愀爀 漀欀 㴀 挀栀 ☀☀ 洀愀琀挀栀⸀琀攀猀琀 㼀 洀愀琀挀栀⸀琀攀猀琀⠀挀栀⤀ 㨀 洀愀琀挀栀⠀挀栀⤀㬀ഀഀ
if (ok) {this.pos++; return ch;}
ऀ 紀Ⰰഀഀ
eatWhile: function(match) {
ऀऀ瘀愀爀 猀琀愀爀琀 㴀 琀栀椀猀⸀瀀漀猀㬀ഀഀ
while (this.eat(match));
ऀऀ椀昀 ⠀琀栀椀猀⸀瀀漀猀 㸀 猀琀愀爀琀⤀ 爀攀琀甀爀渀 琀栀椀猀⸀猀琀爀椀渀最⸀猀氀椀挀攀⠀猀琀愀爀琀Ⰰ 琀栀椀猀⸀瀀漀猀⤀㬀ഀഀ
},
ऀ 戀愀挀欀唀瀀㨀 昀甀渀挀琀椀漀渀⠀渀⤀ 笀琀栀椀猀⸀瀀漀猀 ⴀ㴀 渀㬀紀Ⰰഀഀ
column: function() {return this.pos;},
ऀ 攀愀琀匀瀀愀挀攀㨀 昀甀渀挀琀椀漀渀⠀⤀ 笀ഀഀ
var start = this.pos;
ऀऀ眀栀椀氀攀 ⠀⼀尀猀⼀⸀琀攀猀琀⠀琀栀椀猀⸀猀琀爀椀渀最⸀挀栀愀爀䄀琀⠀琀栀椀猀⸀瀀漀猀⤀⤀⤀ 琀栀椀猀⸀瀀漀猀⬀⬀㬀ഀഀ
return this.pos - start;
ऀ 紀Ⰰഀഀ
match: function(pattern, consume, caseInsensitive) {
ऀऀ椀昀 ⠀琀礀瀀攀漀昀 瀀愀琀琀攀爀渀 㴀㴀 ∀猀琀爀椀渀最∀⤀ 笀ഀഀ
function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
ऀऀ 椀昀 ⠀挀愀猀攀搀⠀琀栀椀猀⸀猀琀爀椀渀最⤀⸀椀渀搀攀砀伀昀⠀挀愀猀攀搀⠀瀀愀琀琀攀爀渀⤀Ⰰ 琀栀椀猀⸀瀀漀猀⤀ 㴀㴀 琀栀椀猀⸀瀀漀猀⤀ 笀ഀഀ
if (consume !== false) this.pos += str.length;
ऀऀऀ爀攀琀甀爀渀 琀爀甀攀㬀ഀഀ
}
ऀऀ紀ഀഀ
else {
ऀऀ 瘀愀爀 洀愀琀挀栀 㴀 琀栀椀猀⸀猀琀爀椀渀最⸀猀氀椀挀攀⠀琀栀椀猀⸀瀀漀猀⤀⸀洀愀琀挀栀⠀瀀愀琀琀攀爀渀⤀㬀ഀഀ
if (match && consume !== false) this.pos += match[0].length;
ऀऀ 爀攀琀甀爀渀 洀愀琀挀栀㬀ഀഀ
}
ऀ 紀ഀഀ
};
㰀⼀琀攀砀琀愀爀攀愀㸀ഀഀ
㰀⼀戀漀搀礀㸀ഀഀ