Изменения

-hidden arg
Строка 35: Строка 35:     
// Скрытие преформатированных тегов и прочих тегов, не подлежащих викификации:
 
// Скрытие преформатированных тегов и прочих тегов, не подлежащих викификации:
s = hideTags (s, hidden, 'nowiki', 'templatedata',
+
s = hideTags (s, 'nowiki', 'templatedata',
 
'pre', 'source', 'syntaxhighlight', 'code', 'kbd', 'tt', 'gallery',
 
'pre', 'source', 'syntaxhighlight', 'code', 'kbd', 'tt', 'gallery',
 
'graph', 'svgcode', 'graphviz', 'mscgen', 'score', 'math', 'hiero', 'timeline',
 
'graph', 'svgcode', 'graphviz', 'mscgen', 'score', 'math', 'hiero', 'timeline',
Строка 43: Строка 43:  
s = r (s, /(IS[BS]N):?\s*([\s\d‒−—-]{8,17}[X\d])/ig, '{{$1|$2}}'); // -- ISBN/ISSN теперь в шаблон.
 
s = r (s, /(IS[BS]N):?\s*([\s\d‒−—-]{8,17}[X\d])/ig, '{{$1|$2}}'); // -- ISBN/ISSN теперь в шаблон.
   −
s = hide (s, /\{\{[\s\S]+?}}/g, hidden);// — шаблоны.
+
s = hide (s, /\{\{[\s\S]+?}}/g);// — шаблоны.
s = hide (s, /^ .*/mg, hidden); // — преформатированный текст.
+
s = hide (s, /^ .*/mg); // — преформатированный текст.
    
s = r (s, /<\s*a\s+href\s*=\s*(["'])\s*https?:\/\/in(?:formatorium)?\.wiki(?:\/wiki)?\/(\S+?)\s*\1\s*>(.+?)<\s*\/a\s*>/gi, wikifyInternalLinks);
 
s = r (s, /<\s*a\s+href\s*=\s*(["'])\s*https?:\/\/in(?:formatorium)?\.wiki(?:\/wiki)?\/(\S+?)\s*\1\s*>(.+?)<\s*\/a\s*>/gi, wikifyInternalLinks);
Строка 51: Строка 51:  
s = r (s, /\[\s*(https?:\/\/[^\]\s]+)\s*([^\]]*)\]/gi, internalise); // — замена внешних ссылок на загруженные документы.
 
s = r (s, /\[\s*(https?:\/\/[^\]\s]+)\s*([^\]]*)\]/gi, internalise); // — замена внешних ссылок на загруженные документы.
 
 
 
 
s = hide (s, /(?:https?|ftp|news|nntp|telnet|irc|gopher|magnet):\/\/[^\s\[\]<>"]+ ?/gi, hidden); // — гиперссылки.
+
s = hide (s, /(?:https?|ftp|news|nntp|telnet|irc|gopher|magnet):\/\/[^\s\[\]<>"]+ ?/gi); // — гиперссылки.
s = hide (s, /^#(?:redirect|перенапр(авление)?)/i, hidden); // — перенаправления.
+
s = hide (s, /^#(?:redirect|перенапр(авление)?)/i); // — перенаправления.
    
s = r (s, / +(\n|\r)/g, '$1'); // -- пробелы в конце строки.
 
s = r (s, / +(\n|\r)/g, '$1'); // -- пробелы в конце строки.
Строка 80: Строка 80:  
s = r (s, /\[\[ *([a-zA-Zа-яёА-ЯЁ\u00A0-\u00FF %!\"$&'()*,\-.\/0-9:;=?\\@\^_`’~]+) *\| *([^|[\]]+) *\]\]([a-zа-яё]+)/g, '[[$1|$2$3]]'); // -- ".
 
s = r (s, /\[\[ *([a-zA-Zа-яёА-ЯЁ\u00A0-\u00FF %!\"$&'()*,\-.\/0-9:;=?\\@\^_`’~]+) *\| *([^|[\]]+) *\]\]([a-zа-яё]+)/g, '[[$1|$2$3]]'); // -- ".
 
   
 
   
s = hide (s, /\[\[[^\]|]+/g, hidden); // -- скрытие викиссылок.
+
s = hide (s, /\[\[[^\]|]+/g); // -- скрытие викиссылок.
    
// Все теги в <> надо обработать здесь:
 
// Все теги в <> надо обработать здесь:
Строка 131: Строка 131:  
s = r (s, /((?:<ref\sname=".+?">[\s\S]+?<\/ref>)+)\s*$/, '<references>$1</references>\n'); // -- раздел сносок.
 
s = r (s, /((?:<ref\sname=".+?">[\s\S]+?<\/ref>)+)\s*$/, '<references>$1</references>\n'); // -- раздел сносок.
   −
s = hide(s, /<[a-z][^>]*?>/gi, hidden); // -- hide all HTML tags.
+
s = hide(s, /<[a-z][^>]*?>/gi); // -- hide all HTML tags.
   −
s = hide(s, /^(?:{\||\|-).*/mg, hidden); // -- таблицы и ряды.
+
s = hide(s, /^(?:{\||\|-).*/mg); // -- таблицы и ряды.
s = hide(s, /(?:^\||^!|!!|\|\|) *[a-z]+=[^|]+\|(?!\|)/mgi, hidden); // -- стили ячеек.
+
s = hide(s, /(?:^\||^!|!!|\|\|) *[a-z]+=[^|]+\|(?!\|)/mgi); // -- стили ячеек.
s = hide(s, /\| +/g, hidden); // -- форматированные ячейки.
+
s = hide(s, /\| +/g); // -- форматированные ячейки.
    
   // Двойные пробелы:
 
   // Двойные пробелы:
Строка 262: Строка 262:  
 
 
// Скрытие фрагментов путём окружения \x01 и \x02:
 
// Скрытие фрагментов путём окружения \x01 и \x02:
function hide (txt, re, hidden) {
+
function hide (txt, re) {
 
console.log ('Hiding ' + re);
 
console.log ('Hiding ' + re);
 
    return txt.replace (re, function (s) {return '\x01' + hidden.push (s) + '\x02'});
 
    return txt.replace (re, function (s) {return '\x01' + hidden.push (s) + '\x02'});
Строка 271: Строка 271:  
var args = Array.prototype.slice.call (arguments);
 
var args = Array.prototype.slice.call (arguments);
 
var txt = args.shift ()
 
var txt = args.shift ()
var hidden = args.shift ()
   
var tags = args.join ('|');
 
var tags = args.join ('|');
 
    return hide (txt, RegExp ('<(' + tags + ')( [^>]+)?>[\\s\\S]+?<\\/\\1>', 'gi'));
 
    return hide (txt, RegExp ('<(' + tags + ')( [^>]+)?>[\\s\\S]+?<\\/\\1>', 'gi'));
} // -- function hideTags (txt, tags, hidden)
+
} // -- function hideTags (txt, tags)
 
 
 
// Восстановление скрытого:
 
// Восстановление скрытого:
function restore (/* String */ s, /* Array */ hidden) {
+
function restore (/* String */ s) {
 
if ('0'.replace('0', '$$') === '$') { // -- $ в регэксах, как всегда, IE особенный.
 
if ('0'.replace('0', '$$') === '$') { // -- $ в регэксах, как всегда, IE особенный.
 
for (i = 0; i < hidden.length; i++) {
 
for (i = 0; i < hidden.length; i++) {
Строка 288: Строка 287:  
}
 
}
 
return s;
 
return s;
} // -- function restore (/* String */ s, /* Array */ hidden)
+
} // -- function restore (/* String */ s)
 
 
 
// Эти функции ничего не делают в браузере, но реализованы в серверном викификаторе:
 
// Эти функции ничего не делают в браузере, но реализованы в серверном викификаторе: