Участник:EvilCat/monobook.js — различия между версиями

Материал из Ролевая энциклопедии
Перейти к: навигация, поиск
м (дебаг)
 
(не показано 10 промежуточных версий этого же участника)
Строка 13: Строка 13:
 
function god ()
 
function god ()
 
{
 
{
alert(1);
+
// alert(1);
 
  var txt='', hidden = [], wpTextbox1 = document.editform.wpTextbox1
 
  var txt='', hidden = [], wpTextbox1 = document.editform.wpTextbox1
 
  var winScroll = document.documentElement.scrollTop
 
  var winScroll = document.documentElement.scrollTop
Строка 20: Строка 20:
 
  if (txt != 'вя' ||  
 
  if (txt != 'вя' ||  
 
   (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
 
   (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
   { alert(wmCantWork); return }
+
   { alert(wmCantWork); return }
alert(2);
+
// alert(2);
 
  wpTextbox1.focus()
 
  wpTextbox1.focus()
  
Строка 30: Строка 30:
 
     var endPos = wpTextbox1.selectionEnd
 
     var endPos = wpTextbox1.selectionEnd
 
     txt = wpTextbox1.value.substring(startPos, endPos)
 
     txt = wpTextbox1.value.substring(startPos, endPos)
alert(3);
+
// alert(3);
 
     if (txt == '') loc_processAllText()
 
     if (txt == '') loc_processAllText()
 
     else{
 
     else{
Строка 36: Строка 36:
 
       wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
 
       wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
 
     }
 
     }
alert(4);
+
// alert(4);
 
     wpTextbox1.selectionStart = startPos
 
     wpTextbox1.selectionStart = startPos
 
     wpTextbox1.selectionEnd = startPos + txt.length
 
     wpTextbox1.selectionEnd = startPos + txt.length
Строка 44: Строка 44:
 
   var range = document.selection.createRange()
 
   var range = document.selection.createRange()
 
   txt = range.text
 
   txt = range.text
alert(5);
+
// alert(5);
 
   if (txt == '') loc_processAllText()
 
   if (txt == '') loc_processAllText()
 
   else{
 
   else{
Строка 52: Строка 52:
 
     range.select()  
 
     range.select()  
 
   }
 
   }
   alert(6);
+
   // alert(6);
 
  }else // other browsers
 
  }else // other browsers
 
   if (confirm(wmFullText)) loc_processAllText()
 
   if (confirm(wmFullText)) loc_processAllText()
Строка 58: Строка 58:
 
  document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
 
  document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera
  
alert(7);
+
// alert(7);
 
//functions
 
//functions
  
Строка 78: Строка 78:
 
  var sigs = txt.match(/\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g)
 
  var sigs = txt.match(/\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g)
 
  if (sigs && sigs.length > 1) {
 
  if (sigs && sigs.length > 1) {
  alert(wmTalkPage); return
+
    alert(wmTalkPage); return
 
  }
 
  }
 
}
 
}
}
+
// alert(8);
alert(8);
 
 
loc_hideTag('nowiki')
 
loc_hideTag('nowiki')
 
loc_hideTag('pre')
 
loc_hideTag('pre')
Строка 91: Строка 90:
  
 
loc_r(/( |\n|\r)+\{\{(·|•|\*)\}\}/g, '{{$2}}'); //before {{·/•/*}}, usually in templates
 
loc_r(/( |\n|\r)+\{\{(·|•|\*)\}\}/g, '{{$2}}'); //before {{·/•/*}}, usually in templates
loc_hide(/{\{[\s\S]+?}}/g)//templates
+
// loc_hide(/{\{[\s\S]+?}}/g)//templates
 
loc_hide(/^ .*/mg)
 
loc_hide(/^ .*/mg)
 
loc_hide(/(https?|ftp|news|nntp|telnet|irc|gopher):\/\/[^\s\[\]<>"]+ ?/gi)
 
loc_hide(/(https?|ftp|news|nntp|telnet|irc|gopher):\/\/[^\s\[\]<>"]+ ?/gi)
 
loc_hide(/^#(redirect|перенапр(авление)?)/i)
 
loc_hide(/^#(redirect|перенапр(авление)?)/i)
 
loc_hideTag('gallery')
 
loc_hideTag('gallery')
alert(9);
+
// alert(9);
  
 
loc_r(/ +(\n|\r)/g,'$1')//spaces at EOL
 
loc_r(/ +(\n|\r)/g,'$1')//spaces at EOL
 
txt = '\n'+txt+'\n'
 
txt = '\n'+txt+'\n'
  
loc_r(/\{\{Божество([\s\r\n]+)\|/, '{{Божество D&D/d20$1\|')
+
//loc_r(/Тест/i, 'Тест пройден')
alert(10);
+
loc_r(/\{\{Божество([\s\r\n ]*)\|/i, '{{Божество D&D/d20$1|')
 +
loc_r(/(мировоззрение[\s\r\n ]*=[\s\r\n ]*)\{\{Мировоззрение([\s\r\n ]*)\|/i, '$1{{Девять мировоззрений D&D/Божество$2|')
 +
loc_r(/\{\{Мировоззрение([\s\r\n ]*)\|/i, '{{Девять мировоззрений D&D$1|')
 +
loc_r(/(домены[\s\r\n ]*=[\s\r\n ]*)([^\|]+?)([\s\r\n ]*)\|/i, domains)
 +
loc_r(/(титул[\s\r\n ]*=[\s\r\n ]*)([^\|]+?)([\s\r\n ]*)\|/i, titles)
 +
// alert(10);
 +
}
 
function loc_r(r1, r2){ txt = txt.replace(r1, r2) }
 
function loc_r(r1, r2){ txt = txt.replace(r1, r2) }
 
function loc_hide(re){ loc_r(re, function(s){return '\x01'+hidden.push(s)+'\x02'})}
 
function loc_hide(re){ loc_r(re, function(s){return '\x01'+hidden.push(s)+'\x02'})}
 
function loc_hideTag(tag){ loc_hide(RegExp('<' + tag + '( [^>]+)?>[\\s\\S]+?<\\/' + tag + '>','gi')) }
 
function loc_hideTag(tag){ loc_hide(RegExp('<' + tag + '( [^>]+)?>[\\s\\S]+?<\\/' + tag + '>','gi')) }
 +
 +
function domains(str, p1, p2, p3)
 +
{
 +
if (p2.match(/\{\{/ )) return p1+p2+p3+'|';
 +
p2=p2.replace(/ ?, ?/g, '|');
 +
p2=p2.replace(/ ?; ?/g, '|');
 +
return p1+'{{Домены D&D|'+p2+'}}'+p3+'|';
 +
}
 +
function titles(str, p1, p2, p3)
 +
{
 +
p2=p2.split(/ ?[;,] ?/g);
 +
for (x in p2)
 +
{
 +
  p2[x]=capitalize(p2[x]);
 +
}
 +
p2=p2.join('<br>');
 +
return p1+p2+p3+'|';
 +
}
 +
function capitalize (s)
 +
{
 +
  return s.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
 +
}
  
 
}
 
}

Текущая версия на 18:40, 8 марта 2012

function addGodButton() {
	var toolbar = document.getElementById('toolbar')
	if (!toolbar) return
	var i = document.createElement('span')
	i.innerHTML='[Б]'
	i.onclick = god
	i.style.cursor = 'pointer'
	toolbar.appendChild(i)
}
addOnloadHook(addGodButton)


function god ()
{
// alert(1);
 var txt='', hidden = [], wpTextbox1 = document.editform.wpTextbox1
 var winScroll = document.documentElement.scrollTop

 try {txt='ая'.replace(/а/g,'б').replace(/б(?=я)/,'в')} catch(e){}//check regexp support
 if (txt != 'вя' || 
  (navigator.appName=='Netscape' && navigator.appVersion.substr (0, 1) < 5))
  {  alert(wmCantWork); return }
// alert(2);
 wpTextbox1.focus()

 if (typeof wpTextbox1.selectionStart != 'undefined' 
    && (navigator.productSub > 20031000 || is_safari || is_opera)) { //Mozilla/Opera/Safari3
    var textScroll = wpTextbox1.scrollTop
    var startPos = wpTextbox1.selectionStart
    var endPos = wpTextbox1.selectionEnd
    txt = wpTextbox1.value.substring(startPos, endPos)
// alert(3);
    if (txt == '') loc_processAllText()
    else{
      loc_processText()
      wpTextbox1.value = wpTextbox1.value.substring(0, startPos) + txt + wpTextbox1.value.substring(endPos)
    }
// alert(4);
    wpTextbox1.selectionStart = startPos
    wpTextbox1.selectionEnd = startPos + txt.length
    wpTextbox1.scrollTop = textScroll

 }else if (document.selection && document.selection.createRange) { //IE
   var range = document.selection.createRange()
   txt = range.text
// alert(5);
   if (txt == '') loc_processAllText()
   else{
     loc_processText()
     range.text = txt
     if (range.moveStart) range.moveStart('character', - txt.length)
     range.select() 
   }
  // alert(6);
 }else // other browsers
   if (confirm(wmFullText)) loc_processAllText()

 document.documentElement.scrollTop = winScroll // scroll back, for IE/Opera

// alert(7);
//functions

function loc_processAllText(){
 txt = wpTextbox1.value
 if (txt=='version') alert('Викификатор '+wmVersion)
 loc_processText()
 loc_r(/^[\n\r]+/, '')
 wpTextbox1.value = txt
 txt = ''
 if (window.auto_comment && window.insertSummary && !document.editform.wpSection.value)
   insertSummary('викификатор')
}

function loc_processText(){

var u = ' ' //messed by RK
if (wgNamespaceNumber % 2 || wgNamespaceNumber==4) { //is talk page
 var sigs = txt.match(/\d\d:\d\d, \d\d? \S{3,8} 20\d\d \(UTC\)/g)
 if (sigs && sigs.length > 1) {
    alert(wmTalkPage); return
 }
}
// alert(8);
loc_hideTag('nowiki')
loc_hideTag('pre')
loc_hideTag('source')
loc_hideTag('code')
loc_hideTag('tt')
loc_hideTag('math')

loc_r(/( |\n|\r)+\{\{(·|•|\*)\}\}/g, '{{$2}}'); //before {{·/•/*}}, usually in templates
// loc_hide(/{\{[\s\S]+?}}/g)//templates
loc_hide(/^ .*/mg)
loc_hide(/(https?|ftp|news|nntp|telnet|irc|gopher):\/\/[^\s\[\]<>"]+ ?/gi)
loc_hide(/^#(redirect|перенапр(авление)?)/i)
loc_hideTag('gallery')
// alert(9);

loc_r(/ +(\n|\r)/g,'$1')//spaces at EOL
txt = '\n'+txt+'\n'

//loc_r(/Тест/i, 'Тест пройден')
loc_r(/\{\{Божество([\s\r\n ]*)\|/i, '{{Божество D&D/d20$1|')
loc_r(/(мировоззрение[\s\r\n ]*=[\s\r\n ]*)\{\{Мировоззрение([\s\r\n ]*)\|/i, '$1{{Девять мировоззрений D&D/Божество$2|')
loc_r(/\{\{Мировоззрение([\s\r\n ]*)\|/i, '{{Девять мировоззрений D&D$1|')
loc_r(/(домены[\s\r\n ]*=[\s\r\n ]*)([^\|]+?)([\s\r\n ]*)\|/i, domains)
loc_r(/(титул[\s\r\n ]*=[\s\r\n ]*)([^\|]+?)([\s\r\n ]*)\|/i, titles)
// alert(10);
}
function loc_r(r1, r2){ txt = txt.replace(r1, r2) }
function loc_hide(re){ loc_r(re, function(s){return '\x01'+hidden.push(s)+'\x02'})}
function loc_hideTag(tag){ loc_hide(RegExp('<' + tag + '( [^>]+)?>[\\s\\S]+?<\\/' + tag + '>','gi')) }

function domains(str, p1, p2, p3)
{
 if (p2.match(/\{\{/ )) return p1+p2+p3+'|';
 p2=p2.replace(/ ?, ?/g, '|');
 p2=p2.replace(/ ?; ?/g, '|');
 return p1+'{{Домены D&D|'+p2+'}}'+p3+'|';
}
function titles(str, p1, p2, p3)
{
 p2=p2.split(/ ?[;,] ?/g);
 for (x in p2)
 {
  p2[x]=capitalize(p2[x]);
 }
 p2=p2.join('<br>');
 return p1+p2+p3+'|';
}
function capitalize (s)
{
   return s.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
}

}