aboutsummaryrefslogtreecommitdiffstats
path: root/yql/tools/yqlrun/http/www/js/mode-yql.js
blob: 0dffab3fd4db4e47992a79621234372364ee3dd1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
define("ace/mode/yql_highlight_rules",
        ["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],
        function(require, exports, module) {
"use strict";

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

var YqlHighlightRules = function() {
    var keywordControl = "let|return|quote|lambda|block|import|export|bind";
    var keywordMapper = this.createKeywordMapper({
        "keyword.control": keywordControl,
        "keyword.operator": window.yql.builtinFunctions.join("|"),
        "variable": window.yql.supportedFunctions.join("|")
    }, "identifier", false);

    this.$rules = {
        "start": [
            {
                token : "comment",
                regex : "#.*$"
            },
            {
                token: ["storage.type.function-type.yql", "text", "entity.name.function.lisp"],
                regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\?)*)"
            },
            {
                token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"],
                regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)"
            },
            {
                token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"],
                regex: "(\\*)(\\S*)(\\*)"
            },
            {
                token : "string",
                regex : '\'?"(?=.)',
                next  : "qqstring"
            },
            {
                token : "string",       // multiline atom
                regex : '\'?@@',
                next  : "multiline"
            },
            {
                token : "string",           // binary atom
                regex : '\'?x"(?:[0-9A-Fa-f]{2})*"',
            },
            {
                token : "variable.parameter", // short quote
                regex : "'[^#\\s)(]+"
            },
            {
                token : keywordMapper,
                regex : "(?:(?:<=?|>=?|==|!=|[-+*/%])|[a-zA-Z][a-zA-Z0-9!]*)"
            }
        ],
        "qqstring": [
            {
                token: "string.regexp",
                regex: "\\\\(?:[0-3][0-7][0-7]|x[0-9A-Fa-f]{2}|[\"tnrbfav\\\\])"
            },
            {
                token : "string",
                regex : '[^"\\\\]+'
            },
            {
                token : "string",
                regex : '"|$',
                next  : "start"
            }
        ],
        "multiline": [
            {
                token : "string",
                regex: "[^@]+"
            },
            {
                token : "string",
                regex : "[@]{2}",
                next  : "start"
            },
        ]
    }
};

oop.inherits(YqlHighlightRules, TextHighlightRules);
exports.YqlHighlightRules = YqlHighlightRules;
});

define("ace/mode/yql",
        ["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yql_highlight_rules"],
        function(require, exports, module) {
"use strict";

var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var YqlHighlightRules = require("./yql_highlight_rules").YqlHighlightRules;

var Mode = function() {
    this.HighlightRules = YqlHighlightRules;
};
oop.inherits(Mode, TextMode);

(function() {
    this.lineCommentStart = "#";
    this.$id = "ace/mode/yql";
}).call(Mode.prototype);

exports.Mode = Mode;
});