Модул:Biology
Зоҳир
Ин модул ҳуҷҷатгузории кофӣ надорад.
Вы можете помочь проекту, создав описание модуля: что он делает, как его использовать, какие параметры он принимает, в какие категории добавляет. Это поможет другим использовать его. P.S. Также не забываем про категорию и интервики. P.P.S. Некоторые советы по оформлению есть на странице проекта «Документирование шаблонов». |
--[[Функции, связанные с таксономией и всем таким прочим, что растёт и ползает]]
local TaxInfo={'parent','latin','name','rang','m','aut','ref'}
local function ParseTT(tt)-- Обрабатывает шаблон таксона без вызова парсера, tt — объект mw.title
local t,r=tt:getContent(),{}
for _,v in ipairs(TaxInfo) do r[v] = t:match('|%s*'..v..'%s*=%s*([^|]-)%s*[|}]') end
return r
end
local function Rang(r)-- ≈ Шаблон:Rang
return ("|Надцарство|Домен|Царство|Тип|Отдел|Класс|Отряд|Порядок|Семейство|Род|Вид|"):find('|'..r..'|',1,1) and 1
or string.find([[|Подцарство|Раздел|Подраздел|Надтип|Надотдел|Подтип|Инфратип|Подотдел|
|Надкласс|Подкласс|Инфракласс|Надотряд|Надпорядок|Подотряд|Подпорядок|Инфраотряд|
|Надсемейство|Подсемейство|Надтриба|Триба|Подтриба|
|Подрод|Надсекция|Секция|Подсекция|Ряд|Подряд|Подвид|
|Вариетет|Разновидность|Подразновидность|Форма|Подформа|]],'|'..r..'|',1,1) and ''
or r~='' and '?' or nil
end
local function taxtable(f)--человеческая версия Шаблон:TaxRecursion и его окружения в Шаблон:Таксо-корт
local res, tf = {}, f.args['u'] and f:getParent() or f;-- с ключом u рассматривает параметры вызвавшего шаблона
local a,hir,nolast,topt=tf.args,nil,1,mw.title.new(a['latin'],'Template');
-- Защиты от зацикливания нет, будет выдавать красную ошибку "время кончилось", но это редко
if not ( topt and topt.exists ) then
topt = mw.title.new(a['parent'],'Template')
if topt and topt.exists then nolast=nil else
return '<div style="background-color:Gainsboro;font-size:85%;color:Dimgray">СООБЩЕНИЕ ОБ ОШИБКЕ<br />'..
( (a['parent'] or a['latin']) and string.format(
[=[Нет [[Шаблон:Таксон/doc#Таксономические шаблоны|таксономического шаблона]] '''{{tl|%s }}''', который должен описывать положение [[таксон]]а ''[[%s]]'' в [[Биологическая классификация#Наименование и описание таксонов|биологической классификации]].]=],
a['parent'] or a['latin'], a['parent'] or a['latin'])
or "<br />Параметры '''<big>latin</big>''' и '''<big>parent</big>''' пусты."
)..( (mw.title.getCurrentTitle().namespace==0) and '</div>[[Category:Википедия:Мақолаҳои биологии бетаксошаблон]]' or '</div>' )
end
end-- выбор верхнего таксошаблона topt
--TaxRecursion + FirstRang
local parent, q = nolast and a.latin or a.parent
while parent ~= 'Null' do
q = ParseTT(topt)
table.insert(res,1,f:expandTemplate{title='TaxString',args=q})
parent = q.parent
if Rang(q.rang)~='' then hir=1 end
topt = mw.title.new(parent,'Template')
end
return ( hir and
'<div class="NavHead" style="background-color: transparent; border:0"><small>табақаҳои мобайнӣ</small></div>\n'
or '' ) .. f:expandTemplate{title=nolast and 'LastRang' or 'TaxString', args=a} .. table.concat(res,"\n")
end
return { TaxInfo=TaxInfo, ParseTT=ParseTT, Rang=Rang,
taxtable=taxtable }