fork download
  1. //【登録場所】 "V2C\script\system\rescheck.js"
  2. //【内容】rescheck.jsのまとめ
  3. //【備考】beginCheckとendCheckの{}内で、行頭のコメント「//」を、利用する行ごとに解除することで、有効になります。
  4. //【スクリプト】
  5. // ----- 次の行から -----
  6. function beginCheck( th, cx ) {
  7. var ck = {}, bd = th.board;
  8. // ***** 次の行から利用する行頭の「//」を削除する *****
  9.  
  10. // cx.setCheckRawText( false ); //テキスト置換関数checkRawTextを実行しない。
  11. // if (bd.allAnonymousName.length > 0) ck.nanashi = bd.allAnonymousName; //各板のデフォルト名無しを'名無し'に置換
  12. // ck.fukidasi = bd.key.search("live") != -1; //実況系板で名前が吹出しの場合、レスの最初に加える
  13. // ck.sankakke = true; //さんかっけーを△にする。
  14. // ck.no_anchor_1001 = th.bbs.is2ch; //1001のアンカーはリンクしない。
  15. // ck.renbanURL = true; //URLのみの行が連続する場合、各行に番号を振る
  16. // ck.ZentoHan = true; //全角英数を半角英数に
  17. // ck.YashitoKata = true; //香具師を方に
  18. ck.kyouseiNanasi = true; ck.anonymousName = bd.anonymousName; //!ninja、!denki、!nanja、!kab、!omikuji、!damaのみを名無し扱いにする。
  19. // ck.yakitori = true; //名前欄の焼き鳥" [―{}@{}@{}-] "を消す。
  20. // ck.no_anchor_over_self = true; //自レス以上のレス番アンカーはリンクしない。
  21. // ck.breakWWWLink =true;//"www."から始まるURLはリンク化しない。
  22.  
  23. // cx.setCheckAA( false ); //AA判定関数checkAAを実行しない。
  24. // ck.aa_type1 = bd.key.equals( "v2cj" ); //V2Cスクリプトのレスを自動AA判定する。
  25. // ck.aa_type2 = true; //( ・e・)とノノ∮‘ _l‘)を自動AA判定する。
  26.  
  27. // cx.setCheckNG( false ); //非表示判定関数checkNGを実行しない。
  28. // ck.ng_res1 = true; //レス1を常に非表示にする。
  29. // ck.ng_kote = bd.key.equals( "software" ) ? bd.anonymousName : null; //ソフ板でn|aさん以外のコテハンを非表示判定する。
  30.  
  31. // ***** 前の行まで *****
  32. for ( var i in ck ) {
  33. return ck;
  34. }
  35. return false;
  36. }
  37.  
  38. var pu = java.util.regex.Pattern.compile('((?:h|&#x68;)?ttps?://[!#-;=?-Z_a-z~ ]+ ?(?:<br> ?|$)){2,}');
  39. var pb = java.util.regex.Pattern.compile(' ?(?:<br> ?|$)');
  40. var pn = java.util.regex.Pattern.compile('(?: </b>(?:忍法帖【Lv=\\d+,xxxPT?】[\\(\\)\\+\\-\\d:]*|'
  41. + '【(?:北陸?|東北?|中(?:部|国)|関|四国?|九州?|沖縄?)電 (?:<font color=red>)?[.\\d-]+(?:<\/font>)? %】|'
  42. + '【D\\w+\\d{16}】|株価【(?:E|\\d+)】|【(?:大吉|中吉|吉|小吉|末吉|凶|大凶|豚|ぴょん吉|だん吉|神|女神)】|'
  43. + '【\\d+円】)<b>[  ]+)+'
  44. + '|番組の途中ですが<\\/b>.+<b>です');
  45. var pn2 = java.util.regex.Pattern.compile('</b>\\(.+\\)<b>');
  46. var pa = java.util.regex.Pattern.compile('((?:(?:&gt;)+|>+) ?)(\\d+)');
  47. var pw = java.util.regex.Pattern.compile('((?:^|[^/])(?:www))(\\.)');
  48.  
  49. function checkRawText( res, cx ) {
  50. var name = res.name;
  51. if (name) name = res.name + '';
  52. var msg = res.message + '';
  53. var num = res.number;
  54. var obj = cx.checkObject;
  55. if ( obj.fukidasi ) {
  56. if ( name.search(/(-v-| ̄(V|V|∨|\\||\|/) ̄)/) != -1 ) {
  57. msg = name + '\n' + msg;
  58. }
  59. }
  60. if ( obj.kyouseiNanasi && name ) {
  61. if (pn.matcher(name).matches()) {
  62. res.setNanasi(true);
  63. } else if ((name.indexOf(obj.anonymousName) >= 0) && (name != obj.anonymousName)) {
  64. var divname = name.split(obj.anonymousName);
  65. //if (divname[0]) { } /* デフォ名の前部分の判定 */
  66. if (divname[1]) { /* デフォ名の後部分の判定 */
  67. if (pn2.matcher(divname[1]).matches()) {
  68. res.setNanasi(true);
  69. }
  70. }
  71. }
  72. }
  73. if ( obj.yakitori ) name = name.replace( / <\/b>\[―\{\}@\{\}@\{\}-\]<b> /g, '' );
  74. if ( obj.sankakke ) msg = msg.replace( /さんかっけー/g, '△' );
  75. if ( obj.YashitoKata ) msg = msg.replace( /香具師/g, '方' );
  76. if ( obj.no_anchor_1001 && num > 1000 ) {
  77. var sti=res.timeid;
  78. if (sti.startsWith( 'Over ' )) {
  79. msg = msg.replace( /(>>)(\d+)/g, '$1&lrm;$2' );
  80. }
  81. }
  82. if ( obj.no_anchor_over_self && num > 1 ) {
  83. var mt = pa.matcher(msg);
  84. if (mt.find()) {
  85. mt.reset();
  86. var sb = java.lang.StringBuffer();
  87. var lpc = 0;
  88. while (mt.find() && lpc < 10) {
  89. if (mt.group(2) >= num) {
  90. mt.appendReplacement(sb, '$1&lrm;$2');
  91. }
  92. lpc++;
  93. }
  94. msg = mt.appendTail(sb);
  95. }
  96. }
  97. if( obj.nanashi ) {
  98. for(var i = 0;i<obj.nanashi.length;i++) {
  99. if(name == obj.nanashi[i]) {
  100. name = '名無し'
  101. break;
  102. }
  103. }
  104. }
  105. if ( obj.renbanURL ) {
  106. var mu=pu.matcher(msg);
  107. if (mu.find()) {
  108. var su=mu.group();
  109. var mb=pb.matcher(su);
  110. var sb=new java.lang.StringBuilder(msg.substring(0,mu.start()));
  111. sb.append('<font color="gray">');
  112. var i=1;
  113. var ip0=0;
  114. while (mb.find()) {
  115. var ip=mb.end();
  116. if (ip==ip0) {
  117. break;
  118. }
  119. if (i<=9) {
  120. sb.append('0');
  121. }
  122. sb.append(String(i++));
  123. sb.append('. ');
  124. sb.append(su.substring(ip0,mb.start()));
  125. sb.append(mb.group());
  126. ip0 = ip;
  127. }
  128. sb.append('</font>');
  129. sb.append(msg.substring(mu.end()));
  130. msg = sb + '';
  131. }
  132. }
  133. if ( obj.breakWWWLink ) {
  134. var mt = pw.matcher(msg);
  135. if (mt.find()) {
  136. msg = mt.replaceAll('$1<!-- -->$2');
  137. }
  138. }
  139. if ( obj.ZentoHan ) {
  140. msg = (msg+'').replace(/([0-9a-zA-Z])/g,function(whole,reg){
  141. var sub = '0'.charCodeAt(0)-'0'.charCodeAt(0);
  142. return String.fromCharCode(reg.charCodeAt(0)-sub);
  143. });
  144. }
  145. res.setName( name );
  146. res.setMessage( msg );
  147. }
  148.  
  149. function checkAA( res, cx ) {
  150. var msg = res.message + '';
  151. var obj = cx.checkObject;
  152. if ( obj.aa_type1 && msg.indexOf( 'function' ) >= 0 ) {
  153. res.setAA(true);
  154. }
  155. if ( obj.aa_type2 && ( msg.indexOf( '( ・e・)' ) >= 0 || msg.indexOf( 'ノノ∮‘ _l‘)' ) >= 0 ) ) {
  156. res.setAA(true);
  157. }
  158. }
  159.  
  160. function checkNG( res, cx ) {
  161. var sn = res.name;
  162. var obj = cx.checkObject;
  163. if ( obj.ng_res1 && res.number == 1 ) {
  164. res.setNG( 'レス1' );
  165. }
  166. if ( obj.ng_kote && ( sn != null ) && !sn.startsWith( 'n|a' ) && !sn.equals( obj.ng_kote ) ) {
  167. res.setNG( 'コテハン' );
  168. }
  169. }
  170.  
  171. function endCheck( th, cx ) {
  172. // ***** 次の行から利用する行頭の「//」を削除する *****
  173.  
  174. //java.lang.System.gc(); //自動的にガベージコレクションを実行する。
  175.  
  176. // ***** 前の行まで *****
  177. }
  178. // ----- 前の行まで -----
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty