MediaWiki:Chat.js/ChatTags.js

/**************************************************************************/ //* BBCode parser for Wikia chats as part of the ChatTags script. //* //* Copyright 2013 Benjamin Williams <[ Lil' Miss Rarity ]> //* //* Script was created by User:AnimatedCartoons //* //* Version: v0.1.6 //* //* This program is modified as a version exclusive to BCoW. All rights //* still belongs to Lil's Miss Rarity and AnimatedCartoons. /**************************************************************************/ var chatags = window.chatags || {}; //These should never be touched! chatags.regexp = { master: /\[([^\[\]]{1,})\]([^\[\]]{1,})\[\/([^\[\]]{1,})\]/, split: /(\^\[\{1,}\]|\[\/[^\[\]]{1,}\])/g, endTag: /\[\/([^\[\]]{1,})\]/, beginTagA: /\[(\S{1,})(\s[^\[\]]{1,})\]/, beginTagB: /\[([^\[\]]{1,})\]/ }; chatags.bbCode = { "b": { 0: {           "bbFind": /\[\/b\]/, "bbReplace": " " },       1: {            "bbFind": /\[b\]/, "bbReplace": "" }   },    "bg": { 0: {           "bbFind": /\[\/bg\]/, "bbReplace": " " },       1: {            "bbFind": /\[bg ([^\[\]\\"]{1,})\]/,            "bbReplace": ""        }    },    "big": {        0: {            "bbFind": /\[\/big\]/,            "bbReplace": " "        },        1: {            "bbFind": /\[big\]/,            "bbReplace": ""        }    },    "c": {        0: {            "bbFind": /\[\/c\]/,            "bbReplace": " "        },        1: {            "bbFind": /\[c ([^\[\]\\"]{1,})\]/, "bbReplace": "" }   },    "code": { 0: {           "bbFind": /\[\/code\]/, "bbReplace": " " },       1: {            "bbFind": /\[code\]/, "bbReplace": "" }   },    "i": { 0: {           "bbFind": /\[\/i\]/, "bbReplace": " " },       1: {            "bbFind": /\[i\]/, "bbReplace": "" }   },    "small": { 0: {           "bbFind": /\[\/small\]/, "bbReplace": " " },       1: {            "bbFind": /\[small\]/, "bbReplace": "" }   },    "sub": { 0: {           "bbFind": /\[\/sub\]/, "bbReplace": " " },       1: {            "bbFind": /\[sub\]/, "bbReplace": " " }   },    "s": { 0: {           "bbFind": /\[\/s\]/, "bbReplace": " " },       1: {            "bbFind": /\[s\]/, "bbReplace": "" }   },    "sup": { 0: {           "bbFind": /\[\/sup\]/, "bbReplace": " " },       1: {            "bbFind": /\[sup\]/, "bbReplace": " " }   },    "u": { 0: {           "bbFind": /\[\/u\]/, "bbReplace": " " },       1: {            "bbFind": /\[u\]/, "bbReplace": "" }   "o": { 0: {           "bbFind": /\[\/u\]/, "bbReplace": " " },       1: {            "bbFind": /\[u\]/, "bbReplace": "" }   } }; chatags.parse = function(string) { if (string.match(chatags.regexp.master)) { var matches = string.match(chatags.regexp.split); var keys = []; var vals = []; //Populates keys and vals with data about the bbcode for (var i = 0; i < matches.length; i++) { var match = matches[i]; if (match.indexOf("/") == 1) { match = match.replace(chatags.regexp.endTag, "$1"); keys.push(match); vals.push(0); } else if (match.indexOf("/") == -1) { if (match.indexOf(" ") > -1) { match = match.replace(chatags.regexp.beginTagA, "$1"); } else { match = match.replace(chatags.regexp.beginTagB, "$1"); }               keys.push(match); vals.push(1); } else { continue; }       }        for (var i = 0; i < keys.length; i++) { if (typeof chatags.bbCode[keys[i]] === "undefined") { continue; } else { var f = chatags.bbCode[keys[i]][vals[i]]["bbFind"]; var r = chatags.bbCode[keys[i]][vals[i]]["bbReplace"]; string = string.replace(f, r); }       }    }    return string; }; //Run parser on new message mainRoom.model.chats.bind("afteradd", function(c) {

var string = $("#Chat_" + roomId + " .message:last").html; //Run parser string = chatags.parse(string); $("#Chat_" + roomId + " .message:last").html(string); }); //