add Cirru syntax highlighting

This commit is contained in:
jiyinyiyong
2014-01-23 15:53:50 +08:00
parent 811d63039d
commit cd506ca7ad
4 changed files with 151 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
-- https://github.com/Cirru/cirru-gopher/blob/master/code/scope.cr,
set a (int 2)
print (self)
set c (child)
under c
under parent
print a
print $ get c a
set c x (int 3)
print $ get c x
set just-print $ code
print a
print just-print
eval (self) just-print
eval just-print
print (string "string with space")
print (string "escapes \n \"\\")
brackets ((((()))))
"eval" $ string "eval"
print (add $ (int 1) (int 2))
print $ unwrap $
map (a $ int 1) (b $ int 2)

View File

@@ -52,6 +52,7 @@ var supportedModes = {
BatchFile: ["bat|cmd"],
C9Search: ["c9search_results"],
C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp"],
Cirru: ["cirru|cr"],
Clojure: ["clj"],
Cobol: ["CBL|COB"],
coffee: ["coffee|cf|cson|^Cakefile"],

23
lib/ace/mode/cirru.js Normal file
View File

@@ -0,0 +1,23 @@
define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer;
var CirruHighlightRules = require("./cirru_highlight_rules").CirruHighlightRules;
var CoffeeFoldMode = require("./folding/coffee").FoldMode;
var Mode = function() {
this.HighlightRules = CirruHighlightRules;
this.foldingRules = new CoffeeFoldMode();
};
oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = "--";
this.$id = "ace/mode/cirru";
}).call(Mode.prototype);
exports.Mode = Mode;
});

View File

@@ -0,0 +1,91 @@
define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
// see http://cirru.org for more about this language
var CirruHighlightRules = function() {
this.$rules = {
start: [{
token: 'constant.numeric',
regex: /[\d\.]+/
}, {
token: 'comment.line.double-dash',
regex: /--/,
next: 'comment',
}, {
token: 'storage.modifier',
regex: /\(/,
}, {
token: 'support.function',
regex: /[^\(\)\"\s]+/,
next: 'line'
}, {
token: 'string.quoted.double',
regex: /"/,
next: 'string',
}, {
token: 'storage.modifier',
regex: /\)/,
}],
comment: [{
token: 'comment.line.double-dash',
regex: /\ +[^\n]+/,
next: 'start',
}],
string: [{
token: 'string.quoted.double',
regex: /"/,
next: 'line',
}, {
token: 'constant.character.escape',
regex: /\\/,
next: 'escape',
}, {
token: 'string.quoted.double',
regex: /[^\\\"]+/,
}],
escape: [{
token: 'constant.character.escape',
regex: /./,
next: 'string',
}],
line: [{
token: 'constant.numeric',
regex: /[\d\.]+/
}, {
token: 'markup.raw',
regex: /^\s*/,
next: 'start',
}, {
token: 'variable.parameter',
regex: /[^\(\)\"\s]+/
}, {
token: 'storage.modifier',
regex: /\(/,
next: 'start'
}, {
token: 'storage.modifier',
regex: /\)/,
}, {
token: 'markup.raw',
regex: /^\ */,
next: 'start',
}, {
token: 'storage.modifier',
regex: /\$/,
next: 'start',
}, {
token: 'string.quoted.double',
regex: /"/,
next: 'string',
}]
}
};
oop.inherits(CirruHighlightRules, TextHighlightRules);
exports.CirruHighlightRules = CirruHighlightRules;
});