<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://towiki.ru/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AWikificator.js</id>
	<title>MediaWiki:Wikificator.js - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://towiki.ru/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AWikificator.js"/>
	<link rel="alternate" type="text/html" href="https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;action=history"/>
	<updated>2026-04-27T04:20:08Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;diff=28067&amp;oldid=prev</id>
		<title>Maximaximax: из ru-wiki</title>
		<link rel="alternate" type="text/html" href="https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;diff=28067&amp;oldid=prev"/>
		<updated>2008-07-22T11:59:52Z</updated>

		<summary type="html">&lt;p&gt;из ru-wiki&lt;/p&gt;
&lt;a href=&quot;https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;amp;diff=28067&amp;amp;oldid=123&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Maximaximax</name></author>
	</entry>
	<entry>
		<id>https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;diff=123&amp;oldid=prev</id>
		<title>Maximaximax: из ru: Wikipedia</title>
		<link rel="alternate" type="text/html" href="https://towiki.ru/index.php?title=MediaWiki:Wikificator.js&amp;diff=123&amp;oldid=prev"/>
		<updated>2007-01-30T03:24:13Z</updated>

		<summary type="html">&lt;p&gt;из ru: Wikipedia&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// ВНИМАНИЕ! Внося изменения в код, не забывайте обновлять справку на странице [[Википедия:Викификатор]] &lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;pre&amp;gt; */ &lt;br /&gt;
&lt;br /&gt;
	var txt;&lt;br /&gt;
	&lt;br /&gt;
	var wmFullText = &amp;#039;Wikificator will process ALL text on this page. Continue?&amp;#039;;&lt;br /&gt;
	var wmCantWork = &amp;#039;Wikificator cannot work in your browser&amp;#039;;&lt;br /&gt;
	var wmWontWork = &amp;#039;Wikificator will not work in Netscape 4.x and less&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	var wmCategoryNS = &amp;#039;Категория&amp;#039;;&lt;br /&gt;
	var wmTemplateNS = &amp;#039;Шаблон&amp;#039;;&lt;br /&gt;
	var wmUserNS = &amp;#039;Участник&amp;#039;;&lt;br /&gt;
	var wmImageNS = &amp;#039;Изображение&amp;#039;;&lt;br /&gt;
	var wmMediaNS = &amp;#039;Медиа&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	var wmLocaleNS = new Array ( wmCategoryNS, wmTemplateNS, wmUserNS, wmImageNS, wmMediaNS );&lt;br /&gt;
	var wmEnNS = new Array ( &amp;#039;category&amp;#039;, &amp;#039;template&amp;#039;, &amp;#039;user&amp;#039;, &amp;#039;image&amp;#039;, &amp;#039;media&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (window.event){&lt;br /&gt;
  document.onkeypress = pressed;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pressed() //On Ctrl+Enter (MSIE)&lt;br /&gt;
{key = window.event.keyCode;if (key==10){Wikify();}}&lt;br /&gt;
//======================================&lt;br /&gt;
function Wikify()&lt;br /&gt;
{&lt;br /&gt;
check_regexp(); // Check whether regular expressions are supported&lt;br /&gt;
&lt;br /&gt;
// Только если пользователь указал в персональном скрипте auto_comment = 1;&lt;br /&gt;
&lt;br /&gt;
// Раскоментировал, теперь не должно ругаться (добавил определение переменной в общий монобук) &lt;br /&gt;
// - если все равно ругается откатите и забаньте меня&lt;br /&gt;
&lt;br /&gt;
 if (auto_comment == 1) {&lt;br /&gt;
   var wpS = document.editform.wpSummary;&lt;br /&gt;
   if (wpS.value != &amp;#039;&amp;#039; &amp;amp;&amp;amp; wpS.value.charAt(wpS.value.length-2) != &amp;#039;/&amp;#039;) {&lt;br /&gt;
     wpS.value += &amp;#039;, Викификатор&amp;#039;&lt;br /&gt;
   } else {&lt;br /&gt;
     wpS.value += &amp;#039;Викификатор&amp;#039;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
document.editform.wpTextbox1.focus();&lt;br /&gt;
var txtarea = document.editform.wpTextbox1;&lt;br /&gt;
if(document.selection  &amp;amp;&amp;amp; !is_gecko)/* IE */ {&lt;br /&gt;
	txt = &amp;quot; &amp;quot;+document.selection.createRange().text;&lt;br /&gt;
	if (txt == &amp;quot; &amp;quot;)	{all_text();} // If nothing was selected;&lt;br /&gt;
	else{&lt;br /&gt;
		Process();&lt;br /&gt;
		txt = txt.substr (1, txt.length-1);&lt;br /&gt;
		document.selection.createRange().text = txt;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
else if((txtarea.selectionStart || txtarea.selectionStart == &amp;#039;0&amp;#039;)&amp;amp;&amp;amp;(navigator.productSub&amp;gt;20031000)) /*Gecko-browsers older then 10.2003*/  {&lt;br /&gt;
 		var startPos = txtarea.selectionStart;&lt;br /&gt;
		var endPos = txtarea.selectionEnd;&lt;br /&gt;
		var scrollTop=txtarea.scrollTop;&lt;br /&gt;
		txt = &amp;quot; &amp;quot;+(txtarea.value).substring(startPos, endPos);&lt;br /&gt;
		if (txt == &amp;quot; &amp;quot;)	{all_text();} // If nothing was selected;&lt;br /&gt;
		else{&lt;br /&gt;
			Process();&lt;br /&gt;
			txt = txt.substr (1, txt.length-1);&lt;br /&gt;
			txtarea.value = txtarea.value.substring(0, startPos) + txt + txtarea.value.substring(endPos, txtarea.value.length);&lt;br /&gt;
			txtarea.focus();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
else{if (confirm(wmFullText)) {all_text();}} // Other browsers&lt;br /&gt;
}&lt;br /&gt;
//======================================&lt;br /&gt;
function all_text()// Process all text&lt;br /&gt;
{&lt;br /&gt;
txt = &amp;quot; &amp;quot;+document.editform.wpTextbox1.value;&lt;br /&gt;
Process();&lt;br /&gt;
txt = txt.substr (1, txt.length-1);&lt;br /&gt;
document.editform.wpTextbox1.value=txt;&lt;br /&gt;
}&lt;br /&gt;
//======================================&lt;br /&gt;
function check_regexp()// Check whether regular expressions are supported&lt;br /&gt;
{&lt;br /&gt;
var reg1 = &amp;quot;code&amp;quot;;&lt;br /&gt;
reg1 = reg1.replace(/d/g, &amp;quot;r&amp;quot;);&lt;br /&gt;
if (reg1 != &amp;quot;core&amp;quot;){alert(wmCantWork);exit;}&lt;br /&gt;
b_ver = navigator.appVersion.substr (0, 1);&lt;br /&gt;
if (navigator.appName==&amp;quot;Netscape&amp;quot;&amp;amp;&amp;amp;b_ver&amp;lt;5){alert(wmWontWork);exit;}&lt;br /&gt;
return ;&lt;br /&gt;
}&lt;br /&gt;
function Process()&lt;br /&gt;
// We have 2 more pairs of safe chars in \x1E — \x1F !&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
//var nowiki = ReplaceElements( &amp;#039;\&amp;lt;math\&amp;gt;(.|\r|\n)+?\&amp;lt;\/math\&amp;gt;, &amp;quot;\x03&amp;quot;, &amp;quot;\x04&amp;quot; );&lt;br /&gt;
//That variant will make ReplaceTags() function unnecessary, but it&amp;#039;s so ugly...&lt;br /&gt;
&lt;br /&gt;
var nowiki = ReplaceTags( &amp;#039;nowiki&amp;#039;, &amp;quot;\x03&amp;quot;, &amp;quot;\x04&amp;quot; );&lt;br /&gt;
var pre = ReplaceTags( &amp;#039;pre&amp;#039;, &amp;quot;\x12&amp;quot;, &amp;quot;\x13&amp;quot; );&lt;br /&gt;
var code = ReplaceTags( &amp;#039;code&amp;#039;, &amp;quot;\x1c&amp;quot;, &amp;quot;\x1d&amp;quot; );&lt;br /&gt;
var math = ReplaceTags( &amp;#039;math&amp;#039;, &amp;quot;\x05&amp;quot;, &amp;quot;\x06&amp;quot; );&lt;br /&gt;
var gallery = ReplaceTags( &amp;#039;gallery&amp;#039;, &amp;quot;\x14&amp;quot;, &amp;quot;\x15&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
// Exclude lines starting with space&lt;br /&gt;
f_space = txt.substr (0, 1)&lt;br /&gt;
txt = txt.substr (1, txt.length-1)&lt;br /&gt;
var sp_lines = ReplaceElements( &amp;quot;^( )(.+)$&amp;quot;, &amp;quot;\x16&amp;quot;, &amp;quot;\x17&amp;quot; );&lt;br /&gt;
txt = f_space + txt&lt;br /&gt;
&lt;br /&gt;
ProcessNS( wmEnNS , wmLocaleNS );&lt;br /&gt;
CorrectRanges();&lt;br /&gt;
&lt;br /&gt;
// Exclude templates and internal links&lt;br /&gt;
var templates = ReplaceElements( &amp;quot;\\{\\{(.|\\r|\\n)+?\\}\\}&amp;quot;, &amp;quot;\x18&amp;quot;, &amp;quot;\x19&amp;quot; );&lt;br /&gt;
var links = ReplaceElements( &amp;quot;(\\[\\[)(.*?)(\\||\\]\\])&amp;quot;, &amp;quot;\x10&amp;quot;, &amp;quot;\x11&amp;quot; );&lt;br /&gt;
var ext_links = ReplaceElements( &amp;quot;\\[(http|https|ftp|tftp|news|nntp|telnet|irc|gopher)://(.*?)\\]&amp;quot;, &amp;quot;\x1A&amp;quot;, &amp;quot;\x1B&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
HTML2Wiki();&lt;br /&gt;
&lt;br /&gt;
// Exclude tags and tag attributes (all text in quotes after &amp;quot;=&amp;quot; sign)&lt;br /&gt;
var attrs = ReplaceElements( &amp;#039;(=)(\\s?)(\\&amp;#039; + &amp;#039;&amp;quot;)(.*?)(\\&amp;quot;)&amp;#039;, &amp;quot;\x0E&amp;quot;, &amp;quot;\x0F&amp;quot;);&lt;br /&gt;
var tags = ReplaceElements( &amp;quot;&amp;lt;([^&amp;gt;]*?)&amp;gt;&amp;quot;, &amp;quot;\x01&amp;quot;, &amp;quot;\x02&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
ProcessTypography();&lt;br /&gt;
ProcessTypography(); // Second call&lt;br /&gt;
&lt;br /&gt;
//alert(txt);&lt;br /&gt;
&lt;br /&gt;
RestoreElements( tags, &amp;quot;\x01&amp;quot;, &amp;quot;\x02&amp;quot;);&lt;br /&gt;
RestoreElements( attrs, &amp;quot;\x0E&amp;quot;, &amp;quot;\x0F&amp;quot;);&lt;br /&gt;
RestoreElements( ext_links, &amp;quot;\x1A&amp;quot;, &amp;quot;\x1B&amp;quot; );&lt;br /&gt;
RestoreElements( links, &amp;quot;\x10&amp;quot;, &amp;quot;\x11&amp;quot; );&lt;br /&gt;
RestoreElements( templates, &amp;quot;\x18&amp;quot;, &amp;quot;\x19&amp;quot; );&lt;br /&gt;
RestoreElements( sp_lines, &amp;quot;\x16&amp;quot;, &amp;quot;\x17&amp;quot; );&lt;br /&gt;
RestoreElements( gallery, &amp;quot;\x14&amp;quot;, &amp;quot;\x15&amp;quot; );&lt;br /&gt;
RestoreElements( math, &amp;quot;\x05&amp;quot;, &amp;quot;\x06&amp;quot; );&lt;br /&gt;
RestoreElements( code, &amp;quot;\x1c&amp;quot;, &amp;quot;\x1d&amp;quot; );&lt;br /&gt;
RestoreElements( pre, &amp;quot;\x12&amp;quot;, &amp;quot;\x13&amp;quot; );&lt;br /&gt;
RestoreElements( nowiki, &amp;quot;\x03&amp;quot;, &amp;quot;\x04&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function HTML2Wiki()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Replace &amp;lt;b&amp;gt;, &amp;lt;strong&amp;gt; tags with &amp;#039;&amp;#039;&amp;#039; and &amp;lt;i&amp;gt;, &amp;lt;em&amp;gt; with &amp;#039;&amp;#039;&lt;br /&gt;
txt = txt.replace(/\&amp;lt;\/?(b|strong)\&amp;gt;/gim, &amp;quot;\&amp;#039;\&amp;#039;\&amp;#039;&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;lt;\/?(i|em)\&amp;gt;/gim, &amp;quot;\&amp;#039;\&amp;#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
// Replace &amp;lt;hr&amp;gt; tag with ----, improve &amp;lt;hr&amp;gt; and &amp;lt;br&amp;gt; tags&lt;br /&gt;
txt = txt.replace(/\&amp;lt;hr ?\/?\&amp;gt;/gi, &amp;quot;----&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;lt;hr ([^\&amp;gt;\/]+?) ?\/?\&amp;gt;/gi, &amp;quot;&amp;lt;hr $1 /&amp;gt;&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;lt;br\/?\&amp;gt;/gi, &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;lt;br ([^\&amp;gt;\/]+?) ?\/?\&amp;gt;/gi, &amp;quot;&amp;lt;br $1 /&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
// Replace small and big tags with inline styling&lt;br /&gt;
&lt;br /&gt;
/// txt = txt.replace(/(\&amp;lt;small\&amp;gt;)/g, &amp;quot;&amp;lt;span style=\&amp;quot;font-size\:smaller\;\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
/// txt = txt.replace(/(\&amp;lt;\/small\&amp;gt;)/g, &amp;quot;&amp;lt;\/span&amp;gt;&amp;quot;);&lt;br /&gt;
/// txt = txt.replace(/(\&amp;lt;big\&amp;gt;)/g, &amp;quot;&amp;lt;span style=\&amp;quot;font-size\:1.25em\;\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
/// txt = txt.replace(/(\&amp;lt;\/big\&amp;gt;)/g, &amp;quot;&amp;lt;\/span&amp;gt;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Process default namespaces&lt;br /&gt;
&lt;br /&gt;
function ProcessNS( En_NS_List , Loc_NS_List )&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
for (i=0; i &amp;lt; En_NS_List.length; i++)&lt;br /&gt;
  {&lt;br /&gt;
  //alert(&amp;quot;(\\[\\[)(:?)(&amp;quot; + En_NS_List[i] + &amp;quot;|&amp;quot; +&lt;br /&gt;
  //Loc_NS_List[i] + &amp;quot;)(:)( *)&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  txt = txt.replace( new RegExp( &amp;quot;(\\[\\[:?)(&amp;quot; + En_NS_List[i] + &amp;quot;|&amp;quot; +&lt;br /&gt;
  Loc_NS_List[i] + &amp;quot;):( *)&amp;quot; , &amp;quot;gi&amp;quot; ), &amp;quot;$1&amp;quot; + Loc_NS_List[i] + &amp;quot;:&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace &amp;#039;&amp;lt;replaced_tag&amp;gt; ... &amp;lt;/replaced_tag&amp;gt;&amp;#039; (&amp;lt;nowiki&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
// with &amp;#039;opepening_char + tag&amp;#039;s counter + closing_char&amp;#039; (&amp;#039;\x03&amp;#039;+1&amp;#039;+&amp;#039;\x04&amp;#039;)&lt;br /&gt;
//======================================&lt;br /&gt;
&lt;br /&gt;
function ReplaceTags(replaced_tag, op_char, cl_char )&lt;br /&gt;
&lt;br /&gt;
// @replaced_tag - tag to be replaced&lt;br /&gt;
// @op_char, @cl_char (opening &amp;amp; closing chars) - &amp;quot;Safe&amp;quot; pair of &lt;br /&gt;
// unicode unprintable characters, that will be used in replacement&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
var counter = 0; //tags counter&lt;br /&gt;
&lt;br /&gt;
// RegExp pattern&lt;br /&gt;
var pattern = &amp;quot;\\&amp;lt;&amp;quot; + replaced_tag + &amp;quot;\\&amp;gt;(.|\r|\n)+?\&amp;lt;\\/&amp;quot; + replaced_tag + &amp;quot;\\&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// RegExp template to be replaced (multiline text between &lt;br /&gt;
// &amp;lt;replaced_tag&amp;gt; and &amp;lt;/replaced_tag&amp;gt; case sensitive tags)&lt;br /&gt;
var replaced_regexp = new RegExp(pattern , &amp;quot;im&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
// Buffer for replaced matches storage. It&amp;#039;s array of matching substrings -&lt;br /&gt;
// multiline text between &amp;lt;replaced_tag&amp;gt; and &amp;lt;/replaced_tag&amp;gt; case sensitive tags ()&lt;br /&gt;
matches_buffer = txt.match( new RegExp(pattern , &amp;quot;gim&amp;quot;) );&lt;br /&gt;
&lt;br /&gt;
// while some substring of txt matches replaced_regexp...&lt;br /&gt;
while (replaced_regexp.test(txt))&lt;br /&gt;
  {&lt;br /&gt;
  txt = txt.replace(replaced_regexp, op_char + ++counter + cl_char );&lt;br /&gt;
  }&lt;br /&gt;
return matches_buffer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace &amp;#039;&amp;lt;replaced_tag&amp;gt; ... &amp;lt;/replaced_tag&amp;gt;&amp;#039; (&amp;lt;nowiki&amp;gt; &amp;lt;br/&amp;gt; &amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
// with &amp;#039;opepening_char + tag&amp;#039;s counter + closing_char&amp;#039; (&amp;#039;\x03&amp;#039;+1&amp;#039;+&amp;#039;\x04&amp;#039;)&lt;br /&gt;
//======================================&lt;br /&gt;
&lt;br /&gt;
function ReplaceElements( req_exp, op_char, cl_char )&lt;br /&gt;
&lt;br /&gt;
// @req_exp - reqular expression to be replaced&lt;br /&gt;
// @op_char, @cl_char (opening &amp;amp; closing chars) - &amp;quot;Safe&amp;quot; pair of &lt;br /&gt;
// unicode unprintable characters, that will be used in replacement&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
var counter = 0; //tags counter&lt;br /&gt;
&lt;br /&gt;
// RegExp template to be replaced (multiline, case sensitive)&lt;br /&gt;
var replaced_regexp = new RegExp( req_exp , &amp;quot;m&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
// Buffer for replaced matches storage. It&amp;#039;s array of matching substrings.&lt;br /&gt;
// (multiline, case sensitive, global)&lt;br /&gt;
matches_buffer = txt.match( new RegExp( req_exp , &amp;quot;gm&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
// while some substring of txt matches replaced_regexp...&lt;br /&gt;
while (replaced_regexp.test(txt))&lt;br /&gt;
  {&lt;br /&gt;
  //alert(txt.match(replaced_regexp));&lt;br /&gt;
  txt = txt.replace(replaced_regexp, op_char + ++counter + cl_char );&lt;br /&gt;
  }&lt;br /&gt;
return matches_buffer;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//======================================&lt;br /&gt;
// Restore text, that was damaged by replacing 3 chars with substring from array&lt;br /&gt;
//======================================&lt;br /&gt;
&lt;br /&gt;
function RestoreElements( replaced_buffer, op_char, cl_char )&lt;br /&gt;
&lt;br /&gt;
// @replaced_buffer - array of replaced substrings.&lt;br /&gt;
// @op_char, @cl_char (opening &amp;amp; closing chars) - &amp;quot;Safe&amp;quot; pair &lt;br /&gt;
// to be replaced with &amp;lt;replaced_tag&amp;gt; and &amp;lt;/replaced_tag&amp;gt; accordingly&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
var counter = 0; //tags counter&lt;br /&gt;
&lt;br /&gt;
// RegExp template to be replaced (3 chars: tag&amp;#039;s counter &lt;br /&gt;
// surrunded by &amp;quot;Safe&amp;quot; pair)&lt;br /&gt;
var replaced_regexp = new RegExp(&amp;quot;\\&amp;quot; +op_char+ &amp;quot;([0-9]*)\\&amp;quot; +cl_char );&lt;br /&gt;
&lt;br /&gt;
//replaced_regexp = /\x03([0-9]*)\x04/&lt;br /&gt;
&lt;br /&gt;
// while some substring of txt matches replaced_regexp...&lt;br /&gt;
while (replaced_regexp.test(txt))&lt;br /&gt;
{&lt;br /&gt;
  txt = txt.replace(replaced_regexp, replaced_buffer[counter++]);&lt;br /&gt;
}&lt;br /&gt;
return txt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Corrects year and century ranges (as links) in text&lt;br /&gt;
function CorrectRanges() {&lt;br /&gt;
// Correct year ranges&lt;br /&gt;
txt = txt.replace(/(?!ISBN)(\(|\s)(\[\[[12]?\d{3}\]\])[\u00A0 ]?(-|--|–|—) ?(\[\[[12]?\d{3}\]\])(\W)/g, &amp;quot;$1$2—$4$5&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\[\[[12]?\d{3}\]\]) ?(г\.|гг\.)/g, &amp;quot;$1\u00A0$2&amp;quot;)&lt;br /&gt;
// Correct century ranges&lt;br /&gt;
txt = txt.replace(/(\(|\s)(\[\[[IVX]{1,5}\]\])[\u00A0 ]?(-|--|–|—) ?(\[\[[IVX]{1,5}\]\])(\W)/g, &amp;quot;$1$2—$4$5&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\[\[[IVX]{1,5}\]\]) ?(в\.|вв\.)/g, &amp;quot;$1\u00A0$2&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/***************************************************&lt;br /&gt;
	Typographical considerations&lt;br /&gt;
***************************************************/&lt;br /&gt;
function ProcessTypography() {&lt;br /&gt;
&lt;br /&gt;
// Insert spaces in titles&lt;br /&gt;
txt = txt.replace(/^(=+)([ \t\f\v]*)(.*?)([ \t\f\v]*)(=+)$/gm, &amp;quot;$1 $3 $1&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Use 1 character to display squaring and cubing&lt;br /&gt;
txt = txt.replace(/(&amp;lt;sup&amp;gt;2&amp;lt;\/sup&amp;gt;|&amp;amp;sup2;)/g, &amp;quot;²&amp;quot;);&lt;br /&gt;
txt = txt.replace(/(&amp;lt;sup&amp;gt;3&amp;lt;\/sup&amp;gt;|&amp;amp;sup3;)/g, &amp;quot;³&amp;quot;);&lt;br /&gt;
txt = txt.replace(/(\^2)(\D)/g, &amp;quot;²$2&amp;quot;);&lt;br /&gt;
txt = txt.replace(/(\^3)(\D)/g, &amp;quot;³$2&amp;quot;);&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace right HTML symbols with wrong ones in order to process everything&lt;br /&gt;
txt = txt.replace(/–/g, &amp;quot;-&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(«|»|“|”|„|\&amp;amp;((la|ra|bd|ld)quo|#132|#147|#148|quot);)/g, &amp;quot;\&amp;quot;&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace double hyphen with a dash&lt;br /&gt;
txt = txt.replace(/(--)(\[\[Участник|\~\~\~)/g, &amp;quot;—$2&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace set of &amp;#039;less then&amp;#039; or &amp;#039;greater then&amp;#039; symbols (&amp;lt;&amp;lt; or &amp;gt;&amp;gt;) with usual double quotes&lt;br /&gt;
txt = txt.replace(/(&amp;lt;&amp;lt;)(\S.+\S)(&amp;gt;&amp;gt;)/g, &amp;quot;\&amp;quot;$2\&amp;quot;&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Process degree sign &amp;quot;°&amp;quot;, &amp;quot;+-&amp;quot; and &amp;quot;~=&amp;quot;&lt;br /&gt;
txt = txt.replace(/(\+[--])|(&amp;amp;plusmn;)/g, &amp;quot;±&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(~=)/g, &amp;quot;≈&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;amp;deg;/g, &amp;quot;°&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([ =≈≠≤≥&amp;lt;&amp;gt;(&amp;quot;&amp;#039;|]|^)([+±−\-]?\d+?(?:[.,]\d+?)?)(([ °^*]| [°^*])[CС])(?=[ &amp;quot;&amp;#039;).,;!?|]|$)/gm, &amp;quot;$1$2\u00A0°C&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([ =≈≠≤≥&amp;lt;&amp;gt;(&amp;quot;&amp;#039;|]|^)([+±−\-]?\d+?(?:[.,]\d+?)?)(([ °^*]| [°^*])F)(?=[ &amp;quot;&amp;#039;).,;|!?]|$)/gm, &amp;quot;$1$2\u00A0°F&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace &amp;quot;...&amp;quot;, &amp;quot;&amp;amp;hellip;&amp;quot; and &amp;quot;&amp;amp;#133;&amp;quot; with ellipsis&lt;br /&gt;
txt = txt.replace(/(\.{3}|\&amp;amp;(hellip|#133);)/g, &amp;#039;…&amp;#039;)&lt;br /&gt;
// Apostrophe handler&lt;br /&gt;
txt = txt.replace(/([\wа-яА-ЯёЁ])&amp;#039;([\wа-яА-ЯёЁ])/g, &amp;quot;$1’$2&amp;quot;)&lt;br /&gt;
// Minus handler&lt;br /&gt;
txt = txt.replace(/(sup\&amp;gt;|sub\&amp;gt;|\s)-(\d)/g, &amp;quot;$1−$2&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace hyphens and en dashes with normal dashes&lt;br /&gt;
txt = txt.replace(/\&amp;amp;(#151|[nm]dash);/g, &amp;quot;—&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(&amp;amp;nbsp;|[\f\n\r\t\v\u00A0\u2028\u2029])(-|--|–) /g, &amp;quot;$1— &amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\d)--(\d)/g, &amp;quot;$1—$2&amp;quot;)&lt;br /&gt;
// Insert non-breaking space before dashes&lt;br /&gt;
txt = txt.replace(/(\S) (-|--|–|—) (\S)/g, &amp;quot;$1\u00A0— $3&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Special characters: ©, ®, ™, §, €, ¥ и £.&lt;br /&gt;
txt = txt.replace(/\&amp;amp;copy;/gi, &amp;quot;©&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;amp;reg;/gi, &amp;quot;®&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\((tm|тм)\)|\&amp;amp;trade;)/gi, &amp;quot;™&amp;quot;)&lt;br /&gt;
txt = txt.replace(/\&amp;amp;sect;/gi, &amp;quot;§&amp;quot;)&lt;br /&gt;
txt = txt.replace (/\&amp;amp;euro;/gi, &amp;quot;€&amp;quot;)&lt;br /&gt;
txt = txt.replace (/\&amp;amp;yen;/gi, &amp;quot;¥&amp;quot;)&lt;br /&gt;
txt = txt.replace (/\&amp;amp;pound;/gi, &amp;quot;£&amp;quot;)&lt;br /&gt;
//======================================&lt;br /&gt;
// Correct year ranges&lt;br /&gt;
txt = txt.replace(/(\(|\s)([12]?\d{3})[\u00A0 ]?(-|--|–|—) ?([12]?\d{3})(\W)/g, &amp;quot;$1$2—$4$5&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([12]?\d{3}) ?(г\.|гг\.)/g, &amp;quot;$1\u00A0$2&amp;quot;)&lt;br /&gt;
// Correct century ranges&lt;br /&gt;
txt = txt.replace(/(\(|\s)([IVX]{1,5})[\u00A0 ]?(-|--|–|—) ?([IVX]{1,5})(\W)/g, &amp;quot;$1$2—$4$5&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([IVX]{1,5}) ?(в\.|вв\.)/g, &amp;quot;$1\u00A0$2&amp;quot;)&lt;br /&gt;
// Correct the reductions&lt;br /&gt;
txt = txt.replace(/(Т|т)\. ?е\./g, &amp;quot;$1о есть&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(Т|т)\. ?к\./g, &amp;quot;$1ак как&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(В|в) т\. ?ч\./g, &amp;quot;$1 том числе&amp;quot;)&lt;br /&gt;
txt = txt.replace(/и т\. ?д\./g, &amp;quot;и\u00A0т\.\u00A0д\.&amp;quot;)&lt;br /&gt;
txt = txt.replace(/и т\. ?п\./g, &amp;quot;и\u00A0т\.\u00A0п\.&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(Т|т)\. ?н\./g, &amp;quot;$1\.\u00A0н\.&amp;quot;)&lt;br /&gt;
txt = txt.replace(/н\. ?э\./g, &amp;quot;н\.\u00A0э\.&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(Д|д)(о|\.) н\. ?э\./g, &amp;quot;$1о\u00A0н\.\u00A0э\.&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\d) (тыс)([^\.А-Яа-яЁё])/g, &amp;quot;$1\u00A0$2.$3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\d) (млн|млрд|трлн)([^А-Яа-яЁё])/g, &amp;quot;$1\u00A0$2$3&amp;quot;)&lt;br /&gt;
// Insert missing and delete unnecessary spaces&lt;br /&gt;
txt = txt.replace(/([А-Я]\.) ?([А-Я]\.) ?([А-Я][а-я])/g, &amp;quot;$1\u00A0$2\u00A0$3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([А-Я]\.)([А-Я]\.)/g, &amp;quot;$1 $2&amp;quot;)&lt;br /&gt;
txt = txt.replace(/^([#\*:]+)([ \t\f\v]*)([^ \t\f\v\*#:])/gm, &amp;quot;$1 $3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([а-я])(\.)([А-ЯA-Z])/g, &amp;quot;$1$2 $3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([а-яa-z\)\»\“\&amp;quot;\]])(\s*)(\,)([а-яa-z\(\«\„\&amp;quot;\[])/g, &amp;quot;$1$3 $4&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([а-яa-z\)\»\“\&amp;quot;\]])(\s)([\,\;])(\s)([а-яa-z\(\«\„\&amp;quot;\[])/g, &amp;quot;$1$3 $5&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([^%\/\w]\d+?(?:[.,]\d+?)?) ?([%‰])(?!-[А-Яа-яЁё])/g, &amp;quot;$1\u00A0$2&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\d) ([%‰])(?=-[А-Яа-яЁё])/g, &amp;quot;$1$2&amp;quot;)&lt;br /&gt;
txt = txt.replace(/([№§])(\s*)(\d)/g, &amp;quot;$1\u00A0$3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(^|[^ \t])([ \t]+)($|\n)/gm, &amp;quot;$1$3&amp;quot;)&lt;br /&gt;
txt = txt.replace(/(\()( +)/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
txt = txt.replace(/( +)(\))/g, &amp;quot;$2&amp;quot;);&lt;br /&gt;
//======================================&lt;br /&gt;
// Avoid double spaces&lt;br /&gt;
txt = txt.substr (1, txt.length-1);&lt;br /&gt;
txt = txt.replace(/(\S)([ \t]{2,})([\S\r])/g, &amp;quot;$1 $3&amp;quot;)&lt;br /&gt;
txt = &amp;quot; &amp;quot; + txt&lt;br /&gt;
//======================================&lt;br /&gt;
// Replace double quotes (&amp;quot;&amp;quot;)  with double angle quotes («»)&lt;br /&gt;
txt = txt.replace(/([\x01-(\s\|\&amp;quot;]|\/|\+)(\&amp;quot;)([^\&amp;quot;]{0,})([^\s\&amp;quot;(])(\&amp;quot;)/g, &amp;quot;$1«\$3\$4»&amp;quot;)&lt;br /&gt;
// Quotations in quotes&lt;br /&gt;
if (/&amp;quot;/.test(txt))&lt;br /&gt;
{&lt;br /&gt;
  txt = txt.replace(/([\x01(\s\&amp;quot;])(\&amp;quot;)([^\&amp;quot;]{0,})([^\s\&amp;quot;(])(\&amp;quot;)/g, &amp;quot;\$1«\$3\$4»&amp;quot;)&lt;br /&gt;
  while (/(«)([^»]*)(«)/.test(txt))&lt;br /&gt;
    txt = txt.replace(/(«)([^»]*)(«)([^»]*)(»)/g, &amp;quot;\$1\$2„\$4“&amp;quot;)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;/pre&amp;gt; */&lt;/div&gt;</summary>
		<author><name>Maximaximax</name></author>
	</entry>
</feed>