Merge pull request #420 from glowing-bear/use-strict

[PLS TEST] Use strict
This commit is contained in:
David Cormier 2014-09-17 09:44:32 -04:00
commit 933af6a983
12 changed files with 100 additions and 55 deletions

View file

@ -1,8 +1,11 @@
{
"browser": true,
"devel": true,
"globals": {
"angular": false,
"$": false,
"window": false,
"console": false
"weeChat": false,
"_": false,
"Notification": false,
"Favico": false
}
}

View file

@ -1,3 +1,6 @@
(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.factory('connection',
@ -7,7 +10,7 @@ weechat.factory('connection',
models,
ngWebsockets) {
protocol = new weeChat.Protocol();
var protocol = new weeChat.Protocol();
// Takes care of the connection and websocket hooks
@ -120,7 +123,7 @@ weechat.factory('connection',
* Handles websocket disconnection
*/
$log.info("Disconnected from relay");
failCallbacks('disconnection');
ngWebsockets.failCallbacks('disconnection');
$rootScope.connected = false;
$rootScope.$emit('relayDisconnect');
if (ssl && evt.code === 1006) {
@ -142,16 +145,11 @@ weechat.factory('connection',
$rootScope.lastError = Date.now();
if (evt.type === "error" && this.readyState !== 1) {
failCallbacks('error');
ngWebsockets.failCallbacks('error');
$rootScope.errorMessage = true;
}
};
protocol.setId = function(id, message) {
return '(' + id + ') ' + message;
};
try {
ngWebsockets.connect(url,
protocol,
@ -275,3 +273,4 @@ weechat.factory('connection',
requestNicklist: requestNicklist
};
}]);
})();

View file

@ -1,8 +1,9 @@
(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.filter('toArray', function () {
'use strict';
return function (obj) {
if (!(obj instanceof Object)) {
return obj;
@ -15,7 +16,6 @@ weechat.filter('toArray', function () {
});
weechat.filter('irclinky', ['$filter', function($filter) {
'use strict';
return function(text, target) {
if (!text) {
return text;
@ -37,8 +37,6 @@ weechat.filter('irclinky', ['$filter', function($filter) {
}]);
weechat.filter('inlinecolour', ['$sce', function($sce) {
'use strict';
return function(text) {
if (!text) {
return text;
@ -51,3 +49,4 @@ weechat.filter('inlinecolour', ['$sce', function($sce) {
return $sce.trustAsHtml(text.replace(hexColourRegex, substitute));
};
}]);
})();

View file

@ -1,4 +1,7 @@
var weechat = angular.module('weechat', ['ngRoute', 'localStorage', 'weechatModels', 'plugins', 'ngSanitize', 'ngWebsockets', 'ngTouch']);
(function() {
'use strict';
var weechat = angular.module('weechat', ['ngRoute', 'localStorage', 'weechatModels', 'plugins', 'IrcUtils', 'ngSanitize', 'ngWebsockets', 'ngTouch']);
weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils) {
@ -650,3 +653,5 @@ weechat.config(['$routeProvider',
});
}
]);
})();

View file

@ -1,3 +1,6 @@
(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notifications', function($rootScope, $log, models, plugins, notifications) {
@ -207,3 +210,4 @@ weechat.factory('handlers', ['$rootScope', '$log', 'models', 'plugins', 'notific
};
}]);
})();

View file

@ -1,3 +1,6 @@
(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.directive('inputBar', function() {
@ -11,12 +14,13 @@ weechat.directive('inputBar', function() {
command: '=command'
},
controller: ['$rootScope', '$scope', '$element', '$log', 'connection', 'models', function($rootScope,
controller: ['$rootScope', '$scope', '$element', '$log', 'connection', 'models', 'IrcUtils', function($rootScope,
$scope,
$element, //XXX do we need this? don't seem to be using it
$log,
connection, //XXX we should eliminate this dependency and use signals instead
models) {
models,
IrcUtils) {
/*
* Returns the input element
@ -348,3 +352,4 @@ weechat.directive('inputBar', function() {
}]
};
});
})();

View file

@ -2,14 +2,19 @@
* Portable utilities for IRC.
*/
var IrcUtils = {
(function() {
'use strict';
var IrcUtils = angular.module('IrcUtils', []);
IrcUtils.service('IrcUtils', [function() {
/**
* Get a new version of a nick list, sorted by last speaker
*
* @param nickList Original nick list
* @return Sorted nick list
*/
_ciNickList: function(nickList) {
var _ciNickList = function(nickList) {
var newList = _(nickList).sortBy(function(nickObj) {
return -nickObj.spokeAt;
@ -17,7 +22,7 @@ var IrcUtils = {
newList = _(newList).pluck('name');
return newList;
},
};
/**
* Completes a single nick.
@ -26,7 +31,7 @@ var IrcUtils = {
* @param nickList Array of current nicks sorted for case insensitive searching
* @return Completed nick (null if not found)
*/
_completeSingleNick: function(candidate, nickList) {
var _completeSingleNick = function(candidate, nickList) {
var foundNick = null;
nickList.some(function(nick) {
@ -39,7 +44,7 @@ var IrcUtils = {
});
return foundNick;
},
};
/**
* Get the next nick when iterating nicks.
@ -49,7 +54,7 @@ var IrcUtils = {
* @param nickList Array of current nicks sorted for case insensitive searching
* @return Next nick (may be the same)
*/
_nextNick: function(iterCandidate, currentNick, nickList) {
var _nextNick = function(iterCandidate, currentNick, nickList) {
var matchingNicks = [];
var at = null;
var lcIterCandidate = iterCandidate.toLowerCase();
@ -63,7 +68,7 @@ var IrcUtils = {
if (lcCurrentNick === lcNick) {
at = matchingNicks.length - 1;
}
}
}
/* Since we aren't sorted any more torhve disabled this:
else if (matchingNicks.length > 0) {
// end of group, no need to check after this
@ -82,7 +87,7 @@ var IrcUtils = {
}
return matchingNicks[at];
}
},
};
/**
* Nicks tab completion.
@ -98,14 +103,14 @@ var IrcUtils = {
* foundNick: completed nick (or null if not possible)
* iterCandidate: current iterating candidate
*/
completeNick: function(text, caretPos, iterCandidate, nickList, suf) {
var completeNick = function(text, caretPos, iterCandidate, nickList, suf) {
var doIterate = (iterCandidate !== null);
if (suf === null) {
suf = ':';
}
// new nick list to search in
var searchNickList = IrcUtils._ciNickList(nickList);
var searchNickList = _ciNickList(nickList);
// text before and after caret
var beforeCaret = text.substring(0, caretPos);
@ -126,7 +131,7 @@ var IrcUtils = {
if (m) {
if (doIterate) {
// try iterating
newNick = IrcUtils._nextNick(iterCandidate, m[1], searchNickList);
newNick = _nextNick(iterCandidate, m[1], searchNickList);
beforeCaret = newNick + suf + ' ';
return {
text: beforeCaret + afterCaret,
@ -144,7 +149,7 @@ var IrcUtils = {
m = beforeCaret.match(/^([a-zA-Z0-9_\\\[\]{}^`|-]+)$/);
if (m) {
// try completing
newNick = IrcUtils._completeSingleNick(m[1], searchNickList);
newNick = _completeSingleNick(m[1], searchNickList);
if (newNick === null) {
// no match
return ret;
@ -167,7 +172,7 @@ var IrcUtils = {
if (m) {
if (doIterate) {
// try iterating
newNick = IrcUtils._nextNick(iterCandidate, m[2], searchNickList);
newNick = _nextNick(iterCandidate, m[2], searchNickList);
beforeCaret = m[1] + newNick + ' ';
return {
text: beforeCaret + afterCaret,
@ -185,7 +190,7 @@ var IrcUtils = {
m = beforeCaret.match(/^(.* )([a-zA-Z0-9_\\\[\]{}^`|-]+)$/);
if (m) {
// try completing
newNick = IrcUtils._completeSingleNick(m[2], searchNickList);
newNick = _completeSingleNick(m[2], searchNickList);
if (newNick === null) {
// no match
return ret;
@ -205,5 +210,10 @@ var IrcUtils = {
// completion not possible
return ret;
}
};
};
return {
'completeNick': completeNick
};
}]);
})();

View file

@ -2,6 +2,9 @@
* This file contains the weechat models and various
* helper methods to work with them.
*/
(function() {
'use strict';
var models = angular.module('weechatModels', []);
models.service('models', ['$rootScope', '$filter', function($rootScope, $filter) {
@ -285,6 +288,7 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
if (textEl.attrs.name !== null) {
textEl.classes.push('coa-' + textEl.attrs.name);
}
var val;
for (var attr in textEl.attrs.override) {
val = textEl.attrs.override[attr];
if (val) {
@ -452,7 +456,7 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
if (key === 'id') {
activeBuffer = this.model.buffers[bufferId];
}
else {
else {
activeBuffer = _.find(this.model.buffers, function(buffer) {
if (buffer[key] === bufferId) {
return buffer;
@ -529,3 +533,4 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
delete(this.model.buffers[bufferId]);
};
}]);
})();

View file

@ -1,3 +1,6 @@
(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.directive('plugin', ['$rootScope', function($rootScope) {
@ -54,3 +57,4 @@ weechat.directive('plugin', ['$rootScope', function($rootScope) {
}]
};
}]);
})();

View file

@ -2,7 +2,10 @@
* This file contains the plugin definitions
*/
plugins = angular.module('plugins', []);
(function() {
'use strict';
var plugins = angular.module('plugins', []);
/*
* Definition of a user provided plugin with sensible default values
@ -143,7 +146,7 @@ plugins.factory('userPlugins', function() {
document.body.appendChild(script);
};
var urlRegexp = RegExp(/(?:ftp|https?):\/\/\S*[^\s.;,(){}<>]/g);
var urlRegexp = new RegExp(/(?:ftp|https?):\/\/\S*[^\s.;,(){}<>]/g);
var urlPlugin = function(callback) {
return function(message) {
@ -168,7 +171,7 @@ plugins.factory('userPlugins', function() {
*/
var spotifyPlugin = new Plugin(function(message) {
content = [];
var content = [];
var addMatch = function(match) {
for (var i = 0; match && i < match.length; i++) {
var id = match[i].substr(match[i].length - 22, match[i].length);
@ -394,3 +397,4 @@ plugins.factory('userPlugins', function() {
});
})();

View file

@ -1,3 +1,6 @@
(function() {
'use strict';
var websockets = angular.module('ngWebsockets', []);
websockets.factory('ngWebsockets',
@ -5,7 +8,7 @@ websockets.factory('ngWebsockets',
function($rootScope, $q) {
this.protocol = null;
var protocol = null;
var ws = null;
var callbacks = {};
@ -17,7 +20,7 @@ function($rootScope, $q) {
*
* @param reason reason for failure
*/
failCallbacks = function(reason) {
var failCallbacks = function(reason) {
for (var i in callbacks) {
callbacks[i].cb.reject(reason);
}
@ -111,11 +114,11 @@ function($rootScope, $q) {
};
var connect = function(url,
protocol,
protocol_,
properties) {
ws = new WebSocket(url);
protocol = protocol;
protocol = protocol_;
for (var property in properties) {
ws[property] = properties[property];
}
@ -138,7 +141,9 @@ function($rootScope, $q) {
send: send,
sendAll: sendAll,
connect: connect,
disconnect: disconnect
disconnect: disconnect,
failCallbacks: failCallbacks
};
}]);
})();

View file

@ -1,4 +1,5 @@
(function(exports) {// http://weechat.org/files/doc/devel/weechat_dev.en.html#color_codes_in_strings
'use strict';
/**
* WeeChat protocol handling.
@ -604,16 +605,6 @@
return defaults;
};
/**
* Add the ID to the previously formatted command
*
* @param id Command ID
* @param command previously formatted command
*/
WeeChatProtocol.setId = function(id, command) {
return '(' + id + ') ' + command;
};
/**
* Formats a command.
*
@ -966,7 +957,7 @@
var objs = [];
var hpath = this._getString();
keys = this._getString().split(',');
var keys = this._getString().split(',');
paths = hpath.split('/');
count = this._getInt();
@ -1179,6 +1170,17 @@
this._data = data;
},
/**
* Add the ID to the previously formatted command
*
* @param id Command ID
* @param command previously formatted command
*/
setId: function(id, command) {
return '(' + id + ') ' + command;
},
/**
* Parses a WeeChat message.
*