Jp Meta

http://topia.wikidot.com/jp-meta/code_/1

<head>
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0"/>
<script src="./2" defer></script><!--config-->
<script src="./3" defer></script>
<link rel="stylesheet" href="./4"/>
</head>
<body>
 
<input type="text" id="que" />
<ul id="list"></ul>
<pre id="progress">Awaiting fetching...</pre>
 
<script>
if(window !== window.parent) {
    var site = `http://${document.referrer.split("http://")[1].split("/")[0]}/`;
    var _wrap = document.createElement("div");
    document.body.appendChild(_wrap);
    var _old= 0;
    var url = location.href.replace(/^.*\//,'/');
 
    (function _f() {
        var _new = _wrap.getBoundingClientRect().top;
        if(_new !== _old){
            var iframe = document.createElement("iframe");
            var _rand = String(Math.floor(Math.random() * 10000));
            _wrap.innerHTML = '';
            iframe.src = `${site}common--javascript/resize-iframe.html?${_rand}#${_new}${url}`;
            iframe.style.display = "none";
            _wrap.appendChild(iframe);
            _old = _new;
        }
        setTimeout(_f, 250);
   })();
 
}
</script>
</body>
var CONFIG = {
    PROG: document.querySelector('#progress'),
    LIST: document.querySelector('#list'),
    QUE: document.querySelector('#que')
}
var WIKI = {
    DECODE: function(s){
        var b = 0, l = 0, n = 0;
        return s ? (s = (s + '\n')
            .split('\n').map(function(v) {
                var _b = 0, _ = v.replace(/^(\>+?) /, function(a, b) {
                    return(_b=b.split('').length,'')
                });
                return(_=b==_b?_:('<'+(b>_b?'/':'')+'blockquote>').repeat(Math.abs(b-_b))+_,b=_b,_);
            }), s.pop(), s.join('\n'))
            .replace(/\[{2}(.+?)\]{2}/g, '<$1>')
            .replace(/\*{2}(.+?)\*{2}/g, '<b>$1</b>')
            .replace(/\/{2}(.+?)\/{2}/g, '<i>$1</i>')
            .replace(/\-{2}(.+?)\-{2}/g, '<span style="text-decoration: line-through;">$1</span>')
            .replace(/#{2}(.+?)\|(.+?)#{2}/g, '<span style="color:$1">$2</span>') : s;
    }
}
var FORMAT = {
    scp: {
        TYPE: {
            base: function(a) {
                return a.map(v=>v.trim()).filter(v=>v).map(v=>{
                    var m = v.match(/^\[{3}(.+?)(?:\|(.*?)|)\]{3}(?: \- (.+?)||(.+?))$/), x = m ? 0 : {n: v.match(/\[{3}(.+?)(?:\||\]{3})/), a: v.replace(/\[{3}(.+?)(?:\|(.*?)|)\]{3}/g,(_,a,b)=>(b||a))}, o = m ? {pagename: m[1], aka: WIKI.DECODE(m[2]), metatitle: WIKI.DECODE(m[3])} : {pagename: x.n&&x.n[1], aka: WIKI.DECODE(x.a), metatitle: void(0)};
                    return (m && m[4] && (o.aka = o.pagename + WIKI.DECODE(m[4])), o)
                });
            }
        }
    }
};
 
FORMAT['scp'].TYPE['en'] = function(s) {
    var a = s.split(/\[\[# \d+?\]\](?:\n\+ .*?\n|)/).slice(1), l = a.length;
    a[l-1] = a[l-1].split(/\[\[\/div\]\]/)[0];
    return FORMAT['scp'].TYPE.base(a.map(v=>v.split(/(?:\n|)\* /)).flat());
};
FORMAT['scp'].TYPE['ru'] = function(s) {
    return FORMAT['scp'].TYPE.base((s.split('[[# list]]')[1].split('[[/div]]')[0].match(/\* (.+?)\n/g)||[]).map(v=>v.match(/\* (.+?)\n/)[1]));
};
 
FORMAT['scp'].TYPE['jp'] = FORMAT['scp'].TYPE['ko'] = FORMAT['scp'].TYPE['cn'] = FORMAT['scp'].TYPE['fr'] = FORMAT['scp'].TYPE['pl'] = FORMAT['scp'].TYPE['es'] = FORMAT['scp'].TYPE['th'] = FORMAT['scp'].TYPE['de'] = FORMAT['scp'].TYPE['it'] = FORMAT['scp'].TYPE['ua'] = FORMAT['scp'].TYPE['pt'] = FORMAT['scp'].TYPE['cz'] = FORMAT['scp'].TYPE['zh'] = FORMAT['scp'].TYPE['en'];
 
(async(_)=>{
    var r = {}, o = {}, i = 2, x, y, t;
    while(i) {
        (x = null, t = (await(await fetch(`../../local--code_/jp-inc/${i++}`)).text()).replace(/^\<(.*?)\>/, (_,k) => (x = k, '')).trim(), x ? (r[x] = t, y = ((s,a,b)=>(a.forEach(v=>(b=v.split('='), s[b[0]] = b[1])),s))({},x.split('&')), CONFIG.PROG.innerText = (`Now loading: ${y.type}-${y.lang} (${y.index})`)) : (i = 0));
    }
    Object.keys(r).forEach(k=>(x=>(k.split(/=|&/).forEach(a=>(x=(x[a]=x[a]||{}))),x.key=((s,a,b)=>(a.forEach(v=>(b=v.split('='), s[b[0]] = b[1])),s))({},k.split('&')),x.value=FORMAT[x.key.type].TYPE[x.key.lang](r[k])))(o));
    CONFIG.PROG.innerText = 'Loading complete.';
    _._MetaData = Object.assign({},o);
 
    var EX = {
        KEY: Object.keys(o.type.scp.lang)
    }
    EX.REG = new RegExp(`(?:\\s|\\-|^)(${EX.KEY.join('|')})(?:\\s|$)`);
 
    CONFIG.QUE.addEventListener('input',e=>{
        var s = e.target.value.toLowerCase(), x;
        var m = s.replace(EX.REG, (_,l)=>(x = l,''));
        var t = x
            ? ((a,_)=>(_ = o.type["scp"].lang[x].index, Object.keys(_).forEach(i=>(a = a.concat(_[i].value))),a))([])
            : ((a,_)=>(EX.KEY.forEach(l=>(_ = o.type["scp"].lang[l].index,Object.keys(_).forEach(i=>{a = a.concat(_[i].value)}))),a))([]);
        var r = t.filter(v=>((v.pagename||'').toLowerCase().match(m) || (v.aka||'').replace(/\<.+?\>/g,'').toLowerCase().match(m) || (v.metatitle||'').replace(/\<.+?\>/g,'').toLowerCase().match(m))).slice(0,20);
        CONFIG.LIST.innerHTML = r.map(v=>`<li><a href="http://scp-jp.wikidot.com/${v.pagename.toLowerCase()}" target="_blank">${v.aka||v.pagename}</a>${v.metatitle ? ' - <span>'+v.metatitle+'</span>' : ''}</li>`).join('');
    })
})(this);
body {
    font-family: sans-serif;
    font-size: 0.8em;
    padding: 0 .35em;
}
a {
    color: #b01;
    text-decoration: none;
}
a:hover {
    text-decoration: underline;
}
ul {
    list-style: square;
}
input {
    border: 1px solid #aaa;
    border-radius: .25em;
    display: block;
    font-size: 1.3em;
    padding: .5em;
    transition: all .25s;
    width: 100%;
}
input:focus {
    border-color: #901;
    outline: none;
}
pre {
    background: #333;
    color: #3f3;
    display: block;
    font-family: 'Andale Mono', 'Courier New', Courier, monospace;
    font-weight: bold;
    padding: .5em;
    text-align: center;
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License