コンテンツにスキップ

利用者:ふわふわ/replace.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

// jastyle
var jastyle_version = '0.6.0';
var option_name = '美少女ゲーム系日本語化';
var jastyle_autostyle_namespaces = [ 0 ];

function install_jastyle() {
  var f = document.getElementById("editform");
  if(!f) return;
  
  var html = '', m;
  if(m = document.body.className.match(/\bns-(\d+)\b/)) {
    for(var i = 0; i < jastyle_autostyle_namespaces.length; ++i) {
      if(m[1] == jastyle_autostyle_namespaces[i]) {
        if(f.addEventListener) f.addEventListener("submit", jastyle, false);
        else if(f.attachEvent) f.attachEvent("onsubmit", jastyle);
        html += '<label for="dontstyle"><input type="checkbox" id="dontstyle" value="1">disable autostyle</label>';
        break;
      }
    }
  }
  html += '<button type="button" onclick="jastyle()">style</button>';
  html += ' (jastyle version ' + jastyle_version + option_name + ')';
  
  var p = document.createElement('p');
  p.innerHTML = html;
  f.parentNode.insertBefore(p, f);
}

function jastyle() {
  var dont = document.getElementById('dontstyle');
  if(dont && dont.checked) return;
  
  var strips = new Array();
  var edit = document.getElementById('wpTextbox1');
  var tmp = edit.value.
  
 //美少女ゲーム系日本語化
 replace(/Title=/g, 'タイトル='). replace(/Plat=/g, '対応機種=').
 replace(/Title =/g, 'タイトル='). replace(/Plat =/g, '対応機種=').
 replace(/Pub=/g, '発売元='). replace(/Date=/g, '発売日='). 
 replace(/Pub =/g, '発売元='). replace(/Date =/g, '発売日='). 
replace(/Price=/g, '価格='). replace(/Genre=/g, 'ジャンル='). 
replace(/Price =/g, '価格='). replace(/Genre =/g, 'ジャンル='). 
replace(/Rating=/g, 'レイティング='). replace(/ContentsIcon=/g, 'コンテンツアイコン='). 
replace(/Rating =/g, 'レイティング='). replace(/ContentsIcon =/g, 'コンテンツアイコン='). 
replace(/Name=/g, 'キャラクター名設定='). replace(/End=/g, 'エンディング数='). 
replace(/Name =/g, 'キャラクター名設定='). replace(/End =/g, 'エンディング数='). 
replace(/Save=/g, 'セーブファイル数='). replace(/Engine=/g, 'ゲームエンジン='). 
replace(/Save =/g, 'セーブファイル数='). replace(/Engine =/g, 'ゲームエンジン='). 
replace(/Media=/g, 'メディア='). replace(/Screen=/g, '画面サイズ=').
replace(/Media =/g, 'メディア='). replace(/Screen =/g, '画面サイズ=').
 replace(/Music=/g, 'BGMフォーマット='). replace(/Voice=/g, 'キャラクターボイス=').
 replace(/Music =/g, 'BGMフォーマット='). replace(/Voice =/g, 'キャラクターボイス=').
 replace(/CGMode=/g, 'CGモード='). replace(/MMode=/g, '音楽モード='). 
 replace(/CGMode =/g, 'CGモード='). replace(/MMode =/g, '音楽モード='). 
 replace(/EMode=/g, '回想モード='). replace(/Skip=/g, 'メッセージスキップ=').
 replace(/EMode =/g, '回想モード='). replace(/Skip =/g, 'メッセージスキップ=').
 replace(/Auto=/g, 'オートモード='). replace(/Etc=/g, '備考='). 
 replace(/Auto =/g, 'オートモード='). replace(/Etc =/g, '備考='). 
 

// CRLF
  replace(/\r*\n|\r/g, "\n").
  
  // 全角英数・記号
  replace(/#/g, '#').replace(/$/g, '$').
  replace(/%/g, '%').replace(/&/g, '&').
  replace(/-/g, '-').replace(/^/g, '^').
  replace(/@/g, '@').replace(/+/g, '+').
  replace(/*/g, '*').replace(/</g, '&lt;').
  replace(/>/g, '&gt;').replace(///g, '/').
  replace(/_/g, '_').replace(/!/g, '!').
  replace(/1/g,'1').replace(/2/g,'2').replace(/3/g,'3').replace(/4/g,'4').
  replace(/5/g,'5').replace(/6/g,'6').replace(/7/g,'7').replace(/8/g,'8').
  replace(/9/g,'9').replace(/0/g,'0').replace(/A/g,'A').replace(/B/g,'B').
  replace(/C/g,'C').replace(/D/g,'D').replace(/E/g,'E').replace(/F/g,'F').
  replace(/G/g,'G').replace(/H/g,'H').replace(/I/g,'I').replace(/J/g,'J').
  replace(/K/g,'K').replace(/L/g,'L').replace(/M/g,'M').replace(/N/g,'N').
  replace(/O/g,'O').replace(/P/g,'P').replace(/Q/g,'Q').replace(/R/g,'R').
  replace(/S/g,'S').replace(/T/g,'T').replace(/U/g,'U').replace(/V/g,'V').
  replace(/W/g,'W').replace(/X/g,'X').replace(/Y/g,'Y').replace(/Z/g,'Z').
  replace(/a/g,'a').replace(/b/g,'b').replace(/c/g,'c').replace(/d/g,'d').
  replace(/e/g,'e').replace(/f/g,'f').replace(/g/g,'g').replace(/h/g,'h').
  replace(/i/g,'i').replace(/j/g,'j').replace(/k/g,'k').replace(/l/g,'l').
  replace(/m/g,'m').replace(/n/g,'n').replace(/o/g,'o').replace(/p/g,'p').
  replace(/q/g,'q').replace(/r/g,'r').replace(/s/g,'s').replace(/t/g,'t').
  replace(/u/g,'u').replace(/v/g,'v').replace(/w/g,'w').replace(/x/g,'x').
  replace(/y/g,'y').replace(/z/g,'z').
  
  // 救済
  replace(/([A-Za-z0-9]).[ \s]*/g, '$1. ').
  replace(/([A-Za-z0-9]),[ \s]*/g, '$1, ').
  
  // 句読点・半角カナ
  replace(/[,、]/g, '、').replace(/[.。]/g, '。').
    replace(/「/g, '「').replace(/」/g, '」').replace(/・/g, '・').
  replace(/゙/g, '゛').replace(/゚/g, '゜').
  
  // 機種依存記号
  replace(/①/g, '(1)').replace(/②/g, '(2)').replace(/③/g, '(3)').
  replace(/④/g, '(4)').replace(/⑤/g, '(5)').replace(/⑥/g, '(6)').
  replace(/⑦/g, '(7)').replace(/⑧/g, '(8)').replace(/⑨/g, '(9)').
  replace(/⑩/g, '(10)').replace(/⑪/g, '(11)').replace(/⑫/g, '(12)').
  replace(/⑬/g, '(13)').replace(/⑭/g, '(14)').replace(/⑮/g, '(15)').
  replace(/⑯/g, '(16)').replace(/⑰/g, '(17)').replace(/⑱/g, '(18)').
  replace(/⑲/g, '(19)').replace(/⑳/g, '(20)').
  replace(/Ⅰ/g, 'I').replace(/Ⅱ/g, 'II').replace(/Ⅲ/g, 'III').
  replace(/Ⅳ/g, 'IV').replace(/Ⅴ/g, 'V').replace(/Ⅵ/g, 'VI').
  replace(/Ⅶ/g, 'VII').replace(/Ⅷ/g, 'VIII').replace(/Ⅸ/g, 'IX').
  replace(/Ⅹ/g, 'X').replace(/㍉/g, 'ミリ').replace(/㌔/g, 'キロ').
    
  // Wiki記法
  replace(/\s*\n-----*\s*/g, "\n----\n\n").
  replace(/\{\{msg:/ig, '{{').
  replace(/\{\{SERVER\}\}\{\{localurl:/ig, '{{fullurl:').
  replace(/(\[\[:?)Category:/ig, '$1Category:');
  if(location.host == 'ja-two.iwiki.icu') {
    tmp = tmp.replace(/\[\[w(:[a-z]{2,3}:)/g, '[[$1').
              replace(/\[\[w:/ig, '[[:en:');
  }
  
  // タグ
  tmp = tmp.
  replace(/\s*<\/?br\s*\/?>/ig, '<br />').
  replace(/\s*<\/?hr\s*\/?>\s*/ig, "\n----\n\n").
  replace(/<(center|div|span|font|tr|td|th|table|caption)/ig,
    function(str) { return str.toLowerCase(); }).
  replace(/<\/(center|div|span|font|tr|td|th|table|caption)>/ig,
    function(str) { return str.toLowerCase(); }).
  replace(/(cell(padd|spac)ing|v?align|width|style|border)\s*=\s*/ig,
    function(str, p1) { return p1.toLowerCase() + '='; });
  
  // strip
  tmp = tmp.replace(/<pre[^>]*?>(.|\n)*?<\/pre>/g,
    function(str) {
      var i = strips.length;
      strips[i] = str;
      return '<!--@@ jastyle-STRIP-' + i + ' @@-->';
    });
  
  // 行頭認識がいるもの
  var lines = tmp.split('\n');
  var out = '', pre_p = false;
  for(var i = 0; i < lines.length; i++) {
    tmp = lines[i].
      // 行頭の全角空白
      replace(/^ +/g, '').
      // 行頭の * : # ;
      replace(/^([\*\:\#\;]+)[\s ]*/, '$1 ').
      // REDIRECTだけ戻す
      replace(/^# REDIRECT[^\[]*\[\[/i, '#REDIRECT[[');
//      // '''で終わる行を ; に置き換え
//      replace(/^\'\'\'(.*?)\'\'\'$/, '; \'\'\'$1\'\'\'').
    
    if(!tmp.match(/^ /)) {
      // 行末空白除去 (半角空白しかない場合は除去しない for <pre>)
      tmp = tmp.replace(/[\s ]+$/, '');
      pre_p = false;
    } else if(tmp.match(/^[\s ]+$/) && !pre_p) {
      // 孤立した空白のみの行
      tmp = '';
    } else {
      pre_p = true;
    }
    
    // == ==
    if(tmp.match(/^=.*[^=]=/)) {
      tmp = tmp.
        replace(/^(={1,5})[\s ]*/, '$1 ').
        replace(/[\s ]*(={1,5})$/, ' $1').
        replace(/関連(記事|事項|用語)/g, '関連項目').
        replace(/外部(参照)?((への)?リンク|サイト)|関連リンク/g,
                  '外部リンク');
    }
    // interwiki
    if(tmp.match(/^\[\[([a-z]{2,3}|fiu-vro|pt-br|roa-rup|simple|zh-min-nan):.*?\]\]$/)) {
      tmp = decodeURI(tmp).
            replace(/&#((x[\dA-Fa-f]+)|\d+);/ig,
              function(str, dec, hex) {
                var ch = hex ? parseInt("0" + hex) : parseInt(dec, 10);
                return String.fromCharCode(ch);
              }).
            replace(/ /g, '_');
    }
    
    out += tmp + '\n';
  }
  
  out = out.
    replace(/^\s+/, '').replace(/\s+$/, '').
    // 二行以上の空行トルツメ
    replace(/\n{3,}/g, '\n\n').
    // 見出しの後の空行トルツメ
    replace(/==\n+/g, '==\n').
    // 見出しの前に空行を挿入
    replace(/([^=\n])\n+==/g, '$1\n\n==').
    // 空白
    replace(/[  \t]+/g, ' ');
  
  // unstrip
  out = out.replace(/<!--@@ jastyle-STRIP-(\d+) @@-->/g,
                      function(str, n) { return strips[n]; });
  
  edit.value = out + "\n";
  return true;
}

$(install_jastyle);