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와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 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);
});