big-moving.ru/api/soft/Ace/lib/ace/mode/protobuf_highlight_rules.js

65 lines
2.3 KiB
JavaScript
Executable File

define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var ProtobufHighlightRules = function() {
var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" +
"sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" +
"string|bytes";
var keywordDeclaration = "message|required|optional|repeated|package|" +
"import|option|enum";
var keywordMapper = this.createKeywordMapper({
"keyword.declaration.protobuf": keywordDeclaration,
"support.type": builtinTypes
}, "identifier");
this.$rules = {
"start": [{
token: "comment",
regex: /\/\/.*$/
}, {
token: "comment",
regex: /\/\*/,
next: "comment"
}, {
token: "constant",
regex: "<[^>]+>"
}, {
regex: "=",
token: "keyword.operator.assignment.protobuf"
}, {
token : "string", // single line
regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'
}, {
token : "string", // single line
regex : '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']'
}, {
token: "constant.numeric", // hex
regex: "0[xX][0-9a-fA-F]+\\b"
}, {
token: "constant.numeric", // float
regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"
}, {
token: keywordMapper,
regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b"
}],
"comment": [{
token : "comment", // closing comment
regex : "\\*\\/",
next : "start"
}, {
defaultToken : "comment"
}]
};
this.normalizeRules();
};
oop.inherits(ProtobufHighlightRules, TextHighlightRules);
exports.ProtobufHighlightRules = ProtobufHighlightRules;
});