Участник:Peni/wikifyyears.js

var Peni_CantWork = 'Викифицирует года и убирает пробелы пред знаками препинания.'
var Peni_FullText = 'Сначала выделите текст.';
 
//Добавляет кнопку
function add_Wikifyyears_Button(){
	var toolbar = document.getElementById('toolbar')
	var textbox = document.getElementById('wpTextbox1')
	if (!textbox || !toolbar) return
	var i = document.createElement('img')
	i.src = 'http://upload.wikimedia.org/wikipedia/commons/6/6c/Button_see_also.png'
	i.alt = i.title = 'MyWikify'
	i.onclick = Wikifyyears
	i.style.cursor = 'pointer'
	toolbar.appendChild(i)
} 
 
//Этот код выполняется в начале.
if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit'){
  addOnloadHook(add_Wikifyyears_Button)
}
 
 
//Функция для оформления таблицы
function Wikifyyears(){
  
 var txt, hidden = [], hidIdx = 0, wpTextbox1 = document.editform.wpTextbox1
 var winScroll = document.documentElement.scrollTop //remember window scroll
 wpTextbox1.focus()
 
 if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari)) { //Mozilla/Opera/Safari3
 
    var textScroll = wpTextbox1.scrollTop
    var startPos = wpTextbox1.selectionStart
    var endPos = wpTextbox1.selectionEnd
    txt = wpTextbox1.value.substring(startPos, endPos)
    if (txt == '') {alert(Peni_FullText); ShowHelp(); return}
    else{
 
	  txt = processText(txt);
      wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
    }
    wpTextbox1.selectionStart = startPos
    wpTextbox1.selectionEnd = startPos + txt.length
    wpTextbox1.scrollTop = textScroll
 
 }else if (document.selection && document.selection.createRange) { //IE
 	 //alert("IE");
 
   var range = document.selection.createRange()
   txt = range.text
   if (txt == '') {alert(Peni_FullText); ShowHelp(); return}
   else{
 
     processText()
	  range.text = txt
     //if (!window.opera) txt = txt.replace(/\r/g,'')
     if (range.moveStart) range.moveStart('character', - txt.length)
     range.select() 
   }
 
 }else // Для браузеров, которые не умеют возвращать выделенный фрагмент, выдаем ошибку
   { alert(Peni_CantWork); return }
 
 document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera 
 

//Здесь производим замену в переменной txt - это отразится на выделенном фрагменте текста 

function processText(txt){

  var re = /([^\[\d])([1,2][0-9]{3})([^\]\d])/g;
  txt=txt.replace(re , "$1[[$2]]$3");

  var re = /\s+([:\.,])/g;
  txt=txt.replace(re , "$1");

  var re = /([:\.,])([^\s]+)/g;
  txt=txt.replace(re , "$1 $2");

  var re = /\n[ \t]+([^\s]+)/g;
  txt=txt.replace(re, "\n$1");

  var re = /(\n{3,})/g;
  txt=txt.replace(re, "\n\n");

  var re = /([^ ])([\(])/g;
  txt=txt.replace(re, "$1 $2");

  var re = /\( /g;
  txt=txt.replace(re, "(");

  var re = / \)/g;
  txt=txt.replace(re, ")");

  return txt;
}

}
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya