<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikitext</id>
	<title>Модуль:Wikitext - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikitext"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikitext&amp;action=history"/>
	<updated>2026-06-19T10:20:31Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikitext&amp;diff=279&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «--[[ Служебные функции для конверсии викитекста  Синтаксис: функция со строчной буквы - дл...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikitext&amp;diff=279&amp;oldid=prev"/>
		<updated>2021-04-25T01:52:06Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «--[[ Служебные функции для конверсии викитекста  Синтаксис: функция со строчной буквы - дл...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
Служебные функции для конверсии викитекста&lt;br /&gt;
&lt;br /&gt;
Синтаксис: функция со строчной буквы - для {{#invoke:wikitext|fun|...}},&lt;br /&gt;
с заглавной - для require(wikitext).Fun()&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
specns={file='file',image='file',category='cat',&lt;br /&gt;
    ['к']='cat',['категория']='cat',['файл']='file',['изображение']='file'}&lt;br /&gt;
&lt;br /&gt;
linkprefs=&amp;quot;http:// gopher:// https:// mailto: news:// ftp:// irc:// //&amp;quot;&lt;br /&gt;
&lt;br /&gt;
local function Delink(text,repl,cat,file,href,colon)&lt;br /&gt;
    return ( --удаление вики-ссылок&lt;br /&gt;
        mw.ustring.gsub(text, &amp;quot;%[%[(%s*([^|%]]+)%s*)|?(.-)%]%](%a*)&amp;quot;, function(a,l,c,e)&lt;br /&gt;
        l = l:gsub(&amp;quot;%s+&amp;quot;,&amp;quot; &amp;quot;);&lt;br /&gt;
        if specns[mw.ustring.lower(l):match(&amp;quot;^(.*):&amp;quot;)] then&lt;br /&gt;
            -- ссылка на специальное п. и.&lt;br /&gt;
            if specns[mw.ustring.lower(l):match(&amp;quot;^(.*):&amp;quot;)]=='cat' then--категория&lt;br /&gt;
                if cat then -- строчка замены, %1=catname, %2=key, %3=mode, %%=&amp;quot;%&amp;quot;&lt;br /&gt;
                    return table.concat{ l:gsub(&amp;quot;^.-:%s*&amp;quot;,''), '|', c }:gsub( &amp;quot;^(.-)|([^|]*)|?(.-)$&amp;quot;, cat ) .. e&lt;br /&gt;
                else &lt;br /&gt;
                    return e -- удалять по умолчанию все категории&lt;br /&gt;
                end&lt;br /&gt;
            else--файл. Fixme:пока все поля описания файла не выдаются шаблонам&lt;br /&gt;
                if  file then -- строка замены, %1=filename, %2=parameters, %%=&amp;quot;%&amp;quot;&lt;br /&gt;
                    return table.concat{ l:gsub(&amp;quot;^.-:%s*&amp;quot;,''), '|', c }:gsub( &amp;quot;^(.-)|(.*)&amp;quot;, file ) .. e&lt;br /&gt;
                else return e -- вырезать фалы&lt;br /&gt;
                end&lt;br /&gt;
            end--if(файл или категория)&lt;br /&gt;
        end--if(спец. пространства)&lt;br /&gt;
        l=string.gsub(l,&amp;quot;^: *&amp;quot;, colon or &amp;quot;%1&amp;quot;);-- замена начального &amp;quot;:&amp;quot;&lt;br /&gt;
        if repl then&lt;br /&gt;
            return mw.ustring.gsub(l..'|'..(c=='' and a..e or c..e),&amp;quot;^(.-)|(.*)$&amp;quot;,repl)&lt;br /&gt;
        else&lt;br /&gt;
            if c=='' then return a..e else return c..e end-- вырезаем &lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
):gsub(&lt;br /&gt;
    &amp;quot;(%[([%a%._\/~%%%-%+&amp;amp;#%?!=%(%)@]+)%s*(.-)%])&amp;quot;, function(a,r,t)&lt;br /&gt;
        --вырезатор внешних ссылок&lt;br /&gt;
        local p,i=r:match('^(%a*:?//)(.*)')&lt;br /&gt;
        if not p then p,i=r:match('^(mailto:)(.*)') end&lt;br /&gt;
        if p then-- Это URL&lt;br /&gt;
            if href then&lt;br /&gt;
                return (p..' '..i..' '..t):gsub(&amp;quot;^(.-) (.-) (.*)$&amp;quot;,href) &lt;br /&gt;
            else&lt;br /&gt;
                return t&lt;br /&gt;
            end&lt;br /&gt;
        else-- Это не URL&lt;br /&gt;
            return a&lt;br /&gt;
        end&lt;br /&gt;
    end--вырезатор&lt;br /&gt;
) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Detag(t)&lt;br /&gt;
    if t == nil or t == '' then&lt;br /&gt;
    	return ''&lt;br /&gt;
    end&lt;br /&gt;
    -- Вырезаем кавычки и &amp;gt; из литералов в тэгах, а потом сами литералы&lt;br /&gt;
    local text,j,i,k=t,0;&lt;br /&gt;
    repeat &lt;br /&gt;
        text,i=text:gsub('(&amp;lt;/?%a[^&amp;gt;&amp;quot;\']*&amp;quot;)[^&amp;quot;]*\\[&amp;quot;\\]',&amp;quot;%1&amp;quot;);--первая \&amp;quot;, \\ из 1-го литерала&lt;br /&gt;
        text,k=text:gsub(&amp;quot;(&amp;lt;/?%a[^&amp;gt;\&amp;quot;']*')[^']*\\['\\]&amp;quot;,&amp;quot;%1&amp;quot;);--первая \', \\ из 1-го литерала&lt;br /&gt;
        if i+k==0 then--1-й литерал очищен&lt;br /&gt;
            text,j=text:gsub(&amp;quot;(&amp;lt;/?%a[^&amp;gt;]*)(['\&amp;quot;]).-%2&amp;quot;,&amp;quot;%1&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
    until i+j+k==0&lt;br /&gt;
-- и вырезать тэги, а также ''курсив'' и '''жирный'''&lt;br /&gt;
    return (text:gsub(&amp;quot;'''?&amp;quot;,&amp;quot;&amp;quot;):gsub('&amp;lt;/?%a[^&amp;gt;]*&amp;gt;',''))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function Nodis(t) -- Убирает уточнения в скобках&lt;br /&gt;
    return (t:gsub('%s*%([^%)]+%)$',''))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
delink=function(f) -- Удаляет ссылки из викитекста&lt;br /&gt;
    local tf=f:getParent()&lt;br /&gt;
    return Delink(&lt;br /&gt;
        f.args[1] or tf.args[1],&lt;br /&gt;
        f.args['repl'] or tf.args['repl'],&lt;br /&gt;
        f.args['cat'] or tf.args['cat'],&lt;br /&gt;
        f.args['file'] or tf.args['file'],&lt;br /&gt;
        f.args['href'] or tf.args['href'],&lt;br /&gt;
        f.args[':'] or tf.args[':']&lt;br /&gt;
        )&lt;br /&gt;
end; Delink=Delink;&lt;br /&gt;
&lt;br /&gt;
detag=function(f)&lt;br /&gt;
    return Detag(f.args[1] or f:getParent().args[1])&lt;br /&gt;
end; Detag=Detag;&lt;br /&gt;
&lt;br /&gt;
plain=function(f)&lt;br /&gt;
    local tf=f:getParent()&lt;br /&gt;
    return Detag(Delink(&lt;br /&gt;
        f.args[1] or tf.args[1],&lt;br /&gt;
        f.args['repl'] or tf.args['repl'],&lt;br /&gt;
        f.args['cat'] or tf.args['cat'],&lt;br /&gt;
        f.args['file'] or tf.args['file'],&lt;br /&gt;
        f.args['href'] or tf.args['href'],&lt;br /&gt;
        f.args[':'] or tf.args[':']&lt;br /&gt;
        ));&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
nodis=function(f)&lt;br /&gt;
    return Nodis(f.args[1] or f:getParent().args[1])&lt;br /&gt;
end;Nodis=Nodis&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>