Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]
Таксонбар ( редактировать ссылки истории разговоров # / subpages / doc / doc edit / sbox / sbox diff / test )
Этот модуль Lua используется примерно на 419 000 страниц, или примерно на 1% всех страниц. Чтобы избежать серьезных сбоев и нагрузки на сервер, любые изменения следует тестировать на подстраницах модуля / sandbox или / testcases , или в изолированной программной среде вашего собственного модуля . Протестированные изменения могут быть добавлены на эту страницу одним редактированием. Обсудите изменения на странице обсуждения, прежде чем внедрять их. |
Этот модуль подлежит защите страницы . Это хорошо заметный модуль, который используется на очень большом количестве страниц или очень часто заменяется . Поскольку вандализм или ошибки могут повлиять на многие страницы, и даже простое редактирование может вызвать значительную нагрузку на серверы, они защищены от редактирования. |
Этот модуль использует одно или несколько свойств Викиданных ; подробности см. в § Идентификаторы таксона . |
Этот модуль зависит от следующих других модулей:
|
Связанные страницы |
---|
|
Этот модуль содержит код {{ Taxonbar }}. Чтобы использовать Taxonbar, следуйте инструкциям в Template: Taxonbar / doc .
Конфигурация
Параметры и базы данных устанавливаются модулем: Taxonbar / conf .
Идентификаторы таксона
Тестовые наборы
Для тестовых случаев используйте: {{Taxonbar | from=QID}}
Рододендрон максимальный
Asclepias syriaca
Персик ( Prunus persica )
Пума (род)
Собака ( Canis lupus familis )
Синяя птица восточная ( Sialia sialis )
Медоносная пчела ( Apis )
Западная медоносная пчела ( Apis mellifera )
Клипер бабочка ( Parthenos sylvia )
Хвост индейки ( Trametes versicolor )
Шампиньон / гриб портобелло ( Agaricus bisporus )
Редактирование модуля - список дел
Смотрите также
- Модуль: Taxonbar / conf - модуль конфигурации для добавления / удаления / редактирования источников
- {{ Taxonbar / exists }} - тесты на существование {{ Taxonbar }}
- {{ Taxonbar / кандидата }} - классифицируйте наиболее вероятных и потенциально вероятных кандидатов {{ Taxonbar }}
- Модуль: Авторитетный контроль - подобный {{ Taxonbar }} модуль для уникальных предметов
- gl: Módulo: Taxonbar - исходный код этого модуля
require ( 'Модуль: без глобальных переменных' )локальные конф = требуется ( 'Module: Taxonbar / CONF' ) --configuration модульlocal TaxonItalics = require ( 'Module: TaxonItalics' ) - используйте функцию из Module: TaxonItalics, чтобы выделить имя таксона курсивом- [[============================================== ============================]]- [[Локальные функции]]- [[============================================== ============================]]локальная функция isNilOrEmpty ( вещь )если вещь == ноль или вещь == '' тогдавернуть истинуконецвернуть нольконецлокальная функция getIdFromWikidata ( элемент , свойство )локальный идентификатор = нольесли свойство == 'PWikispecies: $ 1', тоlocal siteLinks = item . дополнительные ссылкиесли siteLinks тогдаместные виды Wiki = item . дополнительные ссылки . видыесли разновидностиWiki, тоid = viewsWiki . заглавиеконецконецвернуть идентификаторelseif элемент . заявки [ свойство ] == ноль, тогдавернуть идентификаторконецfor _ , инструкция в парах ( элемент . претензии [ свойство ] ) doесли заявление . mainsnak . DataValue затемid = инструкция . mainsnak . значение данных . значениеперерывконецконецвернуть идентификаторконецлокальная функция getLink ( свойство , val )локальная ссылка , returnVal = '' , {}returnVal . isError = falseесли мв . ustring . find ( val , '//' ) тогдаlink = valещеесли type ( property ) == 'number' и property > 0, толокальный entityObject = mw . викибаза . GetEntity ( 'P' .. свойство )локальный тип данныхесли entityObject, то dataType = entityObject . тип данныхиначе returnVal . isError = истинный конецесли dataType == 'external-id', тоlocal formatterURL = nilесли свойство == 3746 или - Полевые цветы Израиля property == 3795 или - Флора Израиля Интернет property == 5397 --TierstimmenarchivтогдаformatterURL = EntityObject : getBestStatements ( 'P1630' ) [ 2 ] --use второй formatterURL для английской версииконецесли formatterURL == ноль , то formatterURL = EntityObject : getBestStatements ( 'P1630' ) [ 1 ] конец --default [1]если formatterURL, тоесли formatterURL . mainsnak . DataValue и formatterURL . mainsnak . значение данных . значение, затем --nil проверить ABAссылка = formatterURL . mainsnak . значение данных . значениеконецконецelseif dataType == 'url' тогдаlocal subjectItem = entityObject : getBestStatements ( 'P1629' ) [ 1 ]если subjectItem томестный официальный сайт = mw . викибаза . getEntity ( subjectItem . mainsnak . datvalue . value . id ): getBestStatements ( 'P856' ) [ 1 ]если официальный сайт, то ссылка = официальный сайт . mainsnak . значение данных . значение конецконецelseif dataType == 'строка' тогдалокальная formatterURL = EntityObject : getBestStatements ( 'P1630' ) [ 1 ]если formatterURL, тоссылка = formatterURL . mainsnak . значение данных . значениеещеlocal subjectItem = entityObject : getBestStatements ( 'P1629' ) [ 1 ]если subjectItem томестный официальный сайт = mw . викибаза . getEntity ( subjectItem . mainsnak . datvalue . value . id ): getBestStatements ( 'P856' ) [ 1 ]если официальный сайт, то ссылка = официальный сайт . mainsnak . значение данных . значение конецконецконецещеreturnVal . isError = trueконецelseif type ( свойство ) == 'строка' тогдассылка = свойствоконецместный valurl = valесли мв . ustring . find ( ссылка , 'antweb.org' ), затем valurl = mw . ustring . gsub ( valurl , '' , '%% 20' ) конецесли type ( property ) == 'number', то--doublecheck language for Wildflowers of Israel IDесли свойство == 3746, то ссылка = mw . ustring . gsub ( ссылка , '/ иврит /' , '/ английский /' ) конец- форматировать пробелы в биномах PfaF, например "Elaeagnus x ebbingei"если свойство == 4301, то valurl = mw . ustring . gsub ( valurl , '' , '+' ) конец- форматировать пробелы в биномах FoAO2, например "Scaevola basedowii"если свойство == 6756, то valurl = mw . ustring . gsub ( valurl , '' , '+' ) конецконецvalurl = mw . ustring . gsub ( valurl , '%%' , '%%%%' )ссылка = mw . ustring . gsub ( ссылка , '$ 1' , valurl )конецссылка = mw . ustring . gsub ( link , '^ [Hh] [Tt] [Tt] [Pp] ([Ss]?) & # 58; //' , 'http% 1: //' ) - исправить URL-адрес викиданныхval = mw . ustring . match ( val , '([^ = /] *) /? $' ) - получить отображаемое имя из конца URLесли мв . ustring . find ( ссылка , '//' ) затемreturnVal . text = '[' .. link .. '' .. mw . текст . encode ( mw . uri . decode ( val , 'PATH' ), '% [%]' ) .. ']'elseif link == '' тогдаreturnVal . текст = valещеreturnVal . text = '<span class = "external"> [[' .. link .. '|' .. val .. ']] </span>'конецreturn returnValконецлокальная функция createRow ( id , label , rawValue , link , withUid )если ссылка тоlocal outStr = '* <span style = "white-space: nowrap;">' .. label .. '<span'если withUid, то outStr = outStr .. 'class = "uid"' endreturn outStr .. '>' .. link .. '</span> </span> \ n 'ещеreturn '*' .. mw . текст . tag ( 'span' , { class = 'error' }, 'Идентификатор' .. id .. '' .. rawValue .. 'недействителен.' ) .. ' \ n 'конецконецлокальная функция copyTable ( inTable )если тип ( inTable ) ~ = «Таблица» затем вернуться inTable конецлокальная outTable = setmetatable ({}, GetMetaTable ( inTable ))для ключа , значение в парах ( inTable ) do outTable [ copyTable ( key )] = copyTable ( value ) endвернуться из таблицыконецместный p = {}- [[============================================== ============================]]--[[ Основной ]]- [[============================================== ============================]]функция p . AuthorityControlTaxon ( кадр )local resolveEntity = require ( 'Модуль: ResolveEntityId' )local parentArgs = copyTable ( кадр : getParent (). args )локальный currentTitle = mw . название . getCurrentTitle ()локальный currentEntityId = mw . викибаза . getEntityIdForCurrentPage ()локальный stringArgs = falseлокальный fromTitleCount , firstRow , rowCount = 1 , 0 , 0локальная outString , ошибки = '' , ''local tFroms = {} - непоследовательная таблица уникальных отlocal iFroms = 0 - целочисленный размер tFroms, b / c Luaместные категории = {'[[Категория: Таксонбары без параметра from]]' ,'[[Категория: Таксонбары, десинхронизированные из Викиданных]]' ,'' , - [3] заполнитель для [[Категория: панели таксонов, использующие несколько элементов Викиданных вручную]]'' , - [4] заполнитель для [[Категория: Таксонбары с недопустимыми параметрами from]]'' , - [5] заполнитель для [[Категория: панели таксонов с использованием ручных идентификаторов таксонов]]'' , - [6] заполнитель для [[Категория: страницы таксонбара, требующие элемента Викиданных]]'' , - [7] заполнитель для [[Категория: панели таксонов без основных идентификаторов таксонов Викиданных]]'' , - [8] заполнитель для [[Категория: панели таксонов без вторичных идентификаторов таксонов Викиданных]]'' , - [9] заполнитель для [[Категория: Таксонбары с повторяющимися параметрами]]'' , - [10] заполнитель для [[Категория: панели таксонов с указанными вручную идентификаторами таксонов, отличными от Викиданных]]'' , - [11] заполнитель для [[Категория: панели таксонов с указанными вручную идентификаторами таксонов, идентичными Викиданным]]'' , - [12] заполнитель для [[Категория: панели таксонов на возможных страницах, не относящихся к таксонам]]'' , - [13] заполнитель для [[Категория: Таксонбары с автоматически добавленными базионимами]]'' , - [14] заполнитель для [[Категория: Таксонбары с автоматически добавленными исходными комбинациями]]'' , - [15] заполнитель для [[Категория: Таксонбары с автоматически добавленными монотипными родами]]'' , - [16] заполнитель для [[Категория: Таксономические панели монотипных видов, отсутствующие роды]]'' , - [17] заполнитель для [[Категория: Таксонбары с неизвестными параметрами]]'' , - [18] заполнитель для [[Категория: Таксонбары с 20–24 идентификаторами таксона]]'' , - [19] заполнитель для [[Категория: Таксоны с идентификаторами 25–29 таксонов]]'' , - [20] заполнитель для [[Категория: Таксоны с идентификаторами 30–34 таксонов]]'' , - [21] заполнитель для [[Категория: Таксонбары с идентификаторами 35–39 таксонов]]'' , - [22] заполнитель для [[Категория: Таксоны с идентификаторами более 40 таксонов]]'' , - [23] заполнитель для [[Категория: панели таксонов с совпадающим заголовком статьи from2 и QID]]'' , - [24] заполнитель для [[Категория: Таксонбары с соответствующим заголовком статьи from2]]'' , - [25] заполнитель для [[Категория: панели таксонов с безымянными параметрами]]}local acceptInstanceOf_Strict = { [ 'Q16521' ] = 'taxon' , --strict [ 'Q310890' ] = 'монотипный таксон' , --strict [ 'Q2568288' ] = 'ихнотаксон' , --strict [ 'Q23038290' ] = 'таксон ископаемых' , --strict [ 'Q47487597' ] = 'монотипный таксон ископаемых' , --strict}local acceptInstanceOf_All = { [ 'Q16521' ] = 'taxon' , --strict [ 'Q310890' ] = 'монотипный таксон' , --strict [ 'Q2568288' ] = 'ихнотаксон' , --strict [ 'Q23038290' ] = 'таксон ископаемых' , --strict [ 'Q47487597' ] = 'монотипный таксон ископаемых' , --strict [ 'Q42621' ] = 'гибрид' , --lax [ 'Q235536' ] = 'incertae sedis' , --lax [ 'Q713623' ] = 'clade' , --lax [ 'Q848328' ] = 'серотип' , --lax [ 'Q857968' ] = ' Candidatus ' , --lax [ 'Q17487588' ] = 'недоступная комбинация' , --lax}- Оценить связь страницы с Викиданными.local currentItem = nilесли currentTitle . namespace == 10, затем --ie Module: Taxonbar / sandbox, Template: Taxonbar / doc и т. д.если resolveEntity . _ID ( parentArgs [ 'от' ]) , тоcurrentItem = mw . викибаза . getEntity ( parentArgs [ 'от' ])конецесли currentItem == nil, тоесли resolveEntity . _ID ( parentArgs [ 'from1' ]) затемcurrentItem = mw . викибаза . getEntity ( parentArgs [ 'from1' ])конецконецelseif resolveEntity . _id ( currentEntityId ) , тоcurrentItem = mw . викибаза . getEntity ( currentEntityId )else --currentEntityId == ноль / неразрешимокатегории [ 6 ] = '[[Категория: страницы панели таксонов, требующие элемента Викиданных]]'конецесли currentItem, токатегории [ 12 ] = '[[Категория: Таксонбары на возможных страницах, не относящихся к таксонам]]' - сбрасывается, если найдено приемлемоедля _ , instanceOfState в парах ( CurrentItem : getBestStatements ( 'P31' ) ) делать --instance излокальный instanceOf = instanceOfState . mainsnak . значение данных . значение . я быесли acceptInstanceOf_All [ instanceOf ], токатегории [ 12 ] = ""перерывконецконецконец--Cleanup argsдля k , v в парах ( frame : getParent (). args ) делаемесли type ( k ) == 'string', то- сделать аргументы нечувствительными к региструместный lowerk = mw . ustring . нижний ( k )если isNilOrEmpty ( parentArgs [ lowerk ] ), тоparentArgs [ k ] = нольparentArgs [ lowerk ] = vконец- переназначить abc на abc1если мв . ustring . find ( lowerk , '% d $' ) == nil, затем - если в конце параметра нет числаесли isNilOrEmpty ( parentArgs [ lowerk .. '1' ] ), тоparentArgs [ lowerk ] = нольlowerk = lowerk .. '1'parentArgs [ lowerk ] = vконецконецесли v и v ~ = '', то--remap 'for' на 'title'если мв . ustring . sub ( lowerk , 1 , 3 ) == 'for', затемместный forTitle = mw . ustring . gsub ( lowerk , '^ вместо ' , 'название' , 1 )если isNilOrEmpty ( parentArgs [ forTitle ] ), тоparentArgs [ lowerk ] = нольlowerk = forTitleparentArgs [ lowerk ] = vконецконец- найти наивысший из или параметр заголовкаесли мв . ustring . sub ( lowerk , 1 , 4 ) == 'from', затемместный fromNumber = tonumber ( mw . ustring . sub ( lowerk , 5 , - 1 ))если fromNumber и fromNumber > = fromTitleCount, то fromTitleCount = fromNumber конец- ищите дубликаты, пока мы здесьесли мв . ustring . найти ( v , '^ Q% d' ), затемесли tFroms [ v ], токатегории [ 9 ] = '[[Категория: Таксонбары с повторяющимися параметрами]]'tFroms [ v ] = tFroms [ v ] + 1ещеtFroms [ v ] = 1iFroms = iFroms + 1конецесли iFroms == 2, токатегории [ 3 ] = '[[Категория: Таксонбары, использующие несколько элементов Викиданных, введенных вручную]]'конецконецelseif mw . ustring . sub ( lowerk , 1 , 5 ) == 'title', затемместный titleNumber = tonumber ( mw . ustring . sub ( lowerk , 4 , - 1 ))если titleNumber и titleNumber > = fromTitleCount, то fromTitleCount = titleNumber конецelseif mw . ustring . lower ( v ) ~ = 'no', тогдаstringArgs = trueкатегории [ 5 ] = '[[Категория: таксоны, использующие идентификаторы таксонов, введенные вручную]]'конецконецконецконец--Проверьте неизвестные параметры--создать список известныхместное acceptableArgs = { от = истинно , } --master списка L / C приемлемой аргдля _ , d в парах ( конф . базы данных ) делаемесли d [ 1 ] ~ = 'Wikidata', то - исключено из употребленияacceptArgs [ mw . ustring . lower ( d [ 1 ])] = trueконецконецдля _ , в парах ( конф . псевдонимы ) делать acceptArgs [ mw . ustring . lower ( a [ 1 ])] = trueконец- создать обрезанный список родителейlocal baseParentArgs = {} - сжатый список родительских аргументов l / c без завершающих #для к , V в пар ( parentArgs ) делаютесли type ( k ) == 'string', томестный lowerk = mw . ustring . нижний ( k )местная база = mw . ustring . gsub ( lowerk , '[% d] * $' , '' )baseParentArgs [ base ] = trueelseif type ( k ) == 'number' тогдакатегории [ 25 ] = '[[Категория: Таксонбары с безымянными параметрами |' .. к .. ']]'конецконец- сравнивать списки и выкладывать неизвестные- ТОДО: Исправить ошибку; это обнаруживает только один недопустимый параметр, когда недопустимый- параметры имеют значение.local unknownParams = {}для к , V в паре ( baseParentArgs ) делаетесли acceptArgs [ k ] == nil, токатегории [ 17 ] = '[[Категория: Таксонбары с неизвестными параметрами |' .. к .. ']]'unknownParams [ # unknownParams + 1 ] = kконецконец- предупреждать, если присутствуют неизвестныеесли # unknownParams > 0, томестное множественное число = 's'местные itthem = 'они'если # unknownParams == 1, томножественное число = ''itthem = 'это'конецerrors = errors .. require ( 'Модуль: Если предварительный просмотр' ). _warning ({мв . ustring . формат ('Неизвестный параметр% s <code>% s </code>. Исправьте% s или подумайте о добавлении% s в Викиданные. ' ,множественное число ,table.concat ( unknownParams , '</ код>, <код>' ),itthem ,это)})конец--Добавить базионим в список аргументов, если он еще не указанесли currentItem, толокальная currentBasState = CurrentItem : getBestStatements ( 'P566' ) [ 1 ] --basionymесли currentBasState, толокальный базионимид = currentBasState . mainsnak . значение данных . значение . я быесли basionymId и resolveEntity . _id ( basionymId ) и tFroms [ basionymId ] == nil, тогда--проверьте, что базионим является точным экземпляром таксонаместный базионимItem = mw . викибаза . getEntity ( basionymId )если basionymItem, тодля _ , instanceOfState в парах ( basionymItem : getBestStatements ( 'P31' ) ) do --instance ofлокальный instanceOf = instanceOfState . mainsnak . значение данных . значение . я быесли acceptInstanceOf_Strict [ instanceOf ], то- ведение домашнего хозяйстваtFroms [ basionymId ] = 1iFroms = iFroms + 1fromTitleCount = fromTitleCount + 1- добавить базионим и трекparentArgs [ 'от' .. fromTitleCount ] = basionymIdкатегории [ 13 ] = '[[Категория: Таксонбары с автоматически добавленными базионимами]]'перерывконец конец конец конец конец конец--Добавить исходную комбинацию в список аргументов, если она еще не предоставленаесли currentItem, толокальная currentOCState = CurrentItem : getBestStatements ( 'P1403' ) [ 1 ] --original комбинацияесли currentOCState, тоlocal orcoId = currentOCState . mainsnak . значение данных . значение . я быесли orcoId и resolveEntity . _id ( orcoId ) и tFroms [ orcoId ] == ноль , то--проверьте, что orco является строгим экземпляром таксонаместный orcoItem = mw . викибаза . getEntity ( orcoId )если orcoItem, тодля _ , instanceOfState в парах ( orcoItem : getBestStatements ( 'P31' ) ) do --instance ofлокальный instanceOf = instanceOfState . mainsnak . значение данных . значение . я быесли acceptInstanceOf_Strict [ instanceOf ], то- ведение домашнего хозяйстваtFroms [ orcoId ] = 1iFroms = iFroms + 1fromTitleCount = fromTitleCount + 1- добавить orco & trackparentArgs [ 'от' .. fromTitleCount ] = orcoIdкатегории [ 14 ] = '[[Категория: Таксонбары с автоматически добавленными исходными комбинациями]]'перерывконец конец конец конец конец конец--Добавить монотипный род / вид к списку аргументов монотипных видов / родов, если он еще не предоставленесли currentItem, тодля _ , instanceOfState в парах ( CurrentItem : getBestStatements ( 'P31' ) ) делать --instance изместный taxonRank = nilлокальный parentItem = nillocal parentTaxon = nilлокальный parentTaxonRank = nilлокальный parentMonoGenus = nil --holy grail / tbdлокальный instanceOf = instanceOfState . mainsnak . значение данных . значение . я быесли instanceOf и ( instanceOf == 'Q310890' или instanceOf == 'Q47487597' ), то --monotypic / fossil taxonлокальная taxonRankState = CurrentItem : getBestStatements ( 'P105' ) [ 1 ] --taxon рангесли taxonRankState, то taxonRank = taxonRankState . mainsnak . значение данных . значение . конец идентификатора если taxonRank и taxonRank == 'Q7432', то --species- монотипный вид; добавить родлокальная parentTaxonState = CurrentItem : getBestStatements ( 'Р171' ) [ 1 ] --parent таксонесли parentTaxonState, то parentTaxon = parentTaxonState . mainsnak . значение данных . значение . конец идентификатора --confirm родительский ранг таксона == род и монотипияесли parentTaxon и resolveEntity . _id ( parentTaxon ) , тоparentItem = mw . викибаза . getEntity ( parentTaxon )если parentItem, тоlocal parentTaxonRankState = parentItem : getBestStatements ( 'P105' ) [ 1 ] - ранг таксонаесли parentTaxonRankState, то parentTaxonRank = parentTaxonRankState . mainsnak . значение данных . значение . конец идентификатора если parentTaxonRank и parentTaxonRank == 'Q34740', то --parent == роддля _ , parentInstanceOfState в парах ( parentItem : getBestStatements ( 'P31' ) ) do --instance ofлокальный parentInstanceOf = parentInstanceOfState . mainsnak . значение данных . значение . я бы если parentInstanceOf и ( parentInstanceOf == 'Q310890' или parentInstanceOf == 'Q47487597' ), затем --monotypic / fossil taxonparentMonoGenus = parentTaxon --confirmedперерывконецконецесли parentMonoGenus и tFroms [ parentMonoGenus ] == nil, то- ведение домашнего хозяйстваtFroms [ parentMonoGenus ] = 1iFroms = iFroms + 1fromTitleCount = fromTitleCount + 1- добавить монотипный род и трекparentArgs [ 'от' .. fromTitleCount ] = parentMonoGenusкатегории [ 15 ] = '[[Категория: Таксонбары с автоматически добавленными монотипными родами]]'перерывконецконецконецконецесли parentMonoGenus == nil или tFroms [ parentMonoGenus ] == nil, токатегории [ 16 ] = '[[Категория: Таксономические линейки монотипных видов, отсутствующие роды]]'перерывконецelseif taxonRank и taxonRank == 'Q34740', затем --genus- монотипный род; добавить виды--...конецконецконецконец --if currentItem--Настройка navboxlocal navboxParams = {name = 'Taxonbar' ,bodyclass = 'hlist' ,listclass = '' ,groupstyle = 'выравнивание текста: слева;' ,}для f = 1 , fromTitleCount , 1делатьлокальные элементы , title = {}, nil- параметры очисткиесли parentArgs [ 'from' .. f ] == '', то parentArgs [ 'from' .. f ] = nil endесли parentArgs [ 'title' .. f ] == '', то parentArgs [ 'title' .. f ] = nil end--remap псевдонимыдля _ , в парах ( конф . псевдонимы ) делать локальный псевдоним , имя = mw . ustring . нижний ( a [ 1 ]), mw . ustring . нижний ( a [ 2 ])если parentArgs [ псевдоним .. f ] и parentArgs [ name .. f ] == nil, тогдаparentArgs [ имя .. f ] = parentArgs [ псевдоним .. f ]parentArgs [ псевдоним .. f ] = нольконецконец--Получить элемент Викиданныхлокальный from = resolveEntity . _ID ( parentArgs [ 'от' .. F ])локальный элемент = mw . викибаза . getEntity ( от )локальная метка = нольесли type ( item ) == 'table', толокальные операторы = item : getBestStatements ( 'P225' ) [ 1 ] - имя таксонаесли утверждения, толокальные данные = операторы . mainsnak . значение данныхесли значение, тоlabel = значение данных . значениеконецконецlabel = label или item : getLabel ()ещеесли parentArgs [ 'from' .. f ], токатегории [ 1 ] = ""категории [ 4 ] = '[[Категория: Таксонбары с недопустимыми параметрами from]]'ошибки = ошибки .. mw . текст . tag ( 'strong' , { class = 'error' }, 'Error: "' .. parentArgs [ 'from' .. f ] .. '"не является допустимым идентификатором объекта Викиданных. <br />' )конецконецесли метка и метка ~ = '', тоназвание = mw . название . новый ( ярлык )конецесли title == nil и parentArgs [ 'title' .. f ], тоназвание = mw . название . новый ( parentArgs [ 'название' .. f ])конецесли title == nil и f == 1, тоtitle = currentTitleконецесли заголовок, тоесли isNilOrEmpty ( parentArgs [ 'wikidata' .. f ] ) и ( title . namespace == 0 ), затемесли parentArgs [ 'from' .. f ], тоparentArgs [ 'викиданные' .. f ] = parentArgs [ 'из' .. f ]elseif элемент тогдаparentArgs [ 'wikidata' .. f ] = элемент . я быконецконецесли заголовок . namespace == 0 или stringArgs, тогда - только в основном пространстве или если существует ручное переопределениеlocal sourceCount = 0для _ , Params в парах ( конф . базы данных ) делатьparams [ 1 ] = mw . ustring . ниже ( params [ 1 ])local propId = params [ 3 ]- Резервный вариант Викиданных, если требуетсяесли ( пункт и пункт . претензия ) и ( type ( propId ) == 'string' или ( type ( propId ) == 'number' и propId > 0 )) тогдаlocal wikidataId = getIdFromWikidata ( элемент , 'P' .. propId )local v = parentArgs [ параметры [ 1 ] .. f ]если wikidataId, тоесли isNilOrEmpty ( v ), тоparentArgs [ params [ 1 ] .. f ] = wikidataIdещеесли v и v ~ = 'no' и v ~ = wikidataId, токатегории [ 10 ] = '[[Категория: Таксонбары с указанными вручную идентификаторами таксонов, отличными от Викиданных]]'elseif v и v == wikidataId тогдакатегории [ 11 ] = '[[Категория: Таксонбары с указанными вручную идентификаторами таксонов, идентичными Викиданным]]'конецконецконецконецlocal val = parentArgs [ параметры [ 1 ] .. f ]если val и val ~ = '' и mw . ustring . lower ( val ) ~ = 'no', тогдаесли type ( propId ) == 'number', тоесли propId < 0, то propId = - propId end --allow linkесли propId > 0, то --linktable.insert ( elements , createRow ( params [ 1 ], params [ 2 ] .. ':' , val , getLink ( propId , val ). text , true ) )иначе --propId == 0; нет ссылкиtable.insert ( elements , createRow ( params [ 1 ], params [ 2 ] .. ':' , val , val , true ) )конецещеtable.insert ( elements , createRow ( params [ 1 ], params [ 2 ] .. ':' , val , getLink ( propId , val ). text , true ) )конецесли params [ 1 ] ~ = 'wikidata' и params [ 1 ] ~ = 'wikispecies', тоsourceCount = sourceCount + 1конецконецконецесли sourceCount > = 40, то категории [ 22 ] = '[[Категория: Таксоны с идентификаторами более 40 таксонов]]'elseif sourceCount > = 35, затем категории [ 21 ] = '[[Категория: панели таксонов с идентификаторами таксонов 35–39]]' - завершаетelseif sourceCount > = 30, затем категории [ 20 ] = '[[Категория: панели таксонов с идентификаторами 30–34 таксонов]]'elseif sourceCount > = 25, затем категории [ 19 ] = '[[Категория: Таксоны с идентификаторами 25–29 таксонов]]'elseif sourceCount > = 20, то категории [ 18 ] = '[[Категория: Таксоны с идентификаторами 20–24 таксонов]]'конец- Создать заголовок навигационного окнаесли sourceCount > 0, тоrowCount = rowCount + 1если firstRow == 0, то firstRow = f end- установить заголовок из викиданных, если он не существуетесли isNilOrEmpty ( parentArgs [ 'title' .. f ] ), тоparentArgs [ 'noTitle' .. f ] = истинаparentArgs [ 'title' .. f ] = title . текстконец- если он существует сейчас, установить заголовок строки в заголовокесли не isNilOrEmpty ( parentArgs [ 'title' .. f ] ), тоnavboxParams [ 'группа' .. f ] = TaxonItalics . italicizeTaxonName ( parentArgs [ 'название' .. е ], ложные )ещеnavboxParams [ 'группа' .. f ] = ''конецnavboxParams [ 'список' .. f ] = table.concat ( элементы )elseif currentEntityId и ( currentEntityId == parentArgs [ 'from' .. f ] или fromTitleCount == 1 ), токатегории [ 7 ] = '[[Категория: Таксонбары без основных идентификаторов таксонов Викиданных]]'ещекатегории [ 8 ] = '[[Категория: Таксонбары без вторичных идентификаторов таксонов Викиданных]]'конец- Категорииесли не isNilOrEmpty ( parentArgs [ 'from' .. f ] ), то--blank «отсутствует из», если «из» существуеткатегории [ 1 ] = ""--blank "desynced", если 'from' соответствует текущей страницеесли parentArgs [ 'from' .. f ] == currentEntityId, то категории [ 2 ] = '' endконец- не может быть "десинхронизирован", если нет параметров 'from'если категории [ 1 ] ~ = '', то категории [ 2 ] = '' конецконецконецконец - для f = 1, fromTitleCount, 1если rowCount > 0, тоlocal Navbox = require ( 'Модуль: Navbox' )если rowCount > 1, то- удалить дубликаты и переместить заголовок страницы вверхlocal rowIDs = {}для f = 1 , fromTitleCount , 1делатьесли не isNilOrEmpty ( parentArgs [ 'title' .. f ] ), тоесли rowIDs [ parentArgs [ 'wikidata' .. f ]], то --remove duplicatenavboxParams [ 'группа' .. f ] = нольnavboxParams [ 'список' .. f ] = нольещеrowIDs [ parentArgs [ 'wikidata' .. f ]] = true- удалено поведение, заставляющее «строку соответствия имени страницы WD-WP» перемещаться наверх, согласно [[Обсуждение шаблона: Taxonbar # Значения, не рекомендуемые из викиданных]]- если f> firstRow и (parentArgs ['title' .. f] == currentTitle.text или - parentArgs ['wikidata' .. f] == currentEntityId) затем --переместить элемент, связанный со страницей, наверх- если navboxParams ['group' .. f] и - navboxParams ['group' .. f] ~ = '' и - navboxParams ['list' .. f] и - navboxParams ['list' .. f] ~ = '' затем- local tempGroup, tempList = navboxParams ['группа' .. f], navboxParams ['list' .. f]- navboxParams ['группа' .. f], navboxParams ['список' .. f] = navboxParams ['группа' .. firstRow], navboxParams ['list' .. firstRow]- navboxParams ['группа' .. первая строка], navboxParams ['список' .. первая строка] = tempGroup, tempList-- конец-- конецконецконецконецесли parentArgs [ 'title' .. 2 ] и parentArgs [ 'title' .. 2 ] == currentTitle . текст тогдаесли parentArgs [ 'from' .. 2 ] == currentItem [ 'id' ], токатегории [ 23 ] = '[[Категория: Таксонбары с совпадающим заголовком статьи from2 и QID]]'ещекатегории [ 24 ] = '[[Категория: Таксонбары с совпадающим заголовком статьи from2]]'конецконец- настроить навигационное окно для количества строкnavboxParams [ 'title' ] = '[[Справка: идентификаторы таксонов | идентификаторы таксонов]]'если rowCount > = 4, тоnavboxParams [ 'navbar' ] = 'простой'ещеnavboxParams [ 'состояние' ] = 'выкл'navboxParams [ 'navbar' ] = 'выкл'конецelseif parentArgs [ 'noTitle' .. firstRow ], затемnavboxParams [ 'group' .. firstRow ] = '[[Справка: идентификаторы таксонов | идентификаторы таксонов ]]'ещеnavboxParams [ 'group' .. firstRow ] = '[[Справка: идентификаторы таксонов | идентификаторы таксонов ]] <br />' .. navboxParams [ 'group' .. firstRow ]конец- вернуть навигационный ящикoutString = НавБокс . _navbox ( navboxParams )конец --if rowCount> 0- Добавить категорииесли string.sub ( currentTitle . subpageText , 1 , 9 ) == 'testcases', то parentArgs [ 'demo' ] = true endесли не isNilOrEmpty ( parentArgs [ 'demo' ] ), тоoutString = outString .. мвт . текст . nowiki ( table.concat ( категории )) .. '<br />'elseif currentTitle . namespace == 0, тогдаoutString = outString .. table.concat ( категории )конецвернуть outString .. ошибкиконецвернуть p