add emmet updater

This commit is contained in:
nightwing 2013-07-17 22:54:07 +04:00
commit 77526749bc
2 changed files with 136 additions and 114 deletions

View file

@ -520,10 +520,10 @@ new StatusBar(env.editor, cmdLine.container);
var Emmet = require("ace/ext/emmet"); var Emmet = require("ace/ext/emmet");
net.loadScript("https://rawgithub.com/nightwing/emmet-core/master/emmet.js", function() { net.loadScript("http://nightwing.github.io/emmet-core/emmet.js", function() {
Emmet.setCore(window.emmet); Emmet.setCore(window.emmet);
env.editor.setOption("enableEmmet", true); env.editor.setOption("enableEmmet", true);
}) });
// require("ace/placeholder").PlaceHolder; // require("ace/placeholder").PlaceHolder;

View file

@ -3,6 +3,7 @@ var https = require("https")
, url = require("url") , url = require("url")
, fs = require("fs"); , fs = require("fs");
var async = require("asyncjs");
var rootDir = __dirname + "/../lib/ace/"; var rootDir = __dirname + "/../lib/ace/";
var deps = [{ var deps = [{
@ -49,9 +50,30 @@ var deps = [{
+ 'module.exports = req("jshint");\n'; + 'module.exports = req("jshint");\n';
return src; return src;
} }
}, {
path: "ext/emmet-core.js",
url: [
"https://raw.github.com/sergeche/emmet-sublime/master/emmet/emmet-app.js",
"https://raw.github.com/sergeche/emmet-sublime/master/emmet/snippets.json"
],
postProcess: function(data) {
return data[0]
.replace("define(emmet)", "define('emmet', [], emmet)")
.replace(/(emmet.define\('bootstrap'.*)[\s\S]*$/, function(_, x) {
return x + "\n" +
"var snippets = " + data[1] + ";\n" +
"var res = require('resources');\n" +
"var userData = res.getVocabulary('user') || {};\n" +
"res.setVocabulary(require('utils').deepMerge(userData, snippets), 'user');\n" +
"});";
});
}
}]; }];
var download = function(href, callback) { var download = function(href, callback) {
if (Array.isArray(href))
return async.map(href, download, callback);
var options = url.parse(href); var options = url.parse(href);
var protocol = options.protocol === "https:" ? https : http; var protocol = options.protocol === "https:" ? https : http;
console.log("connecting to " + options.host + " " + options.path); console.log("connecting to " + options.host + " " + options.path);
@ -64,13 +86,13 @@ var download = function(href, callback) {
}); });
res.on("end", function(){ res.on("end", function(){
callback(data); callback(null, data);
}); });
}); });
}; };
var getDep = function(dep) { var getDep = function(dep) {
download(dep.url, function(data) { download(dep.url, function(err, data) {
if (dep.postProcess) if (dep.postProcess)
data = dep.postProcess(data); data = dep.postProcess(data);
if (dep.needsFixup) if (dep.needsFixup)
@ -85,7 +107,7 @@ var getDep = function(dep) {
}); });
}; };
deps.forEach(getDep); deps.slice(-1).forEach(getDep);
// coffee-script // coffee-script
void function(){ void function(){
@ -112,7 +134,7 @@ void function(){
var downloads = {}, counter = 0; var downloads = {}, counter = 0;
deps.forEach(function(x) { deps.forEach(function(x) {
download(x.href, function(data) { download(x.href, function(err, data) {
counter++; counter++;
downloads[x.name] = data; downloads[x.name] = data;
if (counter == deps.length) if (counter == deps.length)