コンテンツにスキップ

利用者:Ignis/jastyle.js

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

多くの WindowsLinux のブラウザ

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

Mac における Safari

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

Mac における ChromeFirefox

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

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

// jastyle.js
// Originally written by. User:Suisui
// improved by. User:Tietew

function install_jastyle() {
  var f = document.getElementById("editform");
  if(!f) return;
  if(document.body.className == 'ns-0') {
    if(f.addEventListener) f.addEventListener("submit", jastyle, false);
    else if(f.attachEvent) f.attachEvent("onsubmit", jastyle);
  } else {
    var p, s;
    p = document.createElement('p');
    p.innerHTML = '<button type="button" onclick="jastyle()">style</button>';
    s = document.getElementById('contentSub');
    s.parentNode.insertBefore(p,s.nextSibling);
  }
}

function jastyle() {
  var edit = document.getElementById("wpTextbox1");
  var tmp = edit.value.
  // 句読点
  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(/\uFF11/g,'1').replace(/\uFF12/g,'2').
  replace(/\uFF13/g,'3').replace(/\uFF14/g,'4').
  replace(/\uFF15/g,'5').replace(/\uFF16/g,'6').
  replace(/\uFF17/g,'7').replace(/\uFF18/g,'8').
  replace(/\uFF19/g,'9').replace(/\uFF10/g,'0').
  replace(/\uFF21/g,'A').replace(/\uFF22/g,'B').
  replace(/\uFF23/g,'C').replace(/\uFF24/g,'D').
  replace(/\uFF25/g,'E').replace(/\uFF26/g,'F').
  replace(/\uFF27/g,'G').replace(/\uFF28/g,'H').
  replace(/\uFF29/g,'I').replace(/\uFF2A/g,'J').
  replace(/\uFF2B/g,'K').replace(/\uFF2C/g,'L').
  replace(/\uFF2D/g,'M').replace(/\uFF2E/g,'N').
  replace(/\uFF2F/g,'O').replace(/\uFF30/g,'P').
  replace(/\uFF31/g,'Q').replace(/\uFF32/g,'R').
  replace(/\uFF33/g,'S').replace(/\uFF34/g,'T').
  replace(/\uFF35/g,'U').replace(/\uFF36/g,'V').
  replace(/\uFF37/g,'W').replace(/\uFF38/g,'X').
  replace(/\uFF39/g,'Y').replace(/\uFF3A/g,'Z').
  replace(/\uFF41/g,'a').replace(/\uFF42/g,'b').
  replace(/\uFF43/g,'c').replace(/\uFF44/g,'d').
  replace(/\uFF45/g,'e').replace(/\uFF46/g,'f').
  replace(/\uFF47/g,'g').replace(/\uFF48/g,'h').
  replace(/\uFF49/g,'i').replace(/\uFF4A/g,'j').
  replace(/\uFF4B/g,'k').replace(/\uFF4C/g,'l').
  replace(/\uFF4D/g,'m').replace(/\uFF4E/g,'n').
  replace(/\uFF4F/g,'o').replace(/\uFF50/g,'p').
  replace(/\uFF51/g,'q').replace(/\uFF52/g,'r').
  replace(/\uFF53/g,'s').replace(/\uFF54/g,'t').
  replace(/\uFF55/g,'u').replace(/\uFF56/g,'v').
  replace(/\uFF57/g,'w').replace(/\uFF58/g,'x').
  replace(/\uFF59/g,'y').replace(/\uFF5A/g,'z').
  
  // 機種依存記号
  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, 'mm').
  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, '昭和').replace(/〜/g, '~').
  
  replace(/<\/?br\s*\/?>/ig,'<br/>').
  replace(/(<\/?hr\s*\/?>|-----*)\s*/ig,'----\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)\s*=\s*/ig,
    function(str, p1) { return p1.toLowerCase() + '='; }).
  replace(/border\s*((=)\s*)?/ig,'border$2').
  
  replace(/\[\[w(:[a-z]{2,3}:)/g, '[[\1').
  replace(/\[\[w:/ig, '[[:en:').
  replace(/Category:/ig, 'Category:').
  replace(/\{\{msg:/ig, '{{').
  replace(/\{\{SERVER\}\}\{\{localurl:/ig, '{{fullurl:');
  
  // 行頭認識がいるもの
  var lines = tmp.split('\n');
  var out = '';
  for(var i = 0; i < lines.length; i++) {
    tmp = lines[i];
    
    // == ==
    if(tmp.match(/^=.*[^=]=/)) {
      tmp = tmp.
        replace(/^(={1,5})[\s ]*/, '$1 ').
        replace(/[\s ]*(={1,5})$/, ' $1').
        replace(/関連(記事|事項|用語)/g, '関連項目').
        replace(/外部(参照)?((への)?リンク|サイト)|関連リンク/g, '外部リンク');
    }
    
    tmp = tmp.
      // 行頭の全角空白
      replace(/^ +/g,'').
      // 行頭の * : # ;
      replace(/^([\*\:\#\;]+)[\s ]*/, '$1 ').
      // REDIRECTだけ戻す
      replace(/^# REDIRECT[^\[]*\[\[/i, '#REDIRECT[[').
      // '''で終わる行を ; に置き換え
//      replace(/^\'\'\'(.*?)\'\'\'$/, '; \'\'\'$1\'\'\'').
      // 行末空白除去 (半角空白しかない場合は除去しない for <pre>)
      replace(/([^\s])[\s ]+$/, '$1');
    
    // 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==');
  
  edit.value = out;
  return true;
}

addOnloadHook(install_jastyle); //</pre>