Ace编辑器:如何拥有多个令牌

时间:2013-06-29 16:00:38

标签: ace-editor

我正在尝试使用这两条规则创建一个模式:

{
    token: 'title',
    regex: /#.*/
},

{
    token: 'name',
    regex: /@\w+/
}

Hovewer,名称规则在此示例中不会产生任何影响:

# Title with @name

有没有办法让这两条规则都有效?

1 个答案:

答案 0 :(得分:3)

第一条规则消耗整条线,不允许第二条规则适用。要使其工作,您需要在#

之后创建嵌套状态
define(function(require, exports, module) {
"use strict";

var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;

var HighlightRules = function() {
    this.$rules = {
        start : [ {
            token: 'comment',
            regex: /#(?=.)/,
            next: [{
                token: 'empty',
                regex: /$|^/,
                next: "start"
            },{
                token: 'keyword',
                regex: /@\w+/
            },{
                defaultToken : "comment"
            }]
        }]
    };

    this.normalizeRules();
};

oop.inherits(HighlightRules, TextHighlightRules);

exports.HighlightRules = HighlightRules;
});