diff --git a/js/sim.js b/js/sim.js index 484f7e70c..eb7333bd0 100644 --- a/js/sim.js +++ b/js/sim.js @@ -1106,6 +1106,53 @@ function Lobby(id, elem) { Tools.prefs.set('timestamps', target, true); } return false; + + case 'highlight': + var highlights = Tools.prefs.get('highlights') || []; + if (target.indexOf(',') > -1) { + var targets = target.split(','); + // trim the targets to be safe + for (var i=0, len=targets.length; i 0) { + var hls = highlights.join(', '); + } else { + var hls = 'Currently none.'; + } + rooms.lobby.add("Current highlighting words: " + hls); + } else { + // Wrong command + rooms.lobby.add("Error: Valid options are /highlight add, [word]; /highlight delete, [word]; (remove word for highlight cleaning), and /highlight show."); + } + } + return false; case 'rank': case 'ranking': @@ -1254,6 +1301,12 @@ function Lobby(id, elem) { function(x) { return (x < 10) ? '0' + x : x; } ).join(':') + '] '; }; + this.getHighlight = function (message) { + var highlights = Tools.prefs.get('highlights') || []; + if (!this.regex) this.regex = new RegExp('\\b('+highlights.join('|')+')\\b', 'gi'); + if (highlights.length > 0) return this.regex.test(message); + return false; + }; this.add = function (log) { if (typeof log === 'string') log = log.split('\n'); var autoscroll = false; @@ -1381,6 +1434,8 @@ function Lobby(id, elem) { }; var clickableName = '' + sanitize(log[i].name.substr(1)) + ''; var message = log[i].message; + var highlight = (selfR.getHighlight(message))? ' style="background-color:#F84;"' : ''; + var chatDiv = '
'; if (log[i].name.substr(0, 1) !== ' ') clickableName = '' + sanitize(log[i].name.substr(0, 1)) + ''+clickableName; if (log[i].pm) { var pmuserid = (userid === me.userid ? toUserid(log[i].pm) : userid); @@ -1400,13 +1455,13 @@ function Lobby(id, elem) { //} else if (log[i].act) { // selfR.chatElem.append('
' + clickableName + ' ' + message + '
'); } else if (message.substr(0,2) === '//') { - selfR.chatElem.append('
' + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message.substr(1)) + '
'); + selfR.chatElem.append(chatDiv + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message.substr(1)) + '
'); } else if (message.substr(0,4).toLowerCase() === '/me ') { - selfR.chatElem.append('
' + selfR.getTimestamp() + ' ' + clickableName + ' ' + messageSanitize(message.substr(4)) + '
'); + selfR.chatElem.append(chatDiv + selfR.getTimestamp() + ' ' + clickableName + ' ' + messageSanitize(message.substr(4)) + ''); } else if (message.substr(0,5).toLowerCase() === '/mee ') { - selfR.chatElem.append('
' + selfR.getTimestamp() + ' ' + clickableName + '' + messageSanitize(message.substr(5)) + '
'); + selfR.chatElem.append(chatDiv + selfR.getTimestamp() + ' ' + clickableName + '' + messageSanitize(message.substr(5)) + ''); } else if (message.substr(0,10).toLowerCase() === '/announce ') { - selfR.chatElem.append('
' + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message.substr(10)) + '
'); + selfR.chatElem.append(chatDiv + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message.substr(10)) + ''); } else if (message.substr(0,14).toLowerCase() === '/data-pokemon ') { selfR.chatElem.append('
    '+Chart.pokemonRow(Tools.getTemplate(message.substr(14)),'',{})+'
'); } else if (message.substr(0,11).toLowerCase() === '/data-item ') { @@ -1417,7 +1472,7 @@ function Lobby(id, elem) { selfR.chatElem.append('
    '+Chart.moveRow(Tools.getMove(message.substr(11)),'',{})+'
'); } else { // Normal chat message. - selfR.chatElem.append('
' + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message) + '
'); + selfR.chatElem.append(chatDiv + selfR.getTimestamp() + '' + clickableName + ': ' + messageSanitize(message) + ''); } } else if (log[i].name && log[i].action === 'battle') { var id = log[i].room;