//【登録場所】 "V2C\script\system\rescheck.js"
//【内容】rescheck.jsのまとめ
//【備考】beginCheckとendCheckの{}内で、行頭のコメント「//」を、利用する行ごとに解除することで、有効になります。
//【スクリプト】
// ----- 次の行から -----
function beginCheck( th, cx ) {
var ck = {}, bd = th.board;
// ***** 次の行から利用する行頭の「//」を削除する *****
// cx.setCheckRawText( false ); //テキスト置換関数checkRawTextを実行しない。
// if (bd.allAnonymousName.length > 0) ck.nanashi = bd.allAnonymousName; //各板のデフォルト名無しを'名無し'に置換
// ck.fukidasi = bd.key.search("live") != -1; //実況系板で名前が吹出しの場合、レスの最初に加える
// ck.sankakke = true; //さんかっけーを△にする。
// ck.no_anchor_1001 = th.bbs.is2ch; //1001のアンカーはリンクしない。
// ck.renbanURL = true; //URLのみの行が連続する場合、各行に番号を振る
// ck.ZentoHan = true; //全角英数を半角英数に
// ck.YashitoKata = true; //香具師を方に
ck.kyouseiNanasi = true; ck.anonymousName = bd.anonymousName; //!ninja、!denki、!nanja、!kab、!omikuji、!damaのみを名無し扱いにする。
// ck.yakitori = true; //名前欄の焼き鳥" [―{}@{}@{}-] "を消す。
// ck.no_anchor_over_self = true; //自レス以上のレス番アンカーはリンクしない。
// ck.breakWWWLink =true;//"www."から始まるURLはリンク化しない。
// cx.setCheckAA( false ); //AA判定関数checkAAを実行しない。
// ck.aa_type1 = bd.key.equals( "v2cj" ); //V2Cスクリプトのレスを自動AA判定する。
// ck.aa_type2 = true; //( ・e・)とノノ∮‘ _l‘)を自動AA判定する。
// cx.setCheckNG( false ); //非表示判定関数checkNGを実行しない。
// ck.ng_res1 = true; //レス1を常に非表示にする。
// ck.ng_kote = bd.key.equals( "software" ) ? bd.anonymousName : null; //ソフ板でn|aさん以外のコテハンを非表示判定する。
// ***** 前の行まで *****
for ( var i in ck ) {
return ck;
}
return false;
}
var pu = java.util.regex.Pattern.compile('((?:h|h)?ttps?://[!#-;=?-Z_a-z~ ]+ ?(?:<br> ?|$)){2,}');
var pb = java.util.regex.Pattern.compile(' ?(?:<br> ?|$)');
var pn = java.util.regex.Pattern.compile('(?: </b>(?:忍法帖【Lv=\\d+,xxxPT?】[\\(\\)\\+\\-\\d:]*|'
+ '【(?:北陸?|東北?|中(?:部|国)|関|四国?|九州?|沖縄?)電 (?:<font color=red>)?[.\\d-]+(?:<\/font>)? %】|'
+ '【D\\w+\\d{16}】|株価【(?:E|\\d+)】|【(?:大吉|中吉|吉|小吉|末吉|凶|大凶|豚|ぴょん吉|だん吉|神|女神)】|'
+ '【\\d+円】)<b>[ ]+)+'
+ '|番組の途中ですが<\\/b>.+<b>です');
var pn2 = java.util.regex.Pattern.compile('</b>\\(.+\\)<b>');
var pa = java.util.regex.Pattern.compile('((?:(?:>)+|>+) ?)(\\d+)');
var pw = java.util.regex.Pattern.compile('((?:^|[^/])(?:www))(\\.)');
function checkRawText( res, cx ) {
var name = res.name;
if (name) name = res.name + '';
var msg = res.message + '';
var num = res.number;
var obj = cx.checkObject;
if ( obj.fukidasi ) {
if ( name.search(/(-v-| ̄(V|V|∨|\\||\|/) ̄)/) != -1 ) {
msg = name + '\n' + msg;
}
}
if ( obj.kyouseiNanasi && name ) {
if (pn.matcher(name).matches()) {
res.setNanasi(true);
} else if ((name.indexOf(obj.anonymousName) >= 0) && (name != obj.anonymousName)) {
var divname = name.split(obj.anonymousName);
//if (divname[0]) { } /* デフォ名の前部分の判定 */
if (divname[1]) { /* デフォ名の後部分の判定 */
if (pn2.matcher(divname[1]).matches()) {
res.setNanasi(true);
}
}
}
}
if ( obj.yakitori ) name = name.replace( / <\/b>\[―\{\}@\{\}@\{\}-\]<b> /g, '' );
if ( obj.sankakke ) msg = msg.replace( /さんかっけー/g, '△' );
if ( obj.YashitoKata ) msg = msg.replace( /香具師/g, '方' );
if ( obj.no_anchor_1001 && num > 1000 ) {
var sti=res.timeid;
if (sti.startsWith( 'Over ' )) {
msg = msg.replace( /(>>)(\d+)/g, '$1‎$2' );
}
}
if ( obj.no_anchor_over_self && num > 1 ) {
var mt = pa.matcher(msg);
if (mt.find()) {
mt.reset();
var sb = java.lang.StringBuffer();
var lpc = 0;
while (mt.find() && lpc < 10) {
if (mt.group(2) >= num) {
mt.appendReplacement(sb, '$1‎$2');
}
lpc++;
}
msg = mt.appendTail(sb);
}
}
if( obj.nanashi ) {
for(var i = 0;i<obj.nanashi.length;i++) {
if(name == obj.nanashi[i]) {
name = '名無し'
break;
}
}
}
if ( obj.renbanURL ) {
var mu=pu.matcher(msg);
if (mu.find()) {
var su=mu.group();
var mb=pb.matcher(su);
var sb=new java.lang.StringBuilder(msg.substring(0,mu.start()));
sb.append('<font color="gray">');
var i=1;
var ip0=0;
while (mb.find()) {
var ip=mb.end();
if (ip==ip0) {
break;
}
if (i<=9) {
sb.append('0');
}
sb.append(String(i++));
sb.append('. ');
sb.append(su.substring(ip0,mb.start()));
sb.append(mb.group());
ip0 = ip;
}
sb.append('</font>');
sb.append(msg.substring(mu.end()));
msg = sb + '';
}
}
if ( obj.breakWWWLink ) {
var mt = pw.matcher(msg);
if (mt.find()) {
msg = mt.replaceAll('$1<!-- -->$2');
}
}
if ( obj.ZentoHan ) {
msg = (msg+'').replace(/([0-9a-zA-Z])/g,function(whole,reg){
var sub = '0'.charCodeAt(0)-'0'.charCodeAt(0);
return String.fromCharCode(reg.charCodeAt(0)-sub);
});
}
res.setName( name );
res.setMessage( msg );
}
function checkAA( res, cx ) {
var msg = res.message + '';
var obj = cx.checkObject;
if ( obj.aa_type1 && msg.indexOf( 'function' ) >= 0 ) {
res.setAA(true);
}
if ( obj.aa_type2 && ( msg.indexOf( '( ・e・)' ) >= 0 || msg.indexOf( 'ノノ∮‘ _l‘)' ) >= 0 ) ) {
res.setAA(true);
}
}
function checkNG( res, cx ) {
var sn = res.name;
var obj = cx.checkObject;
if ( obj.ng_res1 && res.number == 1 ) {
res.setNG( 'レス1' );
}
if ( obj.ng_kote && ( sn != null ) && !sn.startsWith( 'n|a' ) && !sn.equals( obj.ng_kote ) ) {
res.setNG( 'コテハン' );
}
}
function endCheck( th, cx ) {
// ***** 次の行から利用する行頭の「//」を削除する *****
//java.lang.System.gc(); //自動的にガベージコレクションを実行する。
// ***** 前の行まで *****
}
// ----- 前の行まで -----