tweak mode converter
This commit is contained in:
parent
d31110e7ca
commit
9ab5d50e0e
1 changed files with 22 additions and 16 deletions
|
|
@ -75,6 +75,7 @@ function simpleRule(regex, name, captures) {
|
||||||
name = name || "text";
|
name = name || "text";
|
||||||
var rule = {};
|
var rule = {};
|
||||||
|
|
||||||
|
var origRegex = regex
|
||||||
regex = transformRegExp(regex, rule);
|
regex = transformRegExp(regex, rule);
|
||||||
if (captures) {
|
if (captures) {
|
||||||
var tokenArray = [];
|
var tokenArray = [];
|
||||||
|
|
@ -94,6 +95,7 @@ function simpleRule(regex, name, captures) {
|
||||||
|
|
||||||
try {new RegExp(regex);} catch(e) {
|
try {new RegExp(regex);} catch(e) {
|
||||||
rule.TODO = "FIXME: regexp doesn't have js equivalent";
|
rule.TODO = "FIXME: regexp doesn't have js equivalent";
|
||||||
|
rule.originalRegex = origRegex
|
||||||
}
|
}
|
||||||
rule.token = name;
|
rule.token = name;
|
||||||
rule.regex = regex;
|
rule.regex = regex;
|
||||||
|
|
@ -111,18 +113,21 @@ function removeXFlag(str) {
|
||||||
if (s[0] == "\\")
|
if (s[0] == "\\")
|
||||||
return /[#\s]/.test(s[1]) ? s[1] : s;
|
return /[#\s]/.test(s[1]) ? s[1] : s;
|
||||||
return "";
|
return "";
|
||||||
});
|
}).substr(4);
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
function transformRegExp(str, rule) {
|
function transformRegExp(str, rule) {
|
||||||
str = removeXFlag(str);
|
str = removeXFlag(str);
|
||||||
|
//str = str.replace(/\\n\$|\$\\n/g, '$');
|
||||||
str = str.replace(/\\n(?!\?).?/g, '$'); // replace newlines by $ except if its postfixed by ?
|
str = str.replace(/\\n(?!\?).?/g, '$'); // replace newlines by $ except if its postfixed by ?
|
||||||
if (/\(\?[i]\:/g.test(str)) {
|
if (/\(\?[i]\:|\(?\w*i\w*\)/g.test(str)) {
|
||||||
str = str.replace(/\(\?[ims\-]\:/g, "(?:"); // checkForInvariantRegex
|
str = str.replace(/\(\?[ims\-]\:/g, "(?:"); // checkForInvariantRegex
|
||||||
|
str = str.replace(/\(\?[imsx\-]\)/g, "");
|
||||||
rule && (rule.caseInsensitive = true);
|
rule && (rule.caseInsensitive = true);
|
||||||
}
|
}
|
||||||
|
str = str.replace(/(\\[xu]){([a-fA-F\d]+)}/g, '$1$2');
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -140,7 +145,8 @@ var modeTemplate = fs.readFileSync(__dirname + "/mode.tmpl.js", "utf8");
|
||||||
var modeHighlightTemplate = fs.readFileSync(__dirname + "/mode_highlight_rules.tmpl.js", "utf8");
|
var modeHighlightTemplate = fs.readFileSync(__dirname + "/mode_highlight_rules.tmpl.js", "utf8");
|
||||||
|
|
||||||
function convertLanguageFile(name) {
|
function convertLanguageFile(name) {
|
||||||
var tmLanguage = fs.readFileSync(process.cwd() + "/" + name, "utf8");
|
var path = /^(\/|\w:)/.test(name) ? name : process.cwd() + "/" + name
|
||||||
|
var tmLanguage = fs.readFileSync(path, "utf8");
|
||||||
parseLanguage(tmLanguage, function(language) {
|
parseLanguage(tmLanguage, function(language) {
|
||||||
var languageHighlightFilename = language.name.replace(/[-_]/g, "").toLowerCase();
|
var languageHighlightFilename = language.name.replace(/[-_]/g, "").toLowerCase();
|
||||||
var languageNameSanitized = language.name.replace(/-/g, "");
|
var languageNameSanitized = language.name.replace(/-/g, "");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue