From 38bf2609841d43db3a226a42f2f34e14a24f6a31 Mon Sep 17 00:00:00 2001 From: Jiiks Date: Tue, 25 Aug 2015 15:43:53 +0300 Subject: [PATCH] Fully converted from twitchcord --- js/emotemodule.js | 50 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/js/emotemodule.js b/js/emotemodule.js index 8dbcec4b..8ed2e9e0 100644 --- a/js/emotemodule.js +++ b/js/emotemodule.js @@ -6,11 +6,57 @@ var observer; mutations.forEach(function(mutation) { for(var i = 0 ; i < mutation.addedNodes.length ; ++i) { var next = mutation.addedNodes.item(i); - console.log(next); + if(next) { + var nodes = getNodes(next); + for(var node in nodes) { + injectEmote(nodes[node]); + } + } } }); }); - obsever.observe(document, {childList: true, subtree: true}); + observer.observe(document, {childList: true, subtree: true}); })(); + +function getNodes(node) { + var next; + var nodes = []; + + var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false); + + while(next = treeWalker.nextNode()) { + nodes.push(next); + } + + return nodes; +} + +function injectEmote(node) { + + if(typeof emotesTwitch === 'undefined') return; + + if(!node.parentElement) return; + + var parent = node.parentElement; + if(parent.tagName != "SPAN") return; + + var parentInnerHTML = parent.innerHTML; + var words = parentInnerHTML.split(" "); + + if(!words) return; + + words.some(function(word) { + if (emotesTwitch.hasOwnProperty(word)) { + parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); + } else if(typeof emotesFfz !== 'undefined') { + if(emotesFfz.hasOwnProperty(word)) { + parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); + } + } + }); + + parent.innerHTML = parentInnerHTML; + +}