Постоянно защищенный модуль
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по модулю [ просмотреть ] [ изменить ] [ историю ] [ очистить ]

Таксонбар ( редактировать ссылки истории разговоров # / subpages / doc / doc edit / sbox / sbox diff / test )      

Этот модуль содержит код {{ 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