Picarto Markup

Enable markups in Picarto chats

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name        Picarto Markup
// @description Enable markups in Picarto chats
// @include     *//picarto.tv/*
// @version     1
// @grant       none
// @license     MIT
// @namespace https://greasyfork.org/users/184200
// ==/UserScript==

function markup(str) {

	var matches = ("i>" + str).match(/[a|i|"|n]>(.*?)(?=<)/gm);
	var nonmatches = str.match(/<(.*?)(?=[a|i|"|n]>)/gm);

    var star = /\*(\S(.*?\S)?)\*/gm;
	var double_star = /\*\*(\S(.*?\S)?)\*\*/gm;
	var undersc = /\_(\S(.*?\S)?)\_/gm;
	var double_undersc = /\_\_(\S(.*?\S)?)\_\_/gm;
	var tilde = /\~(\S(.*?\S)?)\~/gm;
	var double_tilde = /\~\~(\S(.*?\S)?)\~\~/gm;

	matches[0] = matches[0].substring(2);

	var newstring = "";

	for (i = 0; i < matches.length; i++) {
        if( !(i+1<matches.length && matches[i+1].startsWith("a")) ) {
            matches[i] = matches[i].replace(double_star, '<b>$1</b>');
            matches[i] = matches[i].replace(double_undersc, '<u>$1</u>');
            matches[i] = matches[i].replace(star, '<i>$1</i>');
            matches[i] = matches[i].replace(undersc, '<i>$1</i>');
            matches[i] = matches[i].replace(double_tilde, '<s>$1</s>');
        }
        newstring = newstring + matches[i] + nonmatches[i];
	}

    newstring += "n>";
    return newstring;
}

$(document).ready(() => {
    let targetNode = document.getElementById("chatContainer");
    let options = {childList:true,subtree:true};
    let observer = new MutationObserver((mutationList)=>{
        let msgs = document.getElementsByClassName("theMsg");
        for(let a = msgs.length-1; a >= 0; a--){
            let m = msgs[a];
            if(!m.classList.contains("MarkUp")){
                m.classList.add("MarkUp");
                m.innerHTML = markup(m.innerHTML);
            }
        }
    });
    observer.observe(targetNode, options);
});