use plist instead of libxml
This commit is contained in:
parent
3ce8d4a8a9
commit
83ff661f4d
3 changed files with 17 additions and 56 deletions
|
|
@ -37,7 +37,7 @@
|
||||||
*
|
*
|
||||||
* ***** END LICENSE BLOCK ***** */
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
var buildAce = require("Makefile.dryice.js").buildAce;
|
var buildAce = require("./Makefile.dryice").buildAce;
|
||||||
|
|
||||||
|
|
||||||
var ACE_HOME = __dirname;
|
var ACE_HOME = __dirname;
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
"asyncjs": "0.0.x",
|
"asyncjs": "0.0.x",
|
||||||
"jsdom": "0.2.x",
|
"jsdom": "0.2.x",
|
||||||
"amd-loader": "~0.0.4",
|
"amd-loader": "~0.0.4",
|
||||||
"libxml": "0.0.x",
|
"plist": "",
|
||||||
"dryice": "0.4.2",
|
"dryice": "0.4.2",
|
||||||
"panino" : "~1.0.15"
|
"panino" : "~1.0.15"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,58 +1,14 @@
|
||||||
var xml = require("libxml");
|
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
|
|
||||||
function plistToJson(el) {
|
var parseString = require("plist").parseString;
|
||||||
if (el.tagName != "plist")
|
function parseTheme(themeXml, callback) {
|
||||||
throw new Error("not a plist!");
|
parseString(themeXml, function(_, theme) {
|
||||||
|
console.log(theme)
|
||||||
return $plistParse(el.selectSingleNode("dict"));
|
callback(theme[0])
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function $plistParse(el) {
|
|
||||||
if (el.tagName == "dict") {
|
|
||||||
var dict = {};
|
|
||||||
var key;
|
|
||||||
var childNodes = el.childNodes;
|
|
||||||
for (var i=0, l=childNodes.length; i<l; i++) {
|
|
||||||
var child = childNodes[i];
|
|
||||||
if (child.nodeType !== 1)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (child.tagName == "key") {
|
|
||||||
key = child.nodeValue;
|
|
||||||
} else {
|
|
||||||
if (!key)
|
|
||||||
throw new Error("missing key");
|
|
||||||
dict[key] = $plistParse(child);
|
|
||||||
key = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
else if (el.tagName == "array") {
|
|
||||||
var arr = [];
|
|
||||||
var childNodes = el.childNodes;
|
|
||||||
for (var i=0, l=childNodes.length; i<l; i++) {
|
|
||||||
var child = childNodes[i];
|
|
||||||
if (child.nodeType !== 1)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
arr.push($plistParse(child));
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
else if (el.tagName == "string") {
|
|
||||||
return el.nodeValue;
|
|
||||||
} else {
|
|
||||||
throw new Error("unsupported node type " + el.tagName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseTheme(themeXml) {
|
|
||||||
try {
|
|
||||||
return plistToJson(xml.parseFromString(themeXml).documentElement);
|
|
||||||
} catch(e) { return; }
|
|
||||||
}
|
|
||||||
|
|
||||||
var supportedScopes = {
|
var supportedScopes = {
|
||||||
"keyword": "keyword",
|
"keyword": "keyword",
|
||||||
|
|
@ -253,10 +209,15 @@ var themes = {
|
||||||
"vibrant_ink": "Vibrant Ink"
|
"vibrant_ink": "Vibrant Ink"
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var name in themes) {
|
function convertTheme(name) {
|
||||||
console.log("Converting " + name);
|
console.log("Converting " + name);
|
||||||
var tmTheme = fs.readFileSync(__dirname + "/tmthemes/" + themes[name] + ".tmTheme", "utf8");
|
var tmTheme = fs.readFileSync(__dirname + "/tmthemes/" + themes[name] + ".tmTheme", "utf8");
|
||||||
|
parseTheme(tmTheme, function(theme) {
|
||||||
var styles = extractStyles(parseTheme(tmTheme));
|
var styles = extractStyles(theme);
|
||||||
fs.writeFileSync(__dirname + "/../lib/ace/theme/" + name + ".js", createTheme(name, styles, cssTemplate, jsTemplate));
|
theme = createTheme(name, styles, cssTemplate, jsTemplate)
|
||||||
|
fs.writeFileSync(__dirname + "/../lib/ace/theme/" + name + ".js", theme);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (var name in themes)
|
||||||
|
convertTheme(name);
|
||||||
Loading…
Add table
Add a link
Reference in a new issue