<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATaxonomy%2Fclassification</id>
	<title>Модуль:Taxonomy/classification - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://vion.tail5ecd76.ts.net/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ATaxonomy%2Fclassification"/>
	<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Taxonomy/classification&amp;action=history"/>
	<updated>2026-11-08T07:56:59Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Taxonomy/classification&amp;diff=7324&amp;oldid=prev</id>
		<title>wp&gt;ru.wikipedia: Импорт из русской Википедии, версия 145276236</title>
		<link rel="alternate" type="text/html" href="https://vion.tail5ecd76.ts.net/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Taxonomy/classification&amp;diff=7324&amp;oldid=prev"/>
		<updated>2025-05-23T13:35:12Z</updated>

		<summary type="html">&lt;p&gt;Импорт из русской Википедии, версия 145276236&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local Taxonomy_latin = require(&amp;quot;Module:Taxonomy/latin&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local Rangs = { --классификация рангов&lt;br /&gt;
    Osn = &amp;quot;/Домен/Реалм/Царство/Тип/Отдел/Класс/Отряд/Порядок/Семейство/Род/Вид/Ихнород/Ихновид/&amp;quot;, --основные&lt;br /&gt;
    Prom = &amp;quot;/Субреалм/Подцарство/Надтип/Надотдел/Подтип/Подотдел/Инфратип/Надкласс/Подкласс/Инфракласс/Надотряд/Надпорядок/Подотряд/Подпорядок/Инфраотряд/Надсемейство/Подсемейство/Надтриба/Триба/Подтриба/Раздел/Подраздел/Подрод/Надсекция/Секция/Подсекция/Ряд/Подряд/Комплекс видов/Подвид/Вариетет/Разновидность/Подразновидность/Форма/Подформа/Наддомен/&amp;quot;, --промежуточные&lt;br /&gt;
    Bez = &amp;quot;/Группа/Клада/Без ранга/&amp;quot;,&lt;br /&gt;
    Ich = &amp;quot;/Ихнород/Ихновид/&amp;quot;, --ихнотаксоны&lt;br /&gt;
    Err = &amp;quot;&amp;#039;&amp;#039;&amp;#039;???&amp;#039;&amp;#039;&amp;#039;&amp;quot;, --в случае, если ранг не заполнен&lt;br /&gt;
    Spec = &amp;quot;/Вид/Подвид/Вариетет/Разновидность/Подразновидность/Форма/Подформа/Ихновид/Штамм/Биовар/Биотип/Серовар/Серотип/Изолят/&amp;quot; --вид и ниже&lt;br /&gt;
}&lt;br /&gt;
local RangColors = {Osn = &amp;quot;inherit&amp;quot;, Prom = &amp;quot;#007878&amp;quot;, Dop = &amp;quot;DarkRed&amp;quot;, Bez = &amp;quot;#6F6F00&amp;quot;, Ich = &amp;quot;DarkViolet&amp;quot;, Err = &amp;quot;Red&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
local regnum&lt;br /&gt;
&lt;br /&gt;
local function RangClass(rang) -- класс mw-collapsible-content для сворачивания всех неосновных рангов&lt;br /&gt;
    return (string.find(Rangs.Osn, &amp;quot;/&amp;quot; .. rang .. &amp;quot;/&amp;quot;, 1, true) or (rang == Rangs.Err)) and &amp;quot;&amp;quot; or &amp;quot; mw-collapsible-content&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function RangColor(rang) -- эта функция возвращает цвет ранга (то же, что шаблон Rang/color)&lt;br /&gt;
    local srang = &amp;quot;/&amp;quot; .. rang .. &amp;quot;/&amp;quot;&lt;br /&gt;
    return (string.find(Rangs.Ich, srang, 1, true) and RangColors.Ich)&lt;br /&gt;
            or (string.find(Rangs.Osn, srang, 1, true) and RangColors.Osn)&lt;br /&gt;
            or (string.find(Rangs.Prom, srang, 1, true) and RangColors.Prom)&lt;br /&gt;
            or (string.find(Rangs.Bez, srang, 1, true) and RangColors.Bez)&lt;br /&gt;
            or ((rang == Rangs.Err) and RangColors.Err)&lt;br /&gt;
            or RangColors.Dop&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function NameString(args, last) -- форматирует название таксона&lt;br /&gt;
    local latlink = string.gsub(args.latin, &amp;quot; *|.*&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
    local latname = string.gsub(args.latin, &amp;quot;.*| *&amp;quot;, &amp;quot;&amp;quot;, 1)&lt;br /&gt;
    latname = Taxonomy_latin.latin { args = {latname, rang = args.rang, regnum = regnum}}&lt;br /&gt;
    local name = (args.name ~= &amp;quot;&amp;quot;) and args.name or latname&lt;br /&gt;
&lt;br /&gt;
    if last then&lt;br /&gt;
        return &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. name .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    elseif (args.monoaut == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return &amp;quot;[[&amp;quot; .. latlink .. &amp;quot;|&amp;quot; .. name .. &amp;quot;]]&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        local aut = (args.monoaut == &amp;quot;1&amp;quot;) and &amp;quot;&amp;quot; or &amp;quot; &amp;quot; .. Taxonomy_latin.author {args = {args.monoaut}}&lt;br /&gt;
        if args.name == &amp;quot;&amp;quot; then&lt;br /&gt;
            return &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. name .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. aut&lt;br /&gt;
        else&lt;br /&gt;
            return &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. name .. &amp;quot;&amp;#039;&amp;#039;&amp;#039;&amp;quot; .. &amp;quot; (&amp;quot; .. latname .. aut .. &amp;quot;)&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function TaxString(args, last) -- форматирует строку классификации вида &amp;quot;Ранг: Таксон&amp;quot; (то же что шаблон TaxString)&lt;br /&gt;
	args.rang = mw.ustring.gsub(args.rang, &amp;quot;.&amp;quot;, mw.ustring.upper, 1) -- на всякий случай первую букву делаем прописной&lt;br /&gt;
	local rang = (args.rang ~= &amp;quot;&amp;quot;) and args.rang or Rangs.Err&lt;br /&gt;
&lt;br /&gt;
	return &amp;quot;&amp;lt;div class=&amp;#039;ts-Taxonomy-rang-row&amp;quot; .. ((last or args.vis == &amp;quot;1&amp;quot;) and &amp;quot;&amp;quot; or RangClass(rang)) .. &amp;quot;&amp;#039;&amp;gt;&amp;quot; ..&lt;br /&gt;
	        &amp;quot;&amp;lt;div class=&amp;#039;ts-Taxonomy-rang-label&amp;#039; style=&amp;#039;color:&amp;quot; .. RangColor(rang) .. &amp;quot;&amp;#039;&amp;gt;&amp;quot; .. rang .. &amp;quot;:&amp;lt;/div&amp;gt;&amp;quot; ..&lt;br /&gt;
	        &amp;quot;&amp;lt;div class=&amp;#039;ts-Taxonomy-rang-name&amp;#039;&amp;gt;&amp;quot; ..&lt;br /&gt;
	            ((args.ext ~= &amp;quot;&amp;quot;) and &amp;quot;†&amp;amp;nbsp;&amp;quot; or &amp;quot;&amp;quot;) ..&lt;br /&gt;
	            NameString(args, last) ..&lt;br /&gt;
	            (args.ref or &amp;quot;&amp;quot;) ..&lt;br /&gt;
	        &amp;quot;&amp;lt;/div&amp;gt;&amp;quot; ..&lt;br /&gt;
	    &amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function NoTaxTempl(taxon)&lt;br /&gt;
return &amp;#039;нет [[Шаблон:Таксон#Система таксономической навигации|таксономического шаблона]] &amp;#039; ..&lt;br /&gt;
    mw.getCurrentFrame():expandTemplate({title = &amp;#039;RedTaxLink&amp;#039;, args = {taxon}})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ErrorText(text)&lt;br /&gt;
return &amp;#039;&amp;lt;div class=&amp;quot;ts-Taxonomy-error&amp;quot;&amp;gt;ОШИБКА: &amp;#039; .. text .. &amp;#039;&amp;lt;/div&amp;gt;\n&amp;#039; ..&lt;br /&gt;
    ((mw.title.getCurrentTitle().namespace == 0) and &amp;quot;[[Категория:Википедия:Биологические статьи без таксошаблона]]&amp;quot; or &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function FormatOutput(text, ok)&lt;br /&gt;
local collapse = ok and string.find(text, &amp;quot;mw-collapsible&amp;quot;, 1, true)&lt;br /&gt;
return &amp;#039;&amp;lt;div &amp;#039; .. (collapse and &amp;#039;data-expandtext=&amp;quot;подробно&amp;quot; data-collapsetext=&amp;quot;кратко&amp;quot; class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; &amp;#039; or &amp;#039;&amp;#039;) .. &amp;#039;style=&amp;quot;font-size:95%; background-color: transparent; color: inherit; border:0;&amp;quot;&amp;gt;&amp;#039; .. text .. &amp;#039;&amp;lt;/div&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTaxPar(frame, taxon, parName)&lt;br /&gt;
    return mw.text.trim(frame:expandTemplate({title = taxon, args = {parName}}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.TaxRecursion(frame)&lt;br /&gt;
    local i = 0&lt;br /&gt;
    local args = {}&lt;br /&gt;
    local res = &amp;quot;&amp;quot;&lt;br /&gt;
    local taxon = frame.args[&amp;quot;latin&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    regnum = frame.args[&amp;quot;regnum&amp;quot;]&lt;br /&gt;
    regnum = (regnum == &amp;quot;Организмы&amp;quot;) and &amp;quot;&amp;quot; or regnum&lt;br /&gt;
	local regnumRang = ((regnum == &amp;quot;Бактерии&amp;quot;) or (regnum == &amp;quot;Археи&amp;quot;) or (regnum == &amp;quot;Вирусы&amp;quot;)) and &amp;quot;Домен&amp;quot; or &amp;quot;Царство&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if (taxon == &amp;quot;&amp;quot;) then&lt;br /&gt;
        return ErrorText(&amp;quot;не заполнен параметр &amp;#039;&amp;#039;&amp;#039;&amp;lt;big&amp;gt;latin&amp;lt;/big&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local ok, parent&lt;br /&gt;
    local lastTemplate = mw.title.new(&amp;quot;Шаблон:&amp;quot; .. taxon)&lt;br /&gt;
    if lastTemplate and lastTemplate.exists then&lt;br /&gt;
        ok, parent = pcall(getTaxPar, frame, taxon, &amp;quot;parent&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if ok then -- есть шаблон {{{latin}}}, берём оттуда&lt;br /&gt;
        args = { latin = getTaxPar(frame, taxon, &amp;quot;latin&amp;quot;),&lt;br /&gt;
                  rang = getTaxPar(frame, taxon, &amp;quot;rang&amp;quot;),                 &lt;br /&gt;
                   ext = getTaxPar(frame, taxon, &amp;quot;ext&amp;quot;),&lt;br /&gt;
                  name = getTaxPar(frame, taxon, &amp;quot;name&amp;quot;),&lt;br /&gt;
               }&lt;br /&gt;
    else -- нет шаблона {{{latin}}}, берём из параметров&lt;br /&gt;
        parent = frame.args[&amp;quot;parent&amp;quot;] or &amp;quot;&amp;quot;&lt;br /&gt;
        args = { latin = frame.args[&amp;quot;latin&amp;quot;],&lt;br /&gt;
                  rang = frame.args[&amp;quot;rang&amp;quot;] or &amp;quot;&amp;quot;,&lt;br /&gt;
                   ext = frame.args[&amp;quot;Вымер&amp;quot;] or &amp;quot;&amp;quot;,&lt;br /&gt;
                  name = frame.args[&amp;quot;name&amp;quot;] or &amp;quot;&amp;quot;,&lt;br /&gt;
               }&lt;br /&gt;
        if (parent == &amp;quot;&amp;quot;) then&lt;br /&gt;
            if ((args.rang == &amp;quot;&amp;quot;) or string.find(Rangs.Spec, &amp;quot;/&amp;quot; .. args.rang .. &amp;quot;/&amp;quot;, 1, true)) then&lt;br /&gt;
                res = ErrorText(&amp;quot;необходимо заполнить параметры &amp;#039;&amp;#039;&amp;#039;&amp;lt;big&amp;gt;parent&amp;lt;/big&amp;gt;&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;&amp;lt;big&amp;gt;rang&amp;lt;/big&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&amp;quot;)&lt;br /&gt;
            else&lt;br /&gt;
                res = ErrorText(NoTaxTempl(taxon) .. &amp;quot;. Заполните параметры &amp;#039;&amp;#039;&amp;#039;&amp;lt;big&amp;gt;parent&amp;lt;/big&amp;gt;&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;&amp;lt;big&amp;gt;rang&amp;lt;/big&amp;gt;&amp;#039;&amp;#039;&amp;#039;.&amp;quot;)&lt;br /&gt;
            end&lt;br /&gt;
            return FormatOutput(res .. TaxString(args, &amp;quot;last&amp;quot;), false)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    res = TaxString(args, &amp;quot;last&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local taxlist = {}&lt;br /&gt;
    while (parent ~= &amp;quot;Null&amp;quot;) and (i &amp;lt; 100) do&lt;br /&gt;
        i = i + 1&lt;br /&gt;
        taxon = parent&lt;br /&gt;
        taxlist[taxon] = true&lt;br /&gt;
        ok, parent = pcall(getTaxPar, frame, taxon, &amp;quot;parent&amp;quot;)&lt;br /&gt;
        if not ok then -- error: no template&lt;br /&gt;
            res = ErrorText(NoTaxTempl(taxon) .. &amp;quot;, который должен описывать систематическое положение таксона &amp;#039;&amp;#039;[[&amp;quot; .. taxon .. &amp;quot;]]&amp;#039;&amp;#039;.&amp;quot;) .. res&lt;br /&gt;
            return FormatOutput(res, false)&lt;br /&gt;
        end&lt;br /&gt;
        if taxlist[parent] then -- error: loop&lt;br /&gt;
            res = ErrorText(&amp;quot;обнаружена петля — [[Шаблон:Таксон#Система таксономической навигации|таксономический шаблон]] {{[[Шаблон:&amp;quot; .. taxon .. &amp;quot;|&amp;quot; .. taxon .. &amp;quot;]]}} ссылается на свой подчинённый таксон.&amp;quot;) .. res&lt;br /&gt;
            return FormatOutput(res, false)&lt;br /&gt;
        end&lt;br /&gt;
        args = {   latin = getTaxPar(frame, taxon, &amp;quot;latin&amp;quot;),&lt;br /&gt;
                    rang = getTaxPar(frame, taxon, &amp;quot;rang&amp;quot;),&lt;br /&gt;
                     ext = getTaxPar(frame, taxon, &amp;quot;ext&amp;quot;),&lt;br /&gt;
                    name = getTaxPar(frame, taxon, &amp;quot;name&amp;quot;),&lt;br /&gt;
                 monoaut = getTaxPar(frame, taxon, &amp;quot;monoaut&amp;quot;),&lt;br /&gt;
                     ref = getTaxPar(frame, taxon, &amp;quot;ref&amp;quot;),&lt;br /&gt;
                     vis = getTaxPar(frame, taxon, &amp;quot;vis&amp;quot;)&lt;br /&gt;
               }&lt;br /&gt;
        args.ref = (args.ref ~= &amp;quot;&amp;quot;) and frame:extensionTag {name = &amp;quot;ref&amp;quot;, content = args.ref}&lt;br /&gt;
        if (args.rang == regnumRang) and (args.name ~= regnum) then&lt;br /&gt;
                res = res .. &amp;quot;[[Категория:Википедия:Биологические статьи с неправильным царством в карточке]]&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        res = TaxString(args) .. res&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return FormatOutput(res, ok)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;ru.wikipedia</name></author>
	</entry>
</feed>