markdown bahamut

在舊版小屋的右側新增 markdown 編輯器!

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name         markdown  bahamut
// @namespace    http://home.gamer.com.tw/ding890326
// @version      0.1
// @description  在舊版小屋的右側新增 markdown 編輯器!
// @author       YOWJUORN (遊隼)
// @match        https://home.gamer.com.tw/creationNew1.php
// @match        https://home.gamer.com.tw/creationEdit1.php?sn=*
// @require      https://cdn.jsdelivr.net/npm/marked/marked.min.js
// ==/UserScript==

var body_editstyle;
var textarea_source;
var textarea_markdown;
var standard_html;

(function () {
    add_aside_editor();
})();

function add_aside_editor() {
    var div_aside = document.getElementById('BH-slave');
    var div_aside_gads = document.getElementById('flySalve');

    var h5_markdown_title = document.createElement('h5');
    h5_markdown_title.innerHTML = 'Markdown 編輯器';
    div_aside.insertBefore(h5_markdown_title, div_aside_gads);

    textarea_markdown = document.createElement('textarea');
    textarea_markdown.hidden = true;
    textarea_markdown.style.width = '298px';
    textarea_markdown.style.height = '568px';
    textarea_markdown.style.resize = 'vertical';
    textarea_markdown.style.backgroundColor = '#1E1E1E';
    textarea_markdown.style.color = '#D4D4D4';
    textarea_markdown.style.fontFamily = 'Courier New';
    textarea_markdown.addEventListener('input', textarea_markdown_ischange);
    div_aside.insertBefore(textarea_markdown, div_aside_gads);

    var new_div = document.createElement('div');
    new_div.classList.add('BH-rbox');
    new_div.classList.add('MSG-list2');
    new_div.innerHTML = '<a href="//home.gamer.com.tw/ding890326" target="_blank"><img src="https://avatar2.bahamut.com.tw/avataruserpic/d/i/ding890326/ding890326.png" class="MSG-myavatar"></a>' +
        '<ul class="MSG-mydata1">'+
        '<li>擴充作者:<span class="TS2">游隼</span></li>'+
        '<li>勇者評價:<a href="heartList.php?owner=ding890326" target="_blank" class="AT2">4</a><br>'+
        '<br><span class="AT1">~~歡迎來我的小屋玩~~</span></li>'+
        '<li>都 2120 年了<br>'+
        '巴哈還不支援 Markdown<br>'+
        '這是一個單向 (md>巴哈)<br>'+
        '的 Markdown 編輯器<br>'+
        '有 bug 可以回報小屋</li>'+
        '</ul>';
    div_aside.insertBefore(new_div, div_aside_gads);

    var button_initialization_mdeditor = document.createElement('button');
    button_initialization_mdeditor.innerHTML = '我知道了';
    button_initialization_mdeditor.style.width = '100%';
    button_initialization_mdeditor.onclick = function () {
        body_editstyle = window.frames[0].document.body;
        textarea_source = document.getElementById('source');
        textarea_source.addEventListener('input', textarea_source_ischange);
        new_div.hidden = true;
        textarea_markdown.hidden = false;
    };
    new_div.appendChild(button_initialization_mdeditor);
}

function textarea_source_ischange() {
    //textarea_markdown.value = bahacode_to_markdown(textarea_source.value);
}

function textarea_markdown_ischange() {
    marked.setOptions({gfm: true});
    standard_html = marked(textarea_markdown.value);
    standard_html = bahaize.p(standard_html);
    standard_html = bahaize.em(standard_html);
    standard_html = bahaize.strong(standard_html);
    standard_html = bahaize.table(standard_html);
    standard_html = bahaize.pre_code(standard_html);
    standard_html = bahaize.code(standard_html);
    body_editstyle.innerHTML = standard_html;
}

var bahaize = {
    p: function (mdstr) {
        mdstr = mdstr.replaceAll('</p><p>', '<br/>');
        mdstr = mdstr.replaceAll('</p>\n<p>', '<br/>\n');
        mdstr = mdstr.replaceAll('<p>', '');
        mdstr = mdstr.replaceAll('</p>', '');
        return mdstr;
    },
    em: function (mdstr) {
        mdstr = mdstr.replaceAll('<em>', '<i>');
        mdstr = mdstr.replaceAll('</em>', '</i>');
        return mdstr;
    },
    strong: function (mdstr) {
        mdstr = mdstr.replaceAll('<strong>', '<b>');
        mdstr = mdstr.replaceAll('</strong>', '</b>');
        return mdstr;
    },
    blockquote: function (mdstr) {
        mdstr = mdstr.replaceAll('<blockquote>', '<tab>');
        mdstr = mdstr.replaceAll('</blockquote>', '</tab>');
        return mdstr;
    },
    table: function (mdstr) {
        mdstr = mdstr.replaceAll('<table>', '<table width="98%" cellspacing="1" cellpadding="1" border="1">');
        mdstr = mdstr.replaceAll('<td ', '<td bgcolor="#F4F4F4"');
        mdstr = mdstr.replaceAll('<td>', '<td bgcolor="#F4F4F4">');
        mdstr = mdstr.replaceAll('<th ', '<td bgcolor="#D5D5D5"');
        mdstr = mdstr.replaceAll('<th>', '<td bgcolor="#D5D5D5">');
        mdstr = mdstr.replaceAll('</th>', '</td>');
        mdstr = mdstr.replaceAll('</thead>\n<tbody>', '');
        mdstr = mdstr.replaceAll('<thead>', '<tbody>');
        return mdstr;
    },
    pre_code: function (mdstr) {
        mdstr = mdstr.replaceAll('<pre><code>', '<table width="98%" cellspacing="1" cellpadding="1" border="1"><tbody><tr bgcolor="#F4F4F4"><td><font style="color:#000000;"><font face="Courier New">');
        mdstr = mdstr.replaceAll('</code></pre>', '</font></font></td></tr></tbody></table>');
        return mdstr;
    },
    code: function (mdstr) {
        mdstr = mdstr.replaceAll('<code>', ' <font size="4"><font style="background-color:#F4F4F4;"><font style="color:#F4F4F4;">`</font><font style="color:#000000;"><font face="Courier New"><font size="3">');
        mdstr = mdstr.replaceAll('</code>', '</font></font><font style="color:#F4F4F4;">`</font></font></font></font> ');
        return mdstr;
    }
};