fix token test generator

This commit is contained in:
nightwing 2013-02-16 22:22:59 +04:00
commit c9e86d3aa9
2 changed files with 88 additions and 88 deletions

View file

@ -11,9 +11,9 @@ function generateTestData() {
var docs = fs.readdirSync(cwd + root); var docs = fs.readdirSync(cwd + root);
var specialDocs = fs.readdirSync(cwd); var specialDocs = fs.readdirSync(cwd);
var modes = fs.readdirSync(cwd + "../").filter(function(x){ var modes = fs.readdirSync(cwd + "../").filter(function(x){
return /^\w+_highlight_rules.js$/.test(x); return !/(_highlight_rules|behaviour|worker)\.js$/.test(x) && /\.js$/.test(x);
}).map(function(x) { }).map(function(x) {
return x.replace(/_highlight_rules.js$/, ""); return x.replace(/\.js$/, "");
}); });
console.log("Docs:", docs); console.log("Docs:", docs);

View file

@ -1,86 +1,86 @@
define(function(require, exports, module) { define(function(require, exports, module) {
"use strict"; "use strict";
var oop = require("../lib/oop"); var oop = require("../lib/oop");
var TextMode = require("./text").Mode; var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer; var Tokenizer = require("../tokenizer").Tokenizer;
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
var SnippetHighlightRules = function() { var SnippetHighlightRules = function() {
var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" +
"LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";
this.$rules = { this.$rules = {
"start" : [ "start" : [
{token:"constant.language.escape", regex: /\\[\$}`\\]/}, {token:"constant.language.escape", regex: /\\[\$}`\\]/},
{token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"},
{token:"variable", regex: "\\$\\w+"}, {token:"variable", regex: "\\$\\w+"},
{token: function(value, state, stack) { {token: function(value, state, stack) {
if (stack[1]) if (stack[1])
stack[1]++; stack[1]++;
else else
stack.unshift("start", 1); stack.unshift("start", 1);
return this.tokenName; return this.tokenName;
}, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, }, tokenName: "markup.list", regex: "\\${", next: "varDecl"},
{token: function(value, state, stack) { {token: function(value, state, stack) {
if (!stack[1]) if (!stack[1])
return "text"; return "text";
stack[1]--; stack[1]--;
if (!stack[1]) if (!stack[1])
stack.splice(0,2); stack.splice(0,2);
return this.tokenName; return this.tokenName;
}, tokenName: "markup.list", regex: "}"}, }, tokenName: "markup.list", regex: "}"},
{token: "doc,comment", regex:/^\${2}-{5,}$/} {token: "doc,comment", regex:/^\${2}-{5,}$/}
], ],
"varDecl" : [ "varDecl" : [
{regex: /\d+\b/, token: "constant.numeric"}, {regex: /\d+\b/, token: "constant.numeric"},
{token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"},
{token:"variable", regex: "\\w+"}, {token:"variable", regex: "\\w+"},
{regex: /:/, token: "punctuation.operator", next: "start"}, {regex: /:/, token: "punctuation.operator", next: "start"},
{regex: /\//, token: "string.regex", next: "regexp"}, {regex: /\//, token: "string.regex", next: "regexp"},
{regex: "", next: "start"} {regex: "", next: "start"}
], ],
"regexp" : [ "regexp" : [
{regex: /\\./, token: "escape"}, {regex: /\\./, token: "escape"},
{regex: /\[/, token: "regex.start", next: "charClass"}, {regex: /\[/, token: "regex.start", next: "charClass"},
{regex: "/", token: "string.regex", next: "format"}, {regex: "/", token: "string.regex", next: "format"},
//{"default": "string.regex"}, //{"default": "string.regex"},
{"token": "string.regex", regex:"."}, {"token": "string.regex", regex:"."},
], ],
charClass : [ charClass : [
{regex: "\\.", token: "escape"}, {regex: "\\.", token: "escape"},
{regex: "\\]", token: "regex.end", next: "regexp"}, {regex: "\\]", token: "regex.end", next: "regexp"},
{"token": "string.regex", regex:"."}, {"token": "string.regex", regex:"."},
], ],
"format" : [ "format" : [
{regex: /\\[ulULE]/, token: "keyword"}, {regex: /\\[ulULE]/, token: "keyword"},
{regex: /\$\d+/, token: "variable"}, {regex: /\$\d+/, token: "variable"},
{regex: "/[gim]*:?", token: "string.regex", next: "start"}, {regex: "/[gim]*:?", token: "string.regex", next: "start"},
// {"default": "string"}, // {"default": "string"},
{"token": "string", regex:"."}, {"token": "string", regex:"."},
] ]
}; };
}; };
oop.inherits(SnippetHighlightRules, TextHighlightRules); oop.inherits(SnippetHighlightRules, TextHighlightRules);
exports.SnippetHighlightRules = SnippetHighlightRules; exports.SnippetHighlightRules = SnippetHighlightRules;
var Mode = function() { var Mode = function() {
var highlighter = new SnippetHighlightRules(); var highlighter = new SnippetHighlightRules();
this.$tokenizer = new Tokenizer(highlighter.getRules()); this.$tokenizer = new Tokenizer(highlighter.getRules());
}; };
oop.inherits(Mode, TextMode); oop.inherits(Mode, TextMode);
(function() { (function() {
this.getNextLineIndent = function(state, line, tab) { this.getNextLineIndent = function(state, line, tab) {
return this.$getIndent(line); return this.$getIndent(line);
}; };
}).call(Mode.prototype); }).call(Mode.prototype);
exports.Mode = Mode; exports.Mode = Mode;
}); });