feature(edward) add jshint, emmet from edit

This commit is contained in:
coderaiser 2015-01-15 02:54:51 -05:00
parent bf6dffe74b
commit 3392698c79
2 changed files with 105 additions and 102 deletions

View file

@ -1,4 +1,4 @@
var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restafary;
var CloudCmd, Util, DOM, CloudFunc, io, Zip, Format, MenuIO, edward, restafary;
(function(CloudCmd, Util, DOM, CloudFunc) {
'use strict';
@ -7,7 +7,7 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
function EditProto(callback) {
var Name = 'Edit',
Loading = true,
DIR = '/modules/ace-builds/src-noconflict/',
Info = DOM.CurrentInfo,
Files = DOM.Files,
Storage = DOM.Storage,
@ -17,14 +17,12 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
Value,
Edit = this,
Diff,
Emmet,
Modelist,
Menu,
Dialog = DOM.Dialog,
Images = DOM.Images,
Element, JSHintConfig,
Element,
ConfigView = {
beforeClose: function() {
isChanged();
@ -152,9 +150,9 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
ConfigView.beforeShow = callback;
if (isDir)
Edit.setMode('json');
edward.setMode('json');
else
Edit.setModeForPath(name);
edward.setModeForPath(name);
Info.getData(function(error, data) {
if (error) {
@ -181,38 +179,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
edward.goToLine();
};
this.setModeForPath = function(name) {
var session = edward.getSession(),
modesByName = Modelist.modesByName,
mode = Modelist.getModeForPath(name).mode,
htmlMode = modesByName.html.mode,
jsMode = modesByName.javascript.mode,
isHTML = mode === htmlMode,
isJS = mode === jsMode;
session.setMode(mode, function() {
edward.setUseOfWorker(mode);
if (isHTML)
setEmmet();
if (isJS && session.getUseWorker())
setJsHintConfig();
});
};
this.setMode = function(mode) {
var ext,
modesByName = Modelist.modesByName;
if (modesByName[mode]) {
ext = modesByName[mode].extensions.split('|')[0];
Edit.setModeForPath('.' + ext);
}
};
function isChanged() {
var is,
value = edward.getValue(),
@ -227,31 +193,7 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
}
}
function setEmmet() {
Files.get('edit', function(error, config) {
var extensions = config.extensions,
isEmmet = extensions.emmet;
if (isEmmet)
exec.if(Emmet, function() {
edward.setOption('enableEmmet', true);
}, function(callback) {
var url;
url = join([
DIR + 'emmet.js',
DIR + 'ext-emmet.js'
]);
DOM.load.js(url, function() {
Emmet = ace.require('ace/ext/emmet');
Emmet.setCore(window.emmet);
callback();
});
});
});
}
this.create = function(element) {
Element = element;
@ -304,15 +246,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
}
});
ace.require('ace/ext/language_tools');
Modelist = ace.require('ace/ext/modelist');
Files.get('edit', function(error, config) {
var options = config.options;
edward.setOptions(options);
});
return this;
};
@ -440,32 +373,6 @@ var CloudCmd, Util, DOM, CloudFunc, io, ace, Zip, Format, MenuIO, edward, restaf
});
}
function setJsHintConfig(callback) {
var JSHINT_PATH = CloudCmd.PREFIX + '/.jshintrc',
func = function() {
var session = edward.getSession(),
worker = session.$worker;
if (worker)
worker.send('changeOptions', [JSHintConfig]);
exec(callback);
};
exec.if(JSHintConfig, func, function() {
DOM.load.ajax({
url : JSHINT_PATH,
success : function(data) {
exec.try(function() {
JSHintConfig = JSON.parse(data);
});
func();
}
});
});
}
function loadFiles(element, callback) {
var dir = CloudCmd.LIBDIRCLIENT,
name = 'edward',

View file

@ -1,6 +1,6 @@
var join, ace, Util, DOM;
var join, ace, Util, DOM, CloudCmd;
(function(global, join, DOM, exec, load, loadRemote) {
(function(global, join, DOM, exec, load, loadRemote, Files) {
'use strict';
if (typeof module !== 'undefined' && module.exports)
@ -13,6 +13,9 @@ var join, ace, Util, DOM;
ElementMsg,
Value,
Ace,
Modelist,
JSHintConfig,
Emmet,
edward = function(el, callback) {
Element = el || document.body;
@ -26,6 +29,14 @@ var join, ace, Util, DOM;
loadFiles,
function() {
Ace = ace.edit(Element);
ace.require('ace/ext/language_tools');
Modelist = ace.require('ace/ext/modelist');
Files.get('edit', function(error, config) {
var options = config.options;
edward.setOptions(options);
});
callback();
},
]);
@ -122,6 +133,38 @@ var join, ace, Util, DOM;
session.setUseWorker(isMatch);
};
edward.setMode = function(mode) {
var ext,
modesByName = Modelist.modesByName;
if (modesByName[mode]) {
ext = modesByName[mode].extensions.split('|')[0];
edward.setModeForPath('.' + ext);
}
};
edward.setModeForPath = function(name) {
var session = edward.getSession(),
modesByName = Modelist.modesByName,
mode = Modelist.getModeForPath(name).mode,
htmlMode = modesByName.html.mode,
jsMode = modesByName.javascript.mode,
isHTML = mode === htmlMode,
isJS = mode === jsMode;
session.setMode(mode, function() {
edward.setUseOfWorker(mode);
if (isHTML)
setEmmet();
if (isJS && session.getUseWorker())
setJsHintConfig();
});
};
edward.selectAll = function() {
Ace.selectAll();
};
@ -168,6 +211,59 @@ var join, ace, Util, DOM;
});
};
function setEmmet() {
Files.get('edit', function(error, config) {
var dir = '/modules/ace-builds/src-noconflict/',
extensions = config.extensions,
isEmmet = extensions.emmet;
if (isEmmet)
exec.if(Emmet, function() {
edward.setOption('enableEmmet', true);
}, function(callback) {
var url;
url = join([
dir + 'emmet.js',
dir + 'ext-emmet.js'
]);
load.js(url, function() {
Emmet = ace.require('ace/ext/emmet');
Emmet.setCore(window.emmet);
callback();
});
});
});
}
function setJsHintConfig(callback) {
var JSHINT_PATH = CloudCmd.PREFIX + '/.jshintrc',
func = function() {
var session = edward.getSession(),
worker = session.$worker;
if (worker)
worker.send('changeOptions', [JSHintConfig]);
exec(callback);
};
exec.if(JSHintConfig, func, function() {
DOM.load.ajax({
url : JSHINT_PATH,
success : function(data) {
exec.try(function() {
JSHintConfig = JSON.parse(data);
});
func();
}
});
});
}
function onDrop(event) {
var reader, files,
onLoad = function(event) {
@ -208,4 +304,4 @@ var join, ace, Util, DOM;
return edward;
}
})(this, join, DOM, Util.exec, DOM.load, DOM.loadRemote);
})(this, join, DOM, Util.exec, DOM.load, DOM.loadRemote, DOM.Files);