利用者:Hideki1976/jastyleplus.js

これはこのページの過去の版です。Hideki1976 (会話 | 投稿記録) による 2008年1月31日 (木) 04:19個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

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

多くの WindowsLinux のブラウザ

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

Mac における Safari

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

Mac における ChromeFirefox

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

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

// jastyle
var jastyle_version = '0.7.0.1 改';
jastyle_autostyle_namespaces = [ '', 'Category', 'Template', 'Portal', 'Help' ];

if(!window.$$) document.writeln('<script type="text/javascript" src="http://linky.wikipedia.jp/javascripts/prototype.js"><\/script>');

function jastyle() {
  if($('dontstyle') && $F('dontstyle')) return;
  
  var strips = new Array();
  var edit = $('wpTextbox1');
  var tmp = edit.value.
  
  // 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(/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, 'ザ').
  replace(/ジ/g, 'ジ').replace(/ズ/g, 'ズ').replace(/ゼ/g, 'ゼ').
  replace(/ゾ/g, 'ゾ').replace(/ダ/g, 'ダ').replace(/ヂ/g, 'ヂ').
  replace(/ヅ/g, 'ヅ').replace(/デ/g, 'デ').replace(/ド/g, 'ド').
  replace(/バ/g, 'バ').replace(/ビ/g, 'ビ').replace(/ブ/g, 'ブ').
  replace(/ベ/g, 'ベ').replace(/ボ/g, 'ボ').replace(/パ/g, 'パ').
  replace(/ピ/g, 'ピ').replace(/プ/g, 'プ').replace(/ペ/g, 'ペ').
  replace(/ポ/g, 'ポ').replace(/ヴ/g, 'ヴ').
  replace(/ァ/g, 'ァ').replace(/ィ/g, 'ィ').replace(/ゥ/g, 'ゥ').
  replace(/ェ/g, 'ェ').replace(/ォ/g, 'ォ').replace(/ッ/g, 'ッ').
  replace(/ャ/g, 'ャ').replace(/ュ/g, 'ュ').replace(/ョ/g, 'ョ').
  replace(/ア/g, 'ア').replace(/イ/g, 'イ').replace(/ウ/g, 'ウ').
  replace(/エ/g, 'エ').replace(/オ/g, 'オ').replace(/カ/g, 'カ').
  replace(/キ/g, 'キ').replace(/ク/g, 'ク').replace(/ケ/g, 'ケ').
  replace(/コ/g, 'コ').replace(/サ/g, 'サ').replace(/シ/g, 'シ').
  replace(/ス/g, 'ス').replace(/セ/g, 'セ').replace(/ソ/g, 'ソ').
  replace(/タ/g, 'タ').replace(/チ/g, 'チ').replace(/ツ/g, 'ツ').
  replace(/テ/g, 'テ').replace(/ト/g, 'ト').replace(/ナ/g, 'ナ').
  replace(/ニ/g, 'ニ').replace(/ヌ/g, 'ヌ').replace(/ネ/g, 'ネ').
  replace(/ノ/g, 'ノ').replace(/ハ/g, 'ハ').replace(/ヒ/g, 'ヒ').
  replace(/フ/g, 'フ').replace(/ヘ/g, 'ヘ').replace(/ホ/g, 'ホ').
  replace(/マ/g, 'マ').replace(/ミ/g, 'ミ').replace(/ム/g, 'ム').
  replace(/メ/g, 'メ').replace(/モ/g, 'モ').replace(/ヤ/g, 'ヤ').
  replace(/ユ/g, 'ユ').replace(/ヨ/g, 'ヨ').replace(/ラ/g, 'ラ').
  replace(/リ/g, 'リ').replace(/ル/g, 'ル').replace(/レ/g, 'レ').
  replace(/ロ/g, 'ロ').replace(/ワ/g, 'ワ').replace(/ヲ/g, 'ヲ').
  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, 'キロ').
  replace(/㌢/g, 'センチ').replace(/㍍/g, 'メートル').
  replace(/㌘/g, 'グラム').replace(/㌧/g, 'トン').replace(/㌃/g, 'アール').
  replace(/㌶/g, 'ヘクタール').replace(/㍑/g, 'リットル').
  replace(/㍗/g, 'ワット').replace(/㌍/g, 'カロリー').replace(/㌦/g, 'ドル').
  replace(/㌣/g, 'セント').replace(/㌫/g, 'パーセント').
  replace(/㍊/g, 'ミリバール').replace(/㌻/g, 'ページ').
  replace(/㎜/g, 'mm').replace(/㎝/g, 'cm').replace(/㎞/g, 'km').
  replace(/㎎/g, 'mg').replace(/㎏/g, 'kg').replace(/㏄/g, 'cc').
  replace(/㎡/g, 'm&sup2;').replace(/㍻/g, '平成').
  replace(/〝/g, '「').replace(/〟/g, '」').replace(/№/g, 'No.').
  replace(/㏍/g, 'K.K.').replace(/℡/g, 'Tel').replace(/㊤/g, '(上)').
  replace(/㊥/g, '(中)').replace(/㊦/g, '(下)').replace(/㊧/g, '(左)').
  replace(/㊨/g, '(右)').replace(/㈱/g, '(株)').replace(/㈲/g, '(有)').
  replace(/㈹/g, '(代)').replace(/㍾/g, '明治').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:').
  replace(/\s*<\/?br\s*\/?>/ig, '<br />').
  replace(/\s*<\/?hr\s*\/?>\s*/ig, "\n----\n\n");
  if(___location.host == 'ja.wikipedia.org') {
    tmp = tmp.replace(/\[\[w(:[a-z]{2,3}:)/g, '[[$1').
              replace(/\[\[w:/ig, '[[:en:');
  }
  
  // strip
  tmp = tmp.replace(/<pre[^>]*?>(.|\n)*?<\/pre>/g,
    function(str) {
      var i = strips.length;
      strips[i] = str;
      return '<!--@@ jastyle-STRIP-' + i + ' @@-->';
    });
  
  // タグ
  tmp = tmp.
  replace(/<(\/)?([\w\-:]+)([^>]*)>/g, function(str, close, tagName, tagAttrs) {
    var re = /([\w\-:]+)(\s*=\s*("([^"]+)"|'([^']+)'|([^\s"']+)))?\s*/g;
    var emptyElement = '';
    tagName = tagName.toLowerCase();
    if(tagAttrs.match(/\/$/)) {
      emptyElement = '/';
      tagAttrs = tagAttrs.replace(/\/$/, '');
    }
    
    var attrs = $H(), match;
    if(!close) {
      while(match = re.exec(tagAttrs)) {
        attrs[match[1].toLowerCase()] = match[2] ? (match[4] || match[5] || match[6]).unescapeHTML() : false;
      }
    }
    
    attrs.style = (attrs.style || '').strip().replace(/[^;]$/, '$&;');
    switch(tagName) {
    case 'center':
      tagName = 'div'; attrs.style += 'text-align:center;';
      break;
//    case 'font':
//      tagName = 'span';
//      if(attrs.color) attrs.style += 'color:' + attrs.color + ';';
//      if(attrs.face) attrs.style += "font-family:'" + attrs.face + "';";
//      delete attrs.color; delete attrs.size; delete attrs.face;
//      break;
    case 'table':
      if(attrs.border === false) { attrs.frame = 'border'; delete attrs.border; }
      break;
    }
    attrs.style = attrs.style.replace(/;$/, '');
    if(attrs.style === '') delete attrs.style;
    
    return '<' + close + tagName +
             attrs.collect(function(attr) {
               return ' ' + attr.key + '="' + (attr.value || attr.key).escapeHTML() + '"';
             }).join('') + emptyElement + '>';
  });
  
  // 行頭認識がいるもの
  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(/^ /)) {
      // 行末空白・連続空白除去(<pre>中はしない)→TABは変換しない
      //tmp = tmp.replace(/[\s ]+$/, '').replace(/[  \t]+/g, ' ');
      tmp = tmp.replace(/[\s ]+$/, '').replace(/[  ]+/g, ' ');
      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, '戦績').
        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.
    // 「undefined」を省く
    replace(/undefined/g, '').
    
    replace(/^\s+/, '').replace(/\s+$/, '').
    // 二行以上の空行トルツメ
    replace(/\n{3,}/g, '\n\n').
    // 見出しの後の空行トルツメ
    replace(/==\n+/g, '==\n').
    // 見出しの前に空行を挿入
    replace(/([^=\n])\n+==/g, '$1\n\n==').
    
    // Fight-contの救済
    replace(/\|-\|/g, '|-|').
    
    // リンク内の空白を除去
    replace(/\[\[ /g, '[[').
    replace(/ \]\]/g, ']]').
    
    // 括弧前後の空白を除去
    //replace(/( /g, '(').
    //replace(/ (/g, '(').
    //replace(/) /g, ')').
    //replace(/ )/g, ')').
    //replace(/\( /g, '(').
    //replace(/ \(/g, '(').
    //replace(/\) /g, ')').
    //replace(/ \)/g, ')').
    
    // 句読点前後の空白を除去
    replace(/。 /g, '。').
    replace(/ 。/g, '。').
    replace(/、 /g, '、').
    replace(/ 、/g, '、').
    
    replace(/オスカー・デラホーヤ/g, 'オスカー・デ・ラ・ホーヤ').
    replace(/オスカー・デラ・ホーヤ/g, 'オスカー・デ・ラ・ホーヤ').
    replace(/フェリックス・トリニダート/g, 'フェリックス・トリニダード').
    
    replace(/\[\[アメリカ\]\]/g, '[[アメリカ合衆国|アメリカ]]').
    replace(/\[\[タイ\]\]/g, '[[タイ王国|タイ]]').
    replace(/\[\[英国\]\]/g, '[[イギリス|英国]]').
    replace(/\[\[韓国\]\]/g, '[[大韓民国|韓国]]').
    replace(/\[\[北朝鮮\]\]/g, '[[朝鮮民主主義人民共和国|北朝鮮]]').
    
    replace(/\[\[在日韓国人\]\]/g, '[[在日韓国・朝鮮人|在日韓国人]]').
    replace(/\[\[在日朝鮮人\]\]/g, '[[在日韓国・朝鮮人|在日朝鮮人]]').
    replace(/\[\[在日コリアン(\|在日韓国・朝鮮人)*\]\]/g, '[[在日韓国・朝鮮人]]').
    replace(/\[\[在日コリアン\|(.*)\]\]/g, '[[在日韓国・朝鮮人|$1]]').
    
    replace(/\[\[A型\]\]/g, 'A型').
    replace(/\[\[B型\]\]/g, 'B型').
    replace(/\[\[AB型\]\]/g, 'AB型').
    replace(/\[\[O型\]\]/g, 'O型').
    
    replace(/\[\[レスリング\]\]/g, '[[アマチュアレスリング|レスリング]]').
    replace(/\[\[アマチュアレスリング\]\]/g, '[[アマチュアレスリング|レスリング]]').
    replace(/\[\[サンボ\]\]/g, '[[サンボ (格闘技)|サンボ]]').
    replace(/\[\[コマンドサンボ\]\]/g, '[[サンボ (格闘技)|コマンドサンボ]]').
    replace(/\[\[コンバットサンボ\]\]/g, '[[サンボ (格闘技)|コンバットサンボ]]').
    replace(/\[\[空手\]\]/g, '[[空手道|空手]]').
    replace(/レフリー/g, 'レフェリー').
    replace(/レフリング/g, 'レフェリング').
    
    replace(/(パウンド)/g, '([[グラウンドパンチ|パウンド]])').
    replace(/(サッカーボールキック)/g, '([[サッカーボールキック]])').
    replace(/\[\[チョークスリーパー\]\]/g, '[[裸絞|チョークスリーパー]]').
    replace(/\[\[スリーパーホールド\]\]/g, '[[裸絞|スリーパーホールド]]').
    replace(/(ひざ蹴り|ヒザ蹴り)/g, '膝蹴り').
    
    replace(/([^\[])CAGE FORCE ([0-9]+)([^\]])/g, '$1[[CAGE FORCE $2]]$3').
    replace(/([^\[|])Cage Rage ([0-9]+)([^\]])/g, '$1[[Cage Rage $2]]$3').
    
    replace(/UFC([0-9]+)/g, 'UFC $1').
    replace(/UFC ([0-9]+) - /g, 'UFC $1: ').
    replace(/UFC 37.5 - /g, 'UFC 37.5: ').
    replace(/UFC Brazil - /g, 'UFC Brazil: ').
    replace(/UFC Japan - /g, 'UFC Japan: ').
    replace(/PRIDE([0-9]+)/g, 'PRIDE.$1').
    replace(/([^\[|])PRIDE\.([0-9]+)([^\]])/g, '$1[[PRIDE.$2]]$3').
    replace(/\[\[HERO'S\|Dynamite!! USA\]\]/g, '[[Dynamite!! USA]]').
    
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2000[ ]?開幕戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2000 開幕戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2000[ ]?決勝戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2000 決勝戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2003[ ]?開幕戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2003 開幕戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2003[ ]?決勝戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2003 決勝戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2004[ ]?開幕戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2004 開幕戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2004[ ]?2nd[ ]?ROUND([^\]])/g, '$1[[PRIDE GRANDPRIX 2004 2nd ROUND]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2004[ ]?決勝戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2004 決勝戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2005[ ]?開幕戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2005 開幕戦]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2005[ ]?2nd[ ]?ROUND([^\]])/g, '$1[[PRIDE GRANDPRIX 2005 2nd ROUND]]$2').
    replace(/([^\[])PRIDE[ ]?GRAND[ ]?PRIX[ ]?2005[ ]?決勝戦([^\]])/g, '$1[[PRIDE GRANDPRIX 2005 決勝戦]]$2').
    replace(/([^\[])PRIDE[ ]?無差別級グランプリ[ ]?2006[ ]?開幕戦([^\]])/g, '$1[[PRIDE 無差別級グランプリ 2006 開幕戦]]$2').
    replace(/([^\[])PRIDE[ ]?無差別級グランプリ[ ]?2006[ ]?2nd[ ]?ROUND([^\]])/g, '$1[[PRIDE 無差別級グランプリ 2006 2nd ROUND]]$2').
    replace(/([^\[])PRIDE[ ]?無差別級グランプリ[ ]?2006[ ]?決勝戦([^\]])/g, '$1[[PRIDE 無差別級グランプリ 2006 決勝戦]]$2').
    //replace(/([^\[])PRIDE[ ]?武士道([^\]])/g, '[[PRIDE 武士道 -其の壱-|PRIDE 武士道]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の弐-([^\]])/g, '$1[[PRIDE 武士道 -其の弐-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の参-([^\]])/g, '$1[[PRIDE 武士道 -其の参-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の四-([^\]])/g, '$1[[PRIDE 武士道 -其の四-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の伍-([^\]])/g, '$1[[PRIDE 武士道 -其の伍-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の六-([^\]])/g, '$1[[PRIDE 武士道 -其の六-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の七-([^\]])/g, '$1[[PRIDE 武士道 -其の七-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の八-([^\]])/g, '$1[[PRIDE 武士道 -其の八-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の九-([^\]])/g, '$1[[PRIDE 武士道 -其の九-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の拾-([^\]])/g, '$1[[PRIDE 武士道 -其の拾-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の十一-([^\]])/g, '$1[[PRIDE 武士道 -其の十一-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の十二-([^\]])/g, '$1[[PRIDE 武士道 -其の十二-]]$2').
    replace(/([^\[])PRIDE[ ]?武士道[ ]?-其の十三-([^\]])/g, '$1[[PRIDE 武士道 -其の十三-]]$2').
    
    // テレビ局
    replace(/\[\[NHK\]\]/g, '[[日本放送協会|NHK]]').
    replace(/\[\[日本テレビ\]\]/g, '[[日本テレビ放送網|日本テレビ]]').
    replace(/\[\[TBS\]\]/g, '[[東京放送|TBS]]').
    replace(/\[\[フジテレビ\]\]/g, '[[フジテレビジョン|フジテレビ]]').
    
    // 言葉遣い(Wikipedia:表記ガイド)
    replace(/但し/g, 'ただし').
    replace(/又は/g, 'または').
    replace(/。又、/g, '。また、').
    replace(/。尚、/g, '。なお、').
    replace(/下さい/g, 'ください').
    replace(/。故に/g, '。ゆえに').
    replace(/。更に/g, '。さらに').
    replace(/及び/g, 'および').
    replace(/所謂/g, 'いわゆる').
    replace(/拘らず/g, 'かかわらず').
    replace(/関わらず/g, 'かかわらず').
    replace(/行な(い|う|え|お|わ|っ)/g, '行$1').
    
    // 才→歳
    replace(/([0-9]+)才/g, '$1歳').
    
    // 年リンク間違いの修正
    replace(/\[\[([0-9]{4})\]\]年/g, '[[$1年]]').
    
    // 年月日の整形
    replace(/([^/])(\d{4})[年./](\d{1,2})[月./](\d{1,2})[日]*([^/])/g, '$1$2年$3月$4日$5').
    replace(/0([1-9])月/g, '$1月').
    replace(/0([1-9])日/g, '$1日').
    
    replace(/(\d{4})年([\]]*) ([^-])/g, '$1年$2、$3').
    replace(/(\d{1,2})月([\]]*) ([^-])/g, '$1月$2、$3').
    replace(/(\d{1,2})日([\]]*) ([^-])/g, '$1日$2、$3').
    
    // temp
    replace(/ユーエフシー(.*) - /g, 'ユーエフシー$1:').
    replace(/によるUFC [0-9]+試合結果/g, 'による試合結果').
    
    // テンプレート内の最後の空白を除去しない
    replace(/\|( *)(.*) =\n/g, '|$1$2 = \n').
    
    // ボクシング関連
    replace(/\{\{Boxing statsbox\|name\=(.*)\n/g, '{{Boxing statsbox\n|name=$1\n').
    replace(/のもつ/g, 'の持つ').
    replace(/通産/g, '通算').
    replace(/\|style\=オーソドックス\n/g, '|style=[[オーソドックス]]\n').
    replace(/\|style\=サウスポー\n/g, '|style=[[サウスポー]]\n').
    replace(/\[\[ボクシング#階級\|/g, '[[').
    replace(/(ライト・ヘビー級|L・ヘビー級|Lヘビー級)/g, 'ライトヘビー級').
    replace(/(スーパー・ミドル級|S・ミドル級|Sミドル級)/g, 'スーパーミドル級').
    replace(/(スーパー・ウェルター級|S・ウェルター級|Sウェルター級)/g, 'スーパーウェルター級').
    replace(/(スーパー・ライト級|S・ライト級|Sライト級)/g, 'スーパーライト級').
    replace(/(スーパー・フェザー級|S・フェザー級|Sフェザー級)/g, 'スーパーフェザー級').
    replace(/(スーパー・バンタム級|S・バンタム級|Sバンタム級)/g, 'スーパーバンタム級').
    replace(/(スーパー・フライ級|S・フライ級|Sフライ級)/g, 'スーパーフライ級').
    replace(/(ライト・フライ級|L・フライ級|Lフライ級)/g, 'ライトフライ級').
    replace(/(ライト・ミドル級|L・ミドル級|Lミドル級)/g, 'ライトミドル級').
    replace(/ジュニア・ヘビー級/g, 'ジュニアヘビー級').
    replace(/ジュニア・ミドル級/g, 'ジュニアミドル級').
    replace(/ジュニア・ウェルター級/g, 'ジュニアウェルター級').
    replace(/ジュニア・ライト級/g, 'ジュニアライト級').
    replace(/ジュニア・フェザー級/g, 'ジュニアフェザー級').
    replace(/ジュニア・バンタム級/g, 'ジュニアバンタム級').
    replace(/ジュニア・フライ級/g, 'ジュニアフライ級').
    replace(/\[\[ジュニアヘビー級\]\]/g, '[[クルーザー級|ジュニアヘビー級]]').
    replace(/\[\[ジュニアミドル級\]\]/g, '[[スーパーウェルター級|ジュニアミドル級]]').
    replace(/\[\[ライトミドル級\]\]/g, '[[スーパーウェルター級|ライトミドル級]]').
    replace(/\[\[ジュニアウェルター級\]\]/g, '[[スーパーライト級|ジュニアウェルター級]]').
    replace(/\[\[ジュニアライト級\]\]/g, '[[スーパーフェザー級|ジュニアライト級]]').
    replace(/\[\[ジュニアフェザー級\]\]/g, '[[スーパーバンタム級|ジュニアフェザー級]]').
    replace(/\[\[ジュニアバンタム級\]\]/g, '[[スーパーフライ級|ジュニアバンタム級]]').
    replace(/\[\[ジュニアフライ級\]\]/g, '[[ライトフライ級|ジュニアフライ級]]').
    replace(/\[\[ストロー級\]\]/g, '[[ミニマム級|ストロー級]]').
    replace(/\[\[ミニフライ級\]\]/g, '[[ミニマム級|ミニフライ級]]').
    replace(/\[\[世界ボクシング協会世界王者一覧\]\]/g, '[[世界ボクシング協会世界王者一覧|世界ボクシング協会(WBA)世界王者一覧]]').
    replace(/\[\[世界ボクシング評議会世界王者一覧\]\]/g, '[[世界ボクシング評議会世界王者一覧|世界ボクシング評議会(WBC)世界王者一覧]]').
    replace(/\[\[国際ボクシング連盟世界王者一覧\]\]/g, '[[国際ボクシング連盟世界王者一覧|国際ボクシング連盟(IBF)世界王者一覧]]').
    replace(/\[\[世界ボクシング機構世界王者一覧\]\]/g, '[[世界ボクシング機構世界王者一覧|世界ボクシング機構(WBO)世界王者一覧]]').
    replace(/\[\[世界ボクシング協会\|世界ボクシング協会 ?\(WBA\)\]\]/g, '[[世界ボクシング協会|WBA]]').
    replace(/\[\[世界ボクシング評議会\|世界ボクシング評議会 ?\(WBC\)\]\]/g, '[[国際ボクシング連盟|WBC]]').
    replace(/\[\[国際ボクシング連盟\|国際ボクシング連盟 ?\(IBF\)\]\]/g, '[[国際ボクシング連盟|IBF]]').
    replace(/\[\[世界ボクシング機構\|世界ボクシング機構 ?\(WBO\)\]\]/g, '[[世界ボクシング機構|WBO]]').
    replace(/\(剥奪\)/g, '(剥奪)').
    replace(/\(返上\)/g, '(返上)').
    replace(/\(暫定\)/g, '(暫定)').
    replace(/\{\{(b|B)oxing-bio-stub(.*)\}\}/g, '{{Boxing-bio-stub}}').
    replace(/\{\{(b|B)oxing-stub(.*)\}\}/g, '{{Boxing-stub}}').
    replace(/\{\{(m|M)artialart-stub(.*)\}\}/g, '{{Martialart-stub}}').
    
    replace(/http:\/\/www\.boxrec\.com\/boxer_display\.php\?boxer_id\=(\d*)/g, 'http://www.boxrec.com/list_bouts.php?human_id=$1&cat=boxer').
    
    // 脚注スタイル
    replace(/(。|、)<ref>(.*)<\/ref>/g, '<ref>$2</ref>$1').
    replace(/\n<references\/>\n/g, '\n<div class="references-small"><references/></div>\n').
    
    // DEFAULTSORT
    //replace(/([^\]])\n\[\[Category:(.*)\|(.*)\]\]/g, '$1\n{{DEFAULTSORT:$3}}\n[[Category:$2]]').
    
    replace(/([^:])\/\//g, '$1/').
    replace(/。。/g, '。').
    replace(/、、/g, '、').
    replace(/- (\)|))は([^、])/g, '- $1は、$2').
    
    replace(/ホームページ/g, 'サイト').
    replace(/公式HP/g, '公式サイト').
    replace(/HP/g, 'サイト').
    
    replace(/(N|n)\/a/g, 'N/A').
    replace(/\{\{fact\}\}/g, '{{要出典|date=2008年1月}}').
    replace(/\{\{要出典\}\}/g, '{{要出典|date=2008年1月}}').
    
    // <br/>→<br />
    replace(/<br\/>/g, '<br />');
  
  
  // <ref>が存在して<references/>がなかったら、追加
  if(out.match(/<ref>/)) {
    if(!out.match(/<references\/>/)) {
      out = out + '\n\n== 脚注 ==\n<div class="references-small"><references/></div>\n';
    }
  }
  
  
  // death_date、death_placeを付加
  if(out.match(/\{\{Boxing statsbox/)) {
    if(!out.match(/death_date/) && !out.match(/death_place/)) {
      out = out.replace(/\|birth_place=(.*)\n/g, '|birth_place=$1\n|death_date|=\n|death_place|=\n');
    }
  }
  
  
  // テンプレート内の誕生日を整形
  if(out.match(/\|(death_date=[\|]?| 死亡日 = )\[\[(\d{3,4})年\]\]\[\[(\d{1,2})月(\d{1,2})日\]\]/)) {
    out = out.replace(/\|(birth_date=| 誕生日 = )\[\[(\d{3,4})年\]\]\[\[(\d{1,2})月(\d{1,2})日\]\]\n([\s\S]*)\|(death_date[\|]?=| 死亡日 = )\[\[(\d{3,4})年\]\]\[\[(\d{1,2})月(\d{1,2})日\]\]/g, '|$1[[$2年]][[$3月$4日]]\n$5|$6{{死亡年月日と没年齢|$2|$3|$4|$7|$8|$9}}');
  
  } else if(out.match(/\|(death_date[\|]?=| 死亡日 = )\n/)) {
    out = out.replace(/\|(birth_date=| 誕生日 = )\[\[(\d{3,4})年\]\]\[\[(\d{1,2})月(\d{1,2})日\]\]/g, '|$1{{生年月日と年齢|$2|$3|$4}}');
  }
  
  
  out = out.
  replace(/\[\[Category:(.*)\]\]\n\n\[\[Category:(.*)\]\]/g, '[[Category:$1]]\n[[Category:$2]]');
  
  // DEFAULTSORTの付与
  if(!out.match(/DEFAULTSORT/)) {
    //var sort_key = out.replace(/([^\]])\n\[\[Category:(.*)\|(.*)\]\]/g, '$3');
    
    //reg1 = new RegExp('([^\]])\n\[\[Category:(.*)\|' + sort_key + '\]\]', 'g');
    //reg2 = new RegExp('([\]])\n\[\[Category:(.*)\|' + sort_key + '\]\]', 'g');
    //out = out.
    //replace(reg1, '$1\n{{DEFAULTSORT:' + sort_key + '}}\n[[Category:$2]]').
    //replace(reg2, '$1\n[[Category:$2]]');
    
    //out = out.
    //replace(/([^\]])\n\[\[Category:(.*)\|(.*)\]\]/, '$1\n{{DEFAULTSORT:$3}}\n[[Category:$2]]').
    //replace(/([\]])\n\[\[Category:(.*)\|(.*)\]\]/g, '$1\n[[Category:$2]]');
    
    out = out.
    replace(/\[\[Category:(.*)\|(.*)\]\]/, '{{DEFAULTSORT:$2}}\n[[Category:$1]]').
    replace(/\[\[Category:(.*)\|(.*)\]\]/g, '[[Category:$1]]');
  }
  
  out = out.
  replace(/([^\n])\n\{\{DEFAULTSORT:(.*)\}\}/g, '$1\n\n{{DEFAULTSORT:$2}}');
  
  
  // unstrip
  out = out.replace(/<!--@@ jastyle-STRIP-(\d+) @@-->/g,
                      function(str, n) { return strips[n]; });
  
  edit.value = out + "\n";
  return true;
}

addOnloadHook(function() {
  var html = '';
  if(!$('editform')) return;
  if($A(jastyle_autostyle_namespaces).include(wgCanonicalNamespace)) {
    Event.observe('editform', 'submit', jastyle);
  }
  // チェックボックス - 「使用しない」チェックをつけておく
  html += '<label for="dontstyle"><input type="checkbox" id="dontstyle" value="1" checked />使用しない</label> ';
  // 実行ボタン
  html += '<button type="button" onclick="jastyle()">style</button>';
  html += ' (jastyle version ' + jastyle_version + ')';
  new Insertion.Before('editform', '<p>' + html + '</p>');
});