💖execCode A
[EXEC-A-DATA]
win = window;
doc = document;
Fid = a => typeof(a) == "object" ? a : doc.getElementById(a);
Ftag = (...e) => (e.length > 1 ? Fid(e[0]) : doc).getElementsByTagName(e[e.length - 1]);
Fcn = (...e) => (e.length > 1 ? Fid(e[0]) : doc).getElementsByClassName(e[e.length - 1]);
Fce = a => doc.createElement(a);
Fap = (a,b) => Fid(a).appendChild(b);
Fev = (o,a,b) => o.addEventListener(a,b,false);
res = o => o.responseText.replace(/\r?\n/g, "\t");
enc = s => encodeURIComponent(s);
conBo = s => s.replace(/.+\x3cdiv id="main">/, "").replace(/<\/div>\t*<\/div><\/body>.+/, "");
isMobile = navigator.userAgent.includes("Mobile");

Fcl = (o,s,a) => {
Fid(o).classList.toggle(s);
Fid(a).classList.toggle("se");
};

echo = (...a) => {
let n = a.length;
let o = typeof(a[0]) == "string" ? Fid(a[0]) : a[0];
if(o.tagName == "SELECT"){
if(n == 1) return o.options[o.selectedIndex].value;
else {
if(typeof(a[1]) == "string"){
if(a[1] != ""){
for(let i = o.options.length - 1; i >= 0; i--){
if(o.options[i].value == a[1]) break;
}
o.selectedIndex = i > 0 ? i : 0;
} else o.selectedIndex = 0;
} else o.selectedIndex = a[1];
}
} else {
type = o.tagName == "TEXTAREA" || o.tagName == "INPUT" ? "value" : "innerHTML";
if(n == 1) return o[type];
else {
if(n == 2){
let s = a[1];
if(typeof(s) == "object") s = s.join("");
o[type] = (s + "").replace(/\t/g, "\n");
} else {
let s = o[type];
if(a[2] == "add") o[type] = s + a[1];
if(a[2] == "math") o[type] = Number(s) + a[1];
}
}
}
return o;
};

counter = s => {
let dt = s.replace(/\r?\n/g, " ").replace(/"/g, " ").
replace(/'/g, " ").replace(/<|>/g, " ").
replace(/\x26;/g, " ");
dt = dt.replace(/[\ud800-\udbff][\udc00-\udfff]/g, " ");
return dt.length;
};

echoCounter = s => {
s = s.replace(/\x3cbr ?\/?>/gi, " ");
return counter(fullDec(s));
};

fs1 = () => {
return "";
};

/* -- 日記(/数値.html)の数値からURLを生成 -- */
dateToOnes = s => {
let d = new Date();
d.setTime((s - 0) * 1000);
return `/diary/${d.getFullYear()}/${("0"+(d.getMonth()+1)).slice(-2)}/${s}.html`;
};

pageLogs = s => {
/* xhr("/cgi-bin/footprint" + "_logger" + ".cgi?oid=" + s, null, e => {}); */
};

/* -------- 表示領域の切り替え -------- */
dispChg = (disp,no) => {
let cnt = disp ? mmCNT : msCNT;
let tab = Fid("tab" + disp).classList;
let tar = Ftag("tab" + disp, "div");
let par = disp ? "M" : "F" ;
if(cnt == no){
tab.toggle("full");
let o = doc.body.classList;
} else {
if(cnt != null){
tar[cnt].classList.remove("sel");
tab.remove("bg" + cnt);
}
if(cnt != null) Fid(par + cnt).classList.remove("sel");
Fid(par + no).classList.add("sel");
tar[no].classList.add("sel");
let obj = Fid("tabs" + disp);
obj.classList.add("sm");
tar[no].append(obj);
setTimeout(() => { obj.classList.remove("sm"); }, 50);
tab.add("bg" + no);
disp ? mmCNTbef = mmCNT : msCNTbef = msCNT;
disp ? mmCNT = no : msCNT = no;
if(disp == 1 && no == 4) getPcInfo();
if(disp == 1 && no == 3) thumbUnLoadCheck();
if(!disp){
modeOf(no == 2 ? 0 : no == 3 ? 2 : 1);
if(no == 3){
if(mmCNT != 2) dispChg(1, 2);
// let viewTop = echo("eDispText") != "" ? "eDisp" : "F3";
// Fid("F3").scrollIntoView();
}
}
}
};

dateEntry = () => {
let n = echo("dateIs");
if(!n.match(/^\d+$/)) return;
let d = new Date();
d.setTime(n);
let t = d.toLocaleString();
echo("dateText", t);
};

/* -------- 短縮エイリアス -------- */
/* -- リンク短縮置換 -- */
docDefaultRep = s => {
s = s.replace(/<\[([0-9a-z\- ]+):x1\]>/g, (e0,e1) =>
"<ul class='link_text'>" + e1.replace(/([0-9a-z\-]+)\s*/g,
`<li><a target="_blank" href="main.html?fn=3;user=$1">$1</a></li>`) + "</ul>");

s = s.replace(/\s*<\[([0-9a-z\-]+)\,(\d+)\,(.+?)\]>\s*/g,
(e0,e1,e2,e3) => {
let dt = new Date();
dt.setTime((e2 - 0) * 1000);
const uri = "/home/" + e1 + "/diary/" + dt.getFullYear() +
"/" + ("0" + (dt.getMonth() + 1)).slice(-2) + "/" + e2 + ".html";
return `<li><a class="ax" href="${uri}" onclick="mainShow('${uri}', this); return false">${e3}</a></li>`
});
s = s.replace(/Q1/g, "<div").replace(/Q2/g, "</div>");
s = s.replace(/Q3/g, "<span").replace(/Q4/g, "</span>");
return s;
};

/* -- CSS短縮置換 -- */
cssDefaultRep = s => {
s = s.replace(/\(\s*lg\-(\d+deg)/g, "background-image:linear-gradient($1");
s = s.replace(/lg\-(\d+deg)/g, "linear-gradient($1");
s = s.replace(/ bg\-c:/g, " background-color:");
return s;
};

/* ------------ extra 拡張の定義 ----------- */
extraEntry = (obj, no) => {
extraObj = obj;
befArchive = 0;
obj.classList.add("moves");
switch(no) {
case 0 :
yearListCNT = 0;
yearList = echo("yearDisp").match(/\/home\/[a-z0-9\-]+\/diary\/\d{4}/g);
yearListEntry();
break;
case 1 :
xmlCNT = 0;
createCgiCount();
break;
}
};

extraRemove = () => {
extraObj.classList.add("zero");
setTimeout(() => { extraObj.remove(); }, 1000);
};

extraMenu = (e, val) => {
Fid('index').classList.toggle(val);
e.classList.toggle("ext");
};

/* -- 全索引の生成 -- */
yearListEntry = () => {
if(yearList.length == 0){
extraRemove();
let obj = Fid("yExtra");
obj.innerHTML += `
\x3cspan onclick="extraMenu(this, 'aid-s')">番号\x3cspan>
\x3cspan onclick="extraMenu(this, 'time-s')" class="ext">日付\x3c/span>
\x3cspan onclick="extraMenu(this, 'year-s')">移動\x3c/span>`;
Fid("index").classList.add("arc-on");
Fid("sTabVis").classList.add("ex-vis");
tabsCount("sTab", "F0", "a");
} else {
yearListObj = yearList.shift();
yearListDate = yearListObj.replace(/.+(\d{4})/, "$1");
xhr(yearListObj + "/", null, yearListCreate);
}
};

yRep = (dt, fg) => {
let dat = dt.join("");
if(fg){
dat = dat.replace(/<!\-\-ARTICLE id="(\d+)"\-\->(<li>)/g, (e0,e1,e2) => {
yCNT++;
yearListCNT++;
return `${e2}<span class="vol">${yearListCNT}</span><span class="aid">A${e1}</span>`;
});
dat = dat.replace(/<!\-\-[^>]+>/g, "");
} else {
dat = dat.replace(/<\/div>.+?entry_title">/g, "</span> ").
replace(/id="(A\d+).+?entry_date">/g, (e0,e1) => {
yCNT++;
yearListCNT++;
return `<li><span class="vol">${yearListCNT}</span><span class="aid">${e1}</span><span class="time">`
});
dat = "\x3cli>" + dat.replace(/(\x3c\/a>)/g, "$1\x3c/li>") + "\x3c/li>";
}
echo("yExtra", `投稿件数 : ${ yearListCNT }件` );
return axRep(dat);
};

ydEntry = num => {
const obj = Fid("yd" + num);
if(obj){
delayScroll(obj, null);
} else {
Fid("yExtra").previousSibling.click();
}
};

ydEcho = (year, cnt) => {
echo("yd" + year, cnt);
echo("ydm" + year, "💙" + year + "年<div>" + cnt + "件</div>");
setTimeout(() => { yearListEntry(); }, 500);
};

/* -- 全索引の生成 サーバーの戻り -- */
yearListCreate = e => {
yCNT = 0;
const is1Mon = e.indexOf("/diary/" + yearListDate + "/01/") != -1;
e = conBo(e).match(/<ul.+?<\/ul>/g);
let dat = e == null ? "" : yRep(e, 1);
const obj = Fce("div");
obj.id = "Y" + yearListDate;
obj.className = "y-disp";
echo(obj, `<div class="y-head">
<span class="ydins">🧡${ yearListDate }年:</span>
全 <span id="yd${ yearListDate }">0</span>件
</div>
${ dat }`
);
Fid("indexDisp").append(obj);
if(is1Mon){
xhr(yearListObj + "/01/", null, ea => {
dat = conBo(ea).replace(/title="[^"]+"/g, "").match(/id="A\d+.+?<\/a>/g);
let ul = Fce("ul");
echo(ul, yRep(dat, 0));
obj.append(ul);
ydEcho(yearListDate, yCNT);
});
} else {
ydEcho(yearListDate, yCNT);
}
};

cgiCount = e => {
const n = e.match(/\((\d+) 件\)/) ? RegExp.$1 - 0 : 0;
const d = e.match(/>(\d{4} \d\d\/\d\d \d\d:\d\d)</) ? RegExp.$1 : "";
const o = Ftag("categories", "li");
const obj = o[xmlCNT];
echo(obj.firstChild, d);
let a = Fce("span");
a.className = "len";
Fap(obj, echo(a, n + " 件"));
if(++xmlCNT < o.length) createCgiCount();
else extraRemove();
};

createCgiCount = () => {
const o = Ftag("categories", "li");
const uri = "/cgi-bin/diary.cgi?oid=" + xmlUSER + ";c=" + o[xmlCNT].className.replace(/C/, "") + ";n=1";
xhr(uri, null, cgiCount);
};

/* ----- 1月分の索引の追加 -------- */
/*
onesData = s => {
return;
let obj = s.match(/<div class="entry C.+?<div class=">(\d{4}).+?<\/h2>/) ? RegExp.$1 : "";
let dt = s.match(/<h2>(\d{4})(.+?)<\/h2>/) ? RegExp.$1 + RegExp.$2 + " " + num + "件 C" : "";
let node = Fid("dt" + RegExp.$1);
for(let i = 0; i < obj.length; i++){
obj[i] = obj[i].replace(/<div class="entry_body/, "</li>").
replace(/<div>/, "").
replace(/<div class="entry_date">(\d{4} \d\d\/\d\d) \d\d:\d\d<\/div>/,
"<span>$1</span>").
replace(/<div class="entry C\d+" id="A(\d+)">\s/g, // \s*
"<li><span>A$1</span>");
}
obj.reverse();
s = obj.join("");
s = s.replace(/ title="[^"]+"|<\/?div[^>]*>|\t/g, "").replace(/ {2,}/g, " ");
s = axRep(s);
echo(node, dt);
echo(node.nextSibling, "<ul>\n" + s + "</ul>\n");
let par = Ftag(node.parentNode.previousSibling, "a")[0];
echo(par, echo(par).replace(/(\d+)件/, (e0,e1) => e1 + "+" + num + "= " + (Number(e1) + num) + "件"));

let mon = Fid("Mon" + year + "01");
mon.classList.add("ex");
let mo = echo(mon).replace(/^0/, "").replace("10", "a").replace("11", "b").replace("12", "c");
echo(mon, "<span>" + num + "</span><sup>" + mo + "</sup>");
xmlYearEntry();
};
*/
/* -- 月毎の文字置換 Archives呼び出し -- */
monthPageRep = s => {
s = s.replace(/\x3c!\-\-.+?\-\->/g, "").replace(/\x3chr \/>/, "");
s = s.replace(/(\x3ch2)>(.+?)(\x3c\/h2>)(.+)/, (e0,e1,e2,e3,e4) => {
let es = e4.split("\x3chr />").reverse();
return e1 + " class=\"month_all\">\x3cdiv class=\"h2_d1\">" + e2 + "\x3cspan>全" +
es.length + "件\x3c/span>\x3c/div>\x3cdiv>.\x3c/div>" + e3 +
"\x3cdiv>"+ es.join("") + "\x3c/div>";
});
return s;
};
/* -------- 数値より投稿日取り出し -------- */
uDate = s => {
let dt = "";
if(s.match(/diary\/\d{4}\/\d\d\/(\d+).html/)){
dt = new Date();
dt.setTime((RegExp.$1 - 0) * 1000);
let d = dt.getDay();
let day = "日月火水木金土".charAt(d);
dt = dt.toLocaleString('ja-JP').replace(/\/(\d) /, "/0$1 ").
replace(/ (\d:)/, " 0$1").replace(/\/(\d\/)/, "/0$1").
replace(/(\d{4})./, "$1 ") +
" (<i class=\"day" + d + "\">" + day + "</i>)";
}
return dt;
};

modeFunc = no => {
modeFunc.bef = cMode;
modeOf(no);
setTimeout(() => { modeOf(modeFunc.bef) }, 2000);
};

/* -- モードの設定 -- */
modeOf = no => {
const o = doc.body.classList;
o.remove("cen-harf", "no-tab", "zs", "za", "zf", "zn", "toright");
let cc = 2;
switch (no % 10) {
case 0 : cc = 1; break;
case 1 : o.add("zn"); cc = 0; break;
case 2 : o.add("toright", "zn"); cc = 3; break;
case 3 : o.add("zs"); cc = 0; break;
case 4 : o.add("zs", "toright"); cc = 3; break;
case 5 : o.add("za"); break;
case 6 : o.add("za", "toright"); break;
case 7 : o.add("zf"); break;
case 8 : o.add("zf", "toright"); break;
}
if(no > 99) o.add("cen-harf");
if(no % 100 > 9) o.add("no-tab");
cMode = no;
cenImage(cc);
};

getLogs = () => {
xhr("/cgi-bin/footprint.cgi?oid=new-diary", null, e => {
const user = e.match(/href="\/home\/([\w\-]+)/) ? RegExp.$1 : "";
const since = e.match(/(\d{4} \d\d\/\d\d) \d\d:\d\d/) ? RegExp.$1 : "";
const count = e.match(/総アクセス数: (\d+)/) ? RegExp.$1 : "";
alert( user + " , " + count + " , " + since);
});
};

userVoid = () => {
if(!isLogin){
alert("管理コマンドです"); return;
}
getLogs();
};

addCssEntry = () => {
const obj = window["main_" + xmlUSER].document;
if(!obj) return;
if(obj.URL.includes("footprint.cgi")){
const par = Fid("M1").classList;
par.add("trim");
setTimeout(() => {
Ftag(obj, "link")[0].href =
"/home/" + (Fid("addCss").checked ? "css-2" : xmlUSER) + "/footprint.css";
setTimeout(() => {
par.remove("trim");
}, 800);
}, 800);
}
};

[/EXEC-A-DATA]


編集 なんちゃん : テスト投稿$abc