From c532a818b7065b1398eb4a049d26b260a3695280 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 23 Jan 2015 08:22:15 -0500 Subject: [PATCH] feature(edward) add on --- lib/client/edit.js | 7 ++++++- lib/client/edward.js | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/lib/client/edit.js b/lib/client/edit.js index 895290bb..b3ba5696 100644 --- a/lib/client/edit.js +++ b/lib/client/edit.js @@ -1,4 +1,4 @@ -var CloudCmd, Util, DOM, CloudFunc, MenuIO, edward; +var CloudCmd, Util, DOM, CloudFunc, MenuIO, Format, edward; (function(CloudCmd, Util, DOM) { 'use strict'; @@ -95,6 +95,11 @@ var CloudCmd, Util, DOM, CloudFunc, MenuIO, edward; this.create = function(element) { Element = element; + edward.on('save', function(value) { + var size = Format.size(value); + DOM.setCurrentSize(size); + }); + edward.addCommand({ name : 'hide', bindKey : { win: 'Esc', mac: 'Esc' }, diff --git a/lib/client/edward.js b/lib/client/edward.js index a0670918..b3286ad5 100644 --- a/lib/client/edward.js +++ b/lib/client/edward.js @@ -1,4 +1,4 @@ -var join, ace, load, Util, DOM, io, daffy, Format, restafary; +var join, ace, load, Util, DOM, io, daffy, restafary; (function(global, join, DOM, exec, loadRemote) { 'use strict'; @@ -22,6 +22,7 @@ var join, ace, load, Util, DOM, io, daffy, Format, restafary; DIR = '/modules/', Files = DOM.Files, + Emitter = new Events(), Storage = DOM.Storage, MAX_FILE_SIZE = 512000, @@ -120,6 +121,11 @@ var join, ace, load, Util, DOM, io, daffy, Format, restafary; return Ace.getValue(); }; + edward.on = function(event, fn) { + Emitter.on(event, fn); + return edward; + }; + edward.isChanged = function() { var is, value = edward.getValue(), @@ -309,7 +315,6 @@ var join, ace, load, Util, DOM, io, daffy, Format, restafary; } function onSave(error, text) { var ret, - size = Format.size(Value.length), msg = '\nShould I save file anyway?'; if (error) { @@ -327,7 +332,7 @@ var join, ace, load, Util, DOM, io, daffy, Format, restafary; DOM.saveDataToStorage(FileName, Value, hash); }); - DOM.setCurrentSize(size); + Emitter._emit('save', Value.length); } } @@ -589,6 +594,32 @@ var join, ace, load, Util, DOM, io, daffy, Format, restafary; document.body.appendChild(element); } + function Events() { + this._all = {}; + } + + Events.prototype.on = function(event, callback) { + var funcs = this._all[event]; + + if (funcs) + funcs.push(callback); + else + this._all[event] = [callback]; + + return this; + }; + + Events.prototype._emit = function(event, data) { + var funcs = this._all[event]; + + if (funcs) + funcs.forEach(function(fn) { + fn(data); + }); + else if (event === 'error') + throw data; + }; + return edward; }