Модуль:CiteGost

Материал из Буквицы
Версия от 16:12, 5 марта 2025; Буквица>The Fox Bot (Защитил страницу Модуль:CiteGost: критический шаблон или модуль: согласно Служебная:Постоянная ссылка/143835923 ([Редактирование=только автоподтверждённые] (бессрочно) [Переименование=только автоподтверждённые] (бессрочно)))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Модуль предназначен для автоматизированного оформления библиографических записей согласно руководствам русскоязычной Википедии (ВП:БИБГРАФ). В статьях модуль используется посредством шаблона-обёртки {{Источник информации}}.

Общий формат

Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value).

Параметры

Использование

Данный модуль не предназначен для использования в статьях напрямую. Использовать в статьях можно только обёртки над данным модулем.

Более подробная документация по особенностям модуля доступна в русскоязычной обёртке над ним — шаблоне {{Источник информации}}.

Тесты

Пройдено тестов: 5 из 33. Неудачных: 28.
Статьи (0/5)
ТестОжидаетсяФактическиРазница
Научная статья 1
{{Источник информации|Q73118986
 |ref = Casotti, Lindberg, Braun
}}
'"`[^<]+Casotti G%. %Functional morphology of the avian medullary cone% : [англ%.] : [%арх%.% 17 марта 2022] / G%. Casotti, K%. K%. Lindberg, E%. J%. Braun // American journal of physiology%. Regulatory, integrative and comparative physiology%[%[d:Q2201819|[d]%]%]%. — 2000, 1 November%. — Vol%. 279, iss%. 5%. — P%. R1722—30%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%10.1152/ajpregu.2000.279.5.r1722%%. — %[%[PMID%]%] %11049855%%. — %[%[Викиданные|WD%]%] %[%[d:Q73118986|Q73118986%]%]%.(nil)Язык?. — WD Q73118986.
< '"`[^<]+<span class="citation" id="CITEREFCasotti, Lindberg, Braun2000"><i>Casotti&nbsp;G%.</i> <span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://journals.physiology.org/doi/full/10.1152/ajpregu.2000.279.5.R1722 Functional morphology of the avian medullary cone%]</span> :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; :&nbsp;&lsqb;%[https://web.archive.org/web/20220317045420/https://journals.physiology.org/doi/full/10.1152/ajpregu.2000.279.5.R1722 <abbr title="Архивная копия от указанной даты">арх%.</abbr>%]&nbsp;17 марта 2022&rsqb; /&nbsp;G%. Casotti, K%. K%. Lindberg, E%. J%. Braun //&nbsp;American journal of physiology%. Regulatory, integrative and comparative physiology<sup class="noprint">%[%[d:Q2201819|&#91;d&#93;%]%]</sup>%. — 2000, <span class="nowrap">1 November</span>%. — Vol%.&nbsp;279, iss%.&nbsp;5%. — P%.&nbsp;R1722—30%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:<span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://doi.org/10.1152/AJPREGU.2000.279.5.R1722 10.1152/ajpregu.2000.279.5.r1722%]</span>%. — %[%[PMID%]%]&nbsp;%[https://pubmed.ncbi.nlm.nih.gov/11049855 11049855%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q73118986|Q73118986%]%]%.
> <span class="citation" id="CITEREFCasotti, Lindberg, Braun"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q73118986|Q73118986]].
Научная статья 2
{{Источник информации|Q92544321
 |ref = Abdalla
}}
Abdalla M%. A%.%[%[d:Q118210006|[d]%]%] %Anatomical features in the kidney involved in water conservation through urine concentration in dromedaries %(Camelus dromedarius%)% : [англ%.] : [%арх%.% 26 июля 2022] // Heliyon%[%[d:Q27727019|[d]%]%]%. — 2020, 2 January%. — Vol%. 6, iss%. 1%. — Article e03139%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%10%.1016/j%.heliyon%.2019%.e03139%%. — %[%[PMID%]%] %31922050%%. — %[%[Викиданные|WD%]%] %[%[d:Q92544321|Q92544321%]%]%.(nil)Язык?. — WD Q92544321.
< id="CITEREFAbdalla2020"><i>Abdalla&nbsp;M%.&nbsp;A%.<sup class="noprint">%[%[d:Q118210006|&#91;d&#93;%]%]</sup></i> <span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://www%.sciencedirect%.com/science/article/pii/S2405844019367982 Anatomical features in the kidney involved in water conservation through urine concentration in dromedaries %(Camelus dromedarius%)%]</span> :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; :&nbsp;&lsqb;%[https://web%.archive%.org/web/20220726192143/https://www%.ncbi%.nlm%.nih%.gov/pmc/articles/PMC6948238/pdf/main%.pdf <abbr title="Архивная копия от указанной даты">арх%.</abbr>%]&nbsp;26 июля 2022&rsqb; //&nbsp;Heliyon<sup class="noprint">%[%[d:Q27727019|&#91;d&#93;%]%]</sup>%. — 2020, <span class="nowrap">2 January</span>%. — Vol%.&nbsp;6, iss%.&nbsp;1%. — Article e03139%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:<span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://doi%.org/10%.1016/J%.HELIYON%.2019%.E03139 10%.1016/j%.heliyon%.2019%.e03139%]</span>%. — %[%[PMID%]%]&nbsp;%[https://pubmed%.ncbi%.nlm%.nih%.gov/31922050 31922050%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q92544321|Q92544321%]%]%.
> id="CITEREFAbdalla"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q92544321|Q92544321]].
Научная статья 3
{{Источник информации|Q59330138
 |ref = Munn, Peters, Stern, et al.
}}
%Systematic review or scoping review%? Guidance for authors when choosing between a systematic or scoping review approach% : [англ%.] / Z. Munn%[%[d:Q56167095|[d]%]%], M%. Peters%[%[d:Q57790662|[d]%]%], C. Stern %[et al.%] // BMC Medical Research Methodology%[%[d:Q15752152|[d]%]%]%. — 2018, 19 November%. — Vol%. 18, iss. 1%. — P%. 143%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%10.1186/s12874%-018%-0611%-x%%. — %[%[PMID%]%] %30453902%%. — %[%[Викиданные|WD%]%] %[%[d:Q59330138|Q59330138%]%]%.(nil)Язык?. — WD Q59330138.
< al.2018"><span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://bmcmedresmethodol.biomedcentral.com/articles/10.1186/s12874%-018%-0611%-x Systematic review or scoping review%? Guidance for authors when choosing between a systematic or scoping review approach%]</span> :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; /&nbsp;Z.&nbsp;Munn<sup class="noprint">%[%[d:Q56167095|&#91;d&#93;%]%]</sup>, M%.&nbsp;Peters<sup class="noprint">%[%[d:Q57790662|&#91;d&#93;%]%]</sup>, C. Stern <abbr title="C%.&nbsp;Tufanaru, A%. McArthur, E%.&nbsp;Aromataris">%[et al.%]</abbr> //&nbsp;BMC Medical Research Methodology<sup class="noprint">%[%[d:Q15752152|&#91;d&#93;%]%]</sup>%. — 2018, <span class="nowrap">19 November</span>%. — Vol%.&nbsp;18, iss.&nbsp;1%. — P%.&nbsp;143%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:<span class="cite%-open%-access%-url" title="[%a%s%p]+">%[https://doi.org/10.1186/S12874%-018%-0611%-X 10.1186/s12874%-018%-0611%-x%]</span>%. — %[%[PMID%]%]&nbsp;%[https://pubmed.ncbi.nlm.nih.gov/30453902 30453902%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q59330138|Q59330138%]%]%.
> al."><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q59330138|Q59330138]].
Заданная вручную статья через qid издания
{{Источник информации
 |авторы = M. A. Abdalla
 |ссылка = https://www.sciencedirect.com/science/article/pii/S2405844019367982
 |заглавие = Anatomical features in the kidney involved in water conservation through urine concentration in dromedaries (Camelus dromedarius)
 |язык = en
 |qid издания = Q27727019
 |статья = e03139
 |дата = 2020-01-02
 |том = 6
 |выпуск = 1
 |doi = 10.1016/J.HELIYON.2019.E03139
 |pmid = 31922050
 |ref = Abdalla
}}
Abdalla M%. A%. %Anatomical features in the kidney involved in water conservation through urine concentration in dromedaries %(Camelus dromedarius%)% : [англ%.] // Heliyon%[%[d:Q27727019|[d]%]%]%. — 2020, 2 January%. — Vol%. 6, iss%. 1%. — Article e03139%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%10%.1016/j%.heliyon%.2019%.e03139%%. — %[%[PMID%]%] %31922050%%.Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value).
< <span class="citation" id="CITEREFAbdalla2020"><i>Abdalla&nbsp;M%. A%.</i> %[https://www%.sciencedirect%.com/science/article/pii/S2405844019367982 Anatomical features in the kidney involved in water conservation through urine concentration in dromedaries %(Camelus dromedarius%)%] :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; //&nbsp;Heliyon<sup class="noprint">%[%[d:Q27727019|&#91;d&#93;%]%]</sup>%. — 2020, <span class="nowrap">2 January</span>%. — Vol%.&nbsp;6, iss%.&nbsp;1%. — Article e03139%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%[https://doi%.org/10%.1016/J%.HELIYON%.2019%.E03139 10%.1016/j%.heliyon%.2019%.e03139%]%. — %[%[PMID%]%]&nbsp;%[https://pubmed%.ncbi%.nlm%.nih%.gov/31922050 31922050%]%.</span>
> <strong class="error"><span class="scribunto-error mw-scribunto-error-bfbe9bf5">Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local &#039;abbr&#039; (a nil value).</span></strong>
Научная статья (у журнала не должно быть авторов)
{{Источник информации|Q24187606
 |ref = Sutter, Saraswat, Driel
}}
An I%. M%. De Sutter%. %Antihistamines for the common cold% : [англ%.] / An I%. M%. De Sutter, Avadhesh Saraswat, Mieke L%. van Driel%[%[d:Q48943509|[d]%]%] // Cochrane Database of Systematic Reviews%[%[d:Q15750361|[d]%]%]%. — 2015, 29 November%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%10%.1002/14651858%.cd009345%.pub2%%. — %[%[PMID%]%] %26615034%%. — %[%[Викиданные|WD%]%] %[%[d:Q24187606|Q24187606%]%]%.(nil)Язык?. — WD Q24187606.
< Driel2015"><i>An I%. M%. De Sutter</i>%. %[https://www%.cochranelibrary%.com/cdsr/doi/10%.1002/14651858%.CD009345%.pub2/full Antihistamines for the common cold%] :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; /&nbsp;An I%. M%. De Sutter, Avadhesh Saraswat, Mieke L%. van Driel<sup class="noprint">%[%[d:Q48943509|&#91;d&#93;%]%]</sup> //&nbsp;Cochrane Database of Systematic Reviews<sup class="noprint">%[%[d:Q15750361|&#91;d&#93;%]%]</sup>%. — 2015, <span class="nowrap">29 November</span>%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Цифровой идентификатор объекта|doi%]%]:%[https://doi%.org/10%.1002/14651858%.CD009345%.PUB2 10%.1002/14651858%.cd009345%.pub2%]%. — %[%[PMID%]%]&nbsp;%[https://pubmed%.ncbi%.nlm%.nih%.gov/26615034 26615034%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q24187606|Q24187606%]%]%.
> Driel"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q24187606|Q24187606]].
Книги (0/12)
ТестОжидаетсяФактическиРазница
Глава книги
{{Источник информации
 |qid издания = Q114595502
 |ссылка на издание = https://www.google.ru/books/edition/Seldin_and_Giebisch_s_The_Kidney/w5nEg7VLEQ4C?hl=en&gbpv=1&pg=610
 |заглавие = Chapter 20 — Structural Organization of the Mammalian Kidney
 |ссылка = https://www.sciencedirect.com/science/article/pii/B9780123814623000203
 |авторы = W. Kriz, B. Kaissling
 |том = 1
 |страницы = 595-691
 |ref = Kriz, Kaissling
}}
Kriz W. Chapter 20 — Structural Organization of the Mammalian Kidney : [англ.] / W. Kriz, B. Kaissling // Seldin and Giebisch's The Kidney : Physiology and pathophysiology : in 2 vols. / Ed.: R. J. Alpern [et al.]. — Fifth edition. — Amsterdam : Academic Press, 2012, 31 December. — Vol. 1. — P. 595—691. — ISBN 978-0-12-381463-0, 978-0-12-381462-3. — WD Q114595502.Kriz W. Chapter 20 — Structural Organization of the Mammalian KidneyЯзык? / W. Kriz, B. Kaissling // (nil). (Издание?). —  1. —  595—691. — WD Q114595502.
< Kaissling2012"><i>Kriz&nbsp;W.</i> [https://www.sciencedirect.com/science/article/pii/B9780123814623000203 Chapter 20 — Structural Organization of the Mammalian Kidney] :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; /&nbsp;W. Kriz, B. Kaissling //&nbsp;[https://www.google.ru/books/edition/Seldin_and_Giebisch_s_The_Kidney/w5nEg7VLEQ4C?hl=en&gbpv=1&pg=610 Seldin and Giebisch's The Kidney] :&nbsp;Physiology and pathophysiology :&nbsp;in&nbsp;2 vols. /&nbsp;Ed.: R. J. Alpern <abbr title="M. Caplan, O. W. Moe">[et al.]</abbr>. — Fifth edition. — [[Амстердам|Amsterdam]] :&nbsp;[[Academic Press]], 2012, <span class="nowrap">31 December</span>. — Vol.&nbsp;1. — P.&nbsp;595—691. — [[Международный стандартный книжный номер|ISBN]]&nbsp;[[Служебная:Источники_книг/978-0-12-381463-0|978-0-12-381463-0]], [[Служебная:Источники_книг/978-0-12-381462-3|978-0-12-381462-3]]. — [[Викиданные|WD]]&nbsp;
> Kaissling"><i>Kriz&nbsp;W.</i> [https://www.sciencedirect.com/science/article/pii/B9780123814623000203 Chapter 20 — Structural Organization of the Mammalian Kidney]<sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> /&nbsp;W. Kriz, B. Kaissling //&nbsp;[https://www.google.ru/books/edition/Seldin_and_Giebisch_s_The_Kidney/w5nEg7VLEQ4C?hl=en&gbpv=1&pg=610 <b><s>(nil)</s></b>]. (<span class="error">Издание?</span>). — &nbsp;1. — &nbsp;595—691. — WD&nbsp;
Перевод книги с русского на английский
{{Источник информации|Q114676884
 |ref = Sagan
}}
%[%[Саган, Карл|Саган К%.%]%] %[%[Мир, полный демонов: Наука — как свеча во тьме|Мир, полный демонов%]%] : Наука — как свеча во тьме = The Demon%-Haunted World : Science as a Candle in the Dark : Пер%. с англ%. / Пер%.: %[%[Сумм, Любовь Борисовна|Л[юбовь %. ]+Сумм%]%]; ред%.: Артур Кляницкий%. — 5%-е изд%. — %[%[Москва|М%.%]%] : %[%[Альпина нон%-фикшн%]%], 2019%. — 538 с%. — %[%[Международный стандартный книжный номер|ISBN%]%] %[%[Служебная:Источники_книг/978%-5%-91671%-874%-4|978%-5%-91671%-874%-4%]%]%. — %[%[Викиданные|WD%]%] %[%[d:Q114676884|Q114676884%]%]%.(nil)Язык?. — WD Q114676884.
< id="CITEREFSagan2019"><i>%[%[Саган, Карл|Саган&nbsp;К%.%]%]</i> %[%[Мир, полный демонов: Наука — как свеча во тьме|Мир, полный демонов%]%] :&nbsp;Наука — как свеча во тьме = The Demon%-Haunted World :&nbsp;Science as a Candle in the Dark :&nbsp;Пер%.&nbsp;с <abbr title="английский язык">англ%.</abbr> /&nbsp;Пер%.: %[%[Сумм, Любовь Борисовна|Л[юбовь %.&nbsp;]+Сумм%]%]; ред%.: Артур Кляницкий%. — 5%-е изд%. — %[%[Москва|М%.%]%] :&nbsp;%[%[Альпина нон%-фикшн%]%], 2019%. — 538&nbsp;с%. — %[%[Международный стандартный книжный номер|ISBN%]%]&nbsp;%[%[Служебная:Источники_книг/978%-5%-91671%-874%-4|978%-5%-91671%-874%-4%]%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q114676884|Q114676884%]%]%.
> id="CITEREFSagan"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q114676884|Q114676884]].
Книга с указанным типом работы
{{Источник информации|Q114831437
 |ref = Веракса, Веракса
}}
Веракса Н. Е. Познавательное развитие в дошкольном возрасте : учебное пособие / Н. Е. Веракса, А. Н. Веракса. — М. : МОЗАИКА-СИНТЕЗ, 2012. — 336 с. — ISBN 978-5-4315-0097-8. — WD Q114831437.(nil)Язык?. — WD Q114831437.
< Веракса2012"><i>[[Веракса, Николай Евгеньевич|Веракса&nbsp;Н.&nbsp;Е.]]</i> [https://books.google.com/books?id=kQuhgKBS5xYC Познавательное развитие в дошкольном возрасте] :&nbsp;учебное пособие /&nbsp;Н.&nbsp;Е.&nbsp;Веракса, [[Веракса, Александр Николаевич|А.&nbsp;Н.&nbsp;Веракса]]. — [[Москва|М.]] :&nbsp;МОЗАИКА-СИНТЕЗ, 2012. — 336&nbsp;с. — [[Международный стандартный книжный номер|ISBN]]&nbsp;[[Служебная:Источники_книг/978-5-4315-0097-8|978-5-4315-0097-8]]. — [[Викиданные|WD]]&nbsp;
> Веракса"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;
Книга с указанной серией
{{Источник информации|Q115189432
 |заглавие тома = Животные
 |ref = Красная книга РФ, т. «Животные»
}}
Красная книга Российской Федерации. Т. «Животные». — 2-е издание. — М. : ФГБУ «ВНИИ Экология», 2021. — 1128 с. — (Красная книга Российской Федерации). — ISBN 978-5-6047425-0-1. — WD Q115189432.(nil)Язык?. —  Животные. — WD Q115189432.
< «Животные»2021">[https://www.mnr.gov.ru/activity/red_book/krasnaya-kniga-rossiyskoy-federatsii/ Красная книга Российской Федерации]. Т.&nbsp;«Животные». — 2-е издание. — [[Москва|М.]] :&nbsp;ФГБУ «ВНИИ Экология», 2021. — 1128&nbsp;с. — (Красная книга Российской Федерации). — [[Международный стандартный книжный номер|ISBN]]&nbsp;[[Служебная:Источники_книг/978-5-6047425-0-1|978-5-6047425-0-1]]. — [[Викиданные|WD]]&nbsp;
> «Животные»"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — &nbsp;Животные. — WD&nbsp;
Книга по qid издания и qid темы
{{Источник информации
 |qid издания = Q98103166
 |qid темы = Q58184
 |ref = Наточин
}}
Юрий Викторович Наточин. Нефрон : [арх. 14 апреля 2023] // Знания : интернет-энциклопедия / Гл. ред.: С. Кравец. — 2023, 17 января.(nil)Язык? // (nil)[d]. — WD Q98103166.
< id="CITEREFНаточин2023"><i>Юрий Викторович Наточин</i>. [https://bigenc.ru/c/nefron-39c55e Нефрон] :&nbsp;&lsqb;[https://web.archive.org/web/20230414153304/https://bigenc.ru/c/nefron-39c55e <abbr title="Архивная копия от указанной даты">арх.</abbr>]&nbsp;14 апреля 2023&rsqb; //&nbsp;[[s:Знания|Знания]] :&nbsp;интернет-энциклопедия /&nbsp;Гл.&nbsp;ред.: [[Кравец, Сергей Леонидович|С.&nbsp;Кравец]]. — 2023, <span class="nowrap">17 января</span>.
> id="CITEREFНаточин"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q98103166|&#91;d&#93;]]</sup>. — WD&nbsp;[[d:Q98103166|Q98103166]].
Книга по qid издания и qid темы на английском
{{Источник информации
 |qid издания = Q5375741
 |qid темы = Q58184
 |дата обновления = 2022-08-22
 |дата обращения = 2022-10-23
 |ref = Nephron, Britannica
}}
The Editors of Encyclopaedia Britannica. Nephron : [англ.] : [арх. 2 июня 2022] // Encyclopædia Britannica : online encyclopedia. — Дата обновления: 22 августа 2022. — Дата обращения: 23 октября 2022.(nil)Язык? // (nil)[d]. — Дата обновления: 22 августа 2022. — Дата обращения: 23 октября 2022. — WD Q5375741.
< <i>The Editors of Encyclopaedia Britannica</i>. [https://www.britannica.com/science/nephron Nephron] :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; :&nbsp;&lsqb;[https://web.archive.org/web/20220602180208/https://www.britannica.com/science/nephron <abbr title="Архивная копия от указанной даты">арх.</abbr>]&nbsp;2 июня 2022&rsqb; //&nbsp;[[Британника онлайн|Encyclopædia Britannica]] :&nbsp;online encyclopedia. — Дата обновления: 22 августа 2022. — Дата обращения: 23 октября 2022.
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q5375741|&#91;d&#93;]]</sup>. — Дата обновления: 22 августа 2022. — Дата обращения: 23 октября 2022. — WD&nbsp;[[d:Q5375741|Q5375741]].
С указанием иллюстраторов
{{Источник информации|Q115634662
 |ref = Clement, Davis, Harris
}}
Clement P.[d] Finches and Sparrows : [англ.] / Illus.: A. Harris, J. Davis. — 1st edition. — 1993, 21 November. — 500 p. — ISBN 978-0-691-03424-9. — WD Q115634662.(nil)Язык?. — WD Q115634662.
< Harris1993"><i>Clement&nbsp;P.<sup class="noprint">[[d:Q20747783|&#91;d&#93;]]</sup></i> Finches and Sparrows :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; /&nbsp;Illus.: A. Harris, J. Davis. — 1st edition. — 1993, <span class="nowrap">21 November</span>. — 500&nbsp;p. — [[Международный стандартный книжный номер|ISBN]]&nbsp;[[Служебная:Источники_книг/978-0-691-03424-9|978-0-691-03424-9]]. — [[Викиданные|WD]]&nbsp;
> Harris"><b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;
Том через qid
{{Источник информации|Q115676233
}}
%Jubb, Kennedy & Palmer's Pathology of Domestic Animals% : [англ%.]%. In 3 vols%. Vol%. 2 / Ed%.: M%. G[rant%.]+ Maxie%. — Elsevier Health Sciences, 2015, 14 August%. — 782 p%. — %[%[Международный стандартный книжный номер|ISBN%]%] %[%[Служебная:Источники_книг/978%-0%-7020%-5318%-4|978%-0%-7020%-5318%-4%]%]%. — %[%[Викиданные|WD%]%] %[%[d:Q115676233|Q115676233%]%]%.(nil)Язык?. — WD Q115676233.
< %[https://books%.google%.com/books%?id=qbRgCgAAQBAJ Jubb, Kennedy & Palmer's Pathology of Domestic Animals%] :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb;%. In&nbsp;3 vols%. Vol%.&nbsp;2 /&nbsp;Ed%.: M%. G[rant%.]+ Maxie%. — Elsevier Health Sciences, 2015, <span class="nowrap">14 August</span>%. — 782&nbsp;p%. — %[%[Международный стандартный книжный номер|ISBN%]%]&nbsp;%[%[Служебная:Источники_книг/978%-0%-7020%-5318%-4|978%-0%-7020%-5318%-4%]%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q115676233|Q115676233%]%]%.
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q115676233|Q115676233]].
Том через qid с ручным заданием частного заглавия
{{Источник информации|Q115926218
 |заглавие тома = Full text
}}
Lefever Ernest W. United Nations peacekeeping in the Congo: 1960-1964 : an analysis of political, executive and military control : [англ.]. In 4 vols. Vol. 2. Full text / Ernest W. Lefever, Wynfred Joshua. — Washington : Brookings Institution, 1966, 30 June. — 454 p. — OCLC 489825. — WD Q115926218.(nil)Язык?. —  Full text. — WD Q115926218.
< <i>Lefever&nbsp;Ernest W.</i> [https://books.google.com/books?id=OROfwgEACAAJ United Nations peacekeeping in the Congo: 1960-1964] :&nbsp;an analysis of political, executive and military control :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb;. In&nbsp;4 vols. Vol.&nbsp;2. Full text /&nbsp;Ernest W. Lefever, Wynfred Joshua. — [[Вашингтон|Washington]] :&nbsp;[[Брукингский институт|Brookings Institution]], 1966, <span class="nowrap">30 June</span>. — 454&nbsp;p. — [[Online Computer Library Center|OCLC]]&nbsp;[https://www.worldcat.org/oclc/489825 489825]. — [[Викиданные|WD]]&nbsp;
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — &nbsp;Full text. — WD&nbsp;
Глава, у которой есть автор, из книги, у которой указан редактор
{{Источник информации
 |авторы = Marc R. Hammerman
 |заглавие = Chapter 37 - Xenotransplantation in the Kidney: A Historical Perspective
 |ссылка = https://www.sciencedirect.com/science/article/abs/pii/B9780128001028000370
 |страницы = 507-519
 |doi = 10.1016/B978-0-12-800102-8.00037-0
 |qid издания = Q118531989
}}
Hammerman Marc R. Chapter 37 — Xenotransplantation in the Kidney: A Historical Perspective : [англ.] // Kidney Development, Disease, Repair and Regeneration[d] / Ed.: Melissa H. Little[d]. — Academic Press, 2016. — P. 507—519. — ISBN 978-0-12-800102-8. — doi:10.1016/b978-0-12-800102-8.00037-0. — WD Q118531989.Hammerman Marc R. Chapter 37 — Xenotransplantation in the Kidney: A Historical PerspectiveЯзык? // (nil)[d]. —  507—519. — doi:10.1016/b978-0-12-800102-8.00037-0. — WD Q118531989.
< :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; //&nbsp;Kidney Development, Disease, Repair and Regeneration<sup class="noprint">[[d:Q118531989|&#91;d&#93;]]</sup> /&nbsp;Ed.: Melissa H. Little<sup class="noprint">[[d:Q41179909|&#91;d&#93;]]</sup>. — [[Academic Press]], 2016. — P.&nbsp;507—519. — [[Международный стандартный книжный номер|ISBN]]&nbsp;[[Служебная:Источники_книг/978-0-12-800102-8|978-0-12-800102-8]]. — [[Цифровой идентификатор объекта|doi]]:[https://doi.org/10.1016/B978-0-12-800102-8.00037-0 10.1016/b978-0-12-800102-8.00037-0]. — [[Викиданные|WD]]&nbsp;
> <sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q118531989|&#91;d&#93;]]</sup>. — &nbsp;507—519. — doi:10.1016/b978-0-12-800102-8.00037-0. — WD&nbsp;
С указанием главного редактора
{{Источник информации|Q118220282
 |ref = БРЭ
}}
Большая российская энциклопедия : в 35 т. / Гл. ред.: Ю. С. Осипов. — М. : Большая российская энциклопедия, 2004—2017. — WD Q118220282.(nil)Язык?. — WD Q118220282.
< [[Большая российская энциклопедия]] :&nbsp;в&nbsp;35 т. /&nbsp;Гл.&nbsp;ред.: Ю. С. Осипов. — [[Москва|М.]] :&nbsp;[[Большая российская энциклопедия (издательство)|Большая российская энциклопедия]], 2004—2017. — [[Викиданные|WD]]&nbsp;
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;
Ручное задание информации с серией
{{Источник информации|Q118220282|авторы=Ulla C. Kopp|заглавие=Neural Control of Renal Function|ссылка=https://www.ncbi.nlm.nih.gov/books/NBK57113/|оригинал=Neural Control of Renal Function|место=San Rafael|издатель=Morgan & Claypool Life Sciences|дата=2011-08-20|серия=Integrated Systems Physiology: from Molecule to Function to Disease|pmid=21850765|язык=en|qid=Q121112788|офлайн=1}}
Kopp Ulla C. Neural Control of Renal Function : [англ.]. — San Rafael : Morgan & Claypool Life Sciences, 2011, 20 August. — (Integrated Systems Physiology: from Molecule to Function to Disease). — PMID 21850765. — WD Q121112788.Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value).
< <span class="citation"><i>Kopp&nbsp;Ulla C.</i> [https://www.ncbi.nlm.nih.gov/books/NBK57113/ Neural Control of Renal Function] :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb;. — San Rafael :&nbsp;Morgan & Claypool Life Sciences, 2011, <span class="nowrap">20 August</span>. — (Integrated Systems Physiology: from Molecule to Function to Disease). — [[PMID]]&nbsp;[https://pubmed.ncbi.nlm.nih.gov/21850765 21850765]. — [[Викиданные|WD]]&nbsp;[[d:Q121112788|Q121112788]].</span>
> <strong class="error"><span class="scribunto-error mw-scribunto-error-bfbe9bf5">Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local &#039;abbr&#039; (a nil value).</span></strong>
Выпуски (0/4)
ТестОжидаетсяФактическиРазница
Выпуск журнала
{{Источник информации|Q36350107}}
WikiJournal of Medicine : [англ%.]%. Iss%. 1%. — WikiJournal User Group%[%[d:Q28953974|[d]%]%]%. — Vol%. 4%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]. — %[%[Викиданные|WD%]%] %[%[d:Q36350107|Q36350107%]%]%.(nil)Язык?. — WD Q36350107.
< WikiJournal of Medicine :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb;%. Iss%.&nbsp;1%. — WikiJournal User Group<sup class="noprint">%[%[d:Q28953974|&#91;d&#93;%]%]</sup>%. — Vol%.&nbsp;4%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q36350107|Q36350107%]%]%.
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q36350107|Q36350107]].
Выпуск журнала с названием
{{Источник информации|Q29908205}}
%The Art Newspaper% : [англ%.]%. Iss%. 289%. Visitor Figures 2016%. — 2017, April%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%]&(nil)Язык?. — WD Q29908205.
< %[https://www%.museus%.gov%.br/wp%-content/uploads/2017/04/20170406%-CPAI%-Ranking2016Pub%-Comp%-%.pdf The Art Newspaper%] :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb;%. Iss%.&nbsp;289%. Visitor Figures 2016%. — 2017, <span class="nowrap">April</span>%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%]&
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;[[d:Q29908205|Q29908205]].</span>
Статья из выпуска журнала, оформленная через qid издания, в котором указан выпуск
{{Источник информации
 |qid издания = Q36350107
 |заглавие = The Hippocampus
 |ссылка = https://en.wikiversity.org/wiki/WikiJournal_of_Medicine/The_Hippocampus
}}
%The Hippocampus% : [англ%.] // %[%[s:WikiJournal of Medicine|WikiJournal of Medicine%]%] : scientific journal%. — Vol%. 4, iss%. 1%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%] %[%[d:Q36350107|Q36350107%]%]%.The HippocampusЯзык? // (nil)[d]. — WD Q36350107.
< %[https://en%.wikiversity%.org/wiki/WikiJournal_of_Medicine/The_Hippocampus The Hippocampus%] :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; //&nbsp;%[%[s:WikiJournal of Medicine|WikiJournal of Medicine%]%] :&nbsp;scientific journal%. — Vol%.&nbsp;4, iss%.&nbsp;1%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%], %[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q36350107|Q36350107%]%]%.
> [https://en.wikiversity.org/wiki/WikiJournal_of_Medicine/The_Hippocampus The Hippocampus]<sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q36350107|&#91;d&#93;]]</sup>. — WD&nbsp;[[d:Q36350107|Q36350107]].
Раздел из выпуска журнала по qid издания (у выпуска есть название)
{{Источник информации
 |заглавие = Top Ten Thematic
 |страницы = 7
 |qid издания = Q29908205
}}
Top Ten Thematic : [англ%.] // %[%[The Art Newspaper%]%]%. — Iss%. 289 : Visitor Figures 2016%. — P%. 7%. — %[%[Международный стандартный сериальный номер|ISSN%]%] %[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%] %[%[d:Q29908205|Q29908205%]%]%.Top Ten ThematicЯзык? // (nil)[d]. —  7. — WD Q29908205.
< Thematic :&nbsp;&lsqb;<abbr title="английский язык">англ%.</abbr>&rsqb; //&nbsp;%[%[The Art Newspaper%]%]%. — Iss%.&nbsp;289 :&nbsp;Visitor Figures 2016%. — P%.&nbsp;7%. — %[%[Международный стандартный сериальный номер|ISSN%]%]&nbsp;%[https://[^ ]+ %w+-%w+%]%. — %[%[Викиданные|WD%]%]&nbsp;%[%[d:Q29908205|Q29908205%]%]%.
> Thematic<sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup> //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q29908205|&#91;d&#93;]]</sup>. — &nbsp;7. — WD&nbsp;[[d:Q29908205|Q29908205]].
Медиа (0/2)
ТестОжидаетсяФактическиРазница
Видеозапись на youtube
{{Источник информации
 |заглавие = Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения
 |qid издателя = Q7817
 |id = 1m_4Y6pHmUw
 |qid издания = Q866
 |язык = ru
 |дата = 2022-07-08
 |дата обращения = 2022-11-22
 |ref = ВОЗ
}}
Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения [видеозапись] // YouTube. — ВОЗ, 2022, 8 июля. — Дата обращения: 22 ноября 2022.Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения // (nil)[d]. — (nil)[d], 2022, 8 июля. — Дата обращения: 22 ноября 2022.
< [https://www.youtube.com/watch?v=1m_4Y6pHmUw Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения] &lsqb;видеозапись&rsqb; //&nbsp;[[YouTube]]. — [[Всемирная организация здравоохранения|ВОЗ]],
> Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q866|&#91;d&#93;]]</sup>. — <b><s>(nil)</s></b><sup class="noprint">[[d:Q7817|&#91;d&#93;]]</sup>,
Аудиозапись на Яндекс.Музыке
{{Источник информации
 |авторы = Ж. Н. Меренкова
 |заглавие = Анемии при беременности
 |ссылка = https://music.yandex.ru/album/10142231/track/70882375?activeTab=track-list
 |тип = профессиональный медицинский подкаст
 |qid издания = Q4537983
 |издатель = Специализированное издательство «Медицинская литература»
 |язык = ru
 |дата = 2020-09-04
 |ref = Меренкова
}}
Меренкова Ж. Н. Анемии при беременности [аудиоконтент] : профессиональный медицинский подкаст // Яндекс Музыка. — Специализированное издательство «Медицинская литература», 2020, 4 сентября.Меренкова Ж. Н. Анемии при беременности : профессиональный медицинский подкаст // (nil)[d]. — Специализированное издательство «Медицинская литература», 2020, 4 сентября. — WD Q4537983.
< &lsqb;аудиоконтент&rsqb; :&nbsp;профессиональный медицинский подкаст //&nbsp;[[Яндекс Музыка]]. — Специализированное издательство «Медицинская литература», 2020, <span class="nowrap">4 сентября</span>.
> :&nbsp;профессиональный медицинский подкаст //&nbsp;<b><s>(nil)</s></b><sup class="noprint">[[d:Q4537983|&#91;d&#93;]]</sup>. — Специализированное издательство «Медицинская литература», 2020, <span class="nowrap">4 сентября</span>. — WD&nbsp;[[d:Q4537983|Q4537983]].
Язык (0/1)
ТестОжидаетсяФактическиРазница
На двух языках
{{Источник информации|Q101483459}}
Whitlam J.[d] Harper Collins Portuguese dictionary : English-Portuguese, Portuguese-English : [англ., португ.] / J. Whitlam, Vitória Davies[d], M. Harland[d]. — Glasgow : HarperCollins UK[d], 1991. — OCLC 370343862. — WD Q101483459.(nil)Язык?. — WD Q101483459.
< <i>Whitlam&nbsp;J.<sup class="noprint">[[d:Q101483146|&#91;d&#93;]]</sup></i> Harper Collins Portuguese dictionary :&nbsp;English-Portuguese, Portuguese-English :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>, <abbr title="португальский язык">португ.</abbr>&rsqb; /&nbsp;J.&nbsp;Whitlam, Vitória Davies<sup class="noprint">[[d:Q101483155|&#91;d&#93;]]</sup>, M.&nbsp;Harland<sup class="noprint">[[d:Q94515430|&#91;d&#93;]]</sup>. — [[Глазго|Glasgow]] :&nbsp;HarperCollins UK<sup class="noprint">[[d:Q1586013|&#91;d&#93;]]</sup>, 1991. — [[Online Computer Library Center|OCLC]]&nbsp;[https://www.worldcat.org/oclc/370343862 370343862]. — [[Викиданные|WD]]&nbsp;
> <b><s>(nil)</s></b><sup class="error" title="Не указан язык (или языки, если их несколько) источника информации.">Язык?</sup>. — WD&nbsp;
Подстановка (0/2)
ТестОжидаетсяФактическиРазница
Подстановка полей из Викиданных
{{Источник информации|Q115962047
 |forceSubst = 1
}}
{{Источник информации|авторы=В. Г. Олифер, Н. А. Олифер|заглавие=Компьютерные сети. Принципы, технологии, протоколы[d]|редакция=4-е изд.|место=Санкт-Петербург|издатель=Питер|дата=2014-11-30|страниц=944|серия=Серия «Учебник для вузов»|isbn=978-5-496-00004-8|язык=ru|qid=Q115962047|офлайн=1}}{{Источник информации|заглавие=(nil)[d]|язык=ru|qid=Q115962047|офлайн=1}}
< информации|авторы=В. Г. Олифер, Н. А. Олифер|заглавие=Компьютерные сети. Принципы&#44; технологии&#44; протоколы<sup class="noprint">[[d:Q115962047|&#91;d&#93;]]</sup>|редакция=4-е изд.|место=Санкт-Петербург|издатель=Питер|дата=2014-11-30|страниц=944|серия=Серия «Учебник для вузов»|isbn=978-5-496-00004-8
> информации|заглавие=<b><s>(nil)</s></b><sup class="noprint">[[d:Q115962047|&#91;d&#93;]]</sup>
Подстановка полей источника, который на английском языке
{{Источник информации|Q116814927
 |forceSubst = 1
}}
{{Источник информации|авторы=P. Talantov, Ravil Niyazov, Галина Михайловна Вирясова[d], Margarita Dranitsyna, Ilya Yasny|заглавие=Unapproved clinical trials in Russia: exception or norm?|ссылка=https://bmcmedethics.biomedcentral.com/articles/10.1186/s12910-021-00617-3%7Cстатус ссылки=открытый доступ|архивная ссылка=http://web.archive.org/web/20210426035711/https://bmcmedethics.biomedcentral.com/articles/10.1186/s12910-021-00617-3%7Cдата архивирования=2021-07-20|издание=BMC Medical Ethics[d]|язык издания=en|тип издания=scientific journal|издатель=BioMed Central, Springer Science+Business Media|дата=2021-04-20|том=22|выпуск=1|статья=46|doi=10.1186/S12910-021-00617-3|pmid=33879151|issn=1472-6939|язык=en|qid=Q116814927|офлайн=1}}{{Источник информации|заглавие=(nil)[d]|язык=ru|qid=Q116814927|офлайн=1}}
< информации|авторы=[[Талантов&#44; Пётр Валентинович|P.&nbsp;Talantov]], Ravil Niyazov, Галина Михайловна Вирясова<sup class="noprint">[[d:Q87133725|&#91;d&#93;]]</sup>, Margarita Dranitsyna, Ilya Yasny|заглавие=Unapproved clinical trials in Russia: exception or norm?|ссылка=https://bmcmedethics.biomedcentral.com/articles/10.1186/s12910-021-00617-3|статус ссылки=открытый доступ|архивная ссылка=http://web.archive.org/web/20210426035711/https://bmcmedethics.biomedcentral.com/articles/10.1186/s12910-021-00617-3|дата архивирования=2021-07-20|издание=BMC Medical Ethics<sup class="noprint">[[d:Q15762173|&#91;d&#93;]]</sup>|язык издания=en|тип издания=scientific journal|издатель=BioMed Central, Springer Science+Business Media|дата=2021-04-20|том=22|выпуск=1|статья=46|doi=10.1186/S12910-021-00617-3|pmid=33879151|issn=1472-6939|язык=en
> информации|заглавие=<b><s>(nil)</s></b><sup class="noprint">[[d:Q116814927|&#91;d&#93;]]</sup>|язык=ru
Предупреждения и ошибки (2/4)
ТестОжидаетсяФактическиРазница
Выдача ошибки об отсутствии ссылки, если задана архивная ссылка
{{Источник информации
 |заглавие = Запись с архивной ссылкой, но без основной
 |архивная ссылка = https://www.webcitation.org/lalalala?url=https://lalalala.local
 |дата архивирования = 2023-08-21
 |язык = en
 |издание = Тесты
 |архивная ссылка на издание = https://www.webcitation.org/lalalala?url=https://lalalala.local
 |дата архивирования издания = 2023-08-21
}}
Запись с архивной ссылкой, но без основной : [англ.] : [арх. 21 августа 2023] // Тесты [арх. 21 августа 2023]. — (Указана архивная ссылка, но не указана основная. Указана архивная ссылка на издание, но не указана основная.).Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value).
< <span class="citation">Запись с архивной ссылкой, но без основной :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; :&nbsp;&lsqb;[https://www.webcitation.org/lalalala?url=https://lalalala.local <abbr title="Архивная копия от указанной даты">арх.</abbr>]&nbsp;21 августа 2023&rsqb; //&nbsp;Тесты &lsqb;[https://www.webcitation.org/lalalala?url=https://lalalala.local <abbr title="Архивная копия от указанной даты">арх.</abbr>]&nbsp;21 августа 2023&rsqb;. — (<span class="error">Указана архивная ссылка, но не указана основная. Указана архивная ссылка на издание, но не указана основная.</span>).</span>
> <strong class="error"><span class="scribunto-error mw-scribunto-error-bfbe9bf5">Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local &#039;abbr&#039; (a nil value).</span></strong>
Выдача ошибки об отсутствии даты архивирования
{{Источник информации
 |заглавие = Запись с архивной ссылкой, но без даты архивирования
 |архивная ссылка = https://www.webcitation.org/lalalala?url=https://lalalala.local
 |ссылка = https://lalalala.local
 |язык = en
 |издание = Тесты
 |архивная ссылка на издание = https://www.webcitation.org/lalalala?url=https://lalalala.local
 |ссылка на издание = https://lalalala.local
}}
Запись с архивной ссылкой, но без даты архивирования : [англ.] // Тесты. — (Указана архивная ссылка, но не указана дата архивирования. Указана архивная ссылка на издание, но не указана дата архивирования.).Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value).
< <span class="citation">[https://lalalala.local Запись с архивной ссылкой, но без даты архивирования] :&nbsp;&lsqb;<abbr title="английский язык">англ.</abbr>&rsqb; //&nbsp;[https://lalalala.local Тесты]. — (<span class="error">Указана архивная ссылка, но не указана дата архивирования. Указана архивная ссылка на издание, но не указана дата архивирования.</span>).</span>
> <strong class="error"><span class="scribunto-error mw-scribunto-error-bfbe9bf5">Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local &#039;abbr&#039; (a nil value).</span></strong>

Примеры

Статьи в научных журналах

Источник Комментарий
(nil)Язык?. — WD Q73118986. Статья в научном журнале, автоматическое получение полей полей
Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value). Статья в научном журнале, ручное заполнение полей
(nil). — WD Q73118986. Статья в научном журнале, автоматическое получение полей полей, русифицированное отображение
(nil)Язык?. — WD Q92544321. Статья в научном журнале, у которой указан PMC, автоматическое получение полей
(nil)Язык?. — WD Q91071822. Статья в научном журнале с 4 авторами, автоматическое получение полей
(nil)Язык?. — WD Q59330138. Статья в научном журнале с 5 авторами, часть из которых известна в Викиданных, автоматическое получение полей
(nil)Язык?. — WD Q91658912. Статья в научном журнале с 5 авторами, часть из которых известна в Викиданных, автоматическое получение полей

Книги и их разделы

Источник Комментарий
Kriz W. Chapter 20 — Structural Organization of the Mammalian KidneyЯзык? / W. Kriz, B. Kaissling // (nil). (Издание?). —  1. —  595—691. — WD Q114595502. Раздел книги, автоматическое заполнение части полей
Ошибка Lua в Модуль:WDFormat на строке 206: attempt to concatenate local 'abbr' (a nil value). Раздел книги, заполнение полей вручную
(nil)Язык?. — WD Q114676884. Книга с явным указанием языка и года издания, автоматическое получение полей
(nil)Язык?. —  1—100. — WD Q114676884. Книга с заданием конкретных страниц, автоматическое получение полей
Глава 1. Самое драгоценноеЯзык? // (nil)[d]. —  15—40. — WD Q114676884. Глава книги, автоматическое получение полей
(nil)Язык?. — WD Q116142494. Книга на английском, автоматическое получение полей
(nil)Язык?. — WD Q114796497. Книга, у которой в Викиданных указана ссылка, автоматическое получение полей
(nil)Язык?. — WD Q114831437. Книга, у которой в Викиданных указана ссылка, автоматическое получение полей
(nil)Язык?. — WD Q115189432. Книга, у которой том имеет название, автоматическое получение полей

Документы

Источник Комментарий
(nil)Язык?. — WD Q19147272. ГОСТ, автоматическое получение полей

Статьи через идентификаторы в рамках издания

Источник Комментарий
(nil)Язык? // (nil)[d]. — Дата обновления: 22 августа 2022. — Дата обращения: 23 октября 2022. — WD Q5375741. Автоматическое заполнение полей по идентификаторам из викиданных
Mars Atmosphere Density ModelЯзык? // (nil)[d]. — 2022, 5 апреля. — Дата обращения: 23 октября 2022. Автоматическое заполнение полей по идентификаторам из викиданных
(nil)Язык? // (nil)[d]. — WD Q114716001. Статья без автора, автоматическое заполнение полей по идентификаторам из викиданных
(nil)Язык? // (nil)[d]. — WD Q114716001. Статья, у которой значится автор, автоматическое заполнение полей по идентификаторам из викиданных
(nil)Язык? // (nil)[d]. — WD Q1768199. Статья из печатной БРЭ, у которой значится автор, автоматическое заполнение полей по идентификаторам из викиданных
(nil)Язык? // (nil)[d]. — WD Q114716001. Статья, у которой значатся несколько авторов, автоматическое заполнение полей по идентификаторам из викиданных

Крупные издания

Источник Комментарий
(nil)Язык?. — WD Q114716001. БРЭ, электронная версия
(nil)Язык?. — WD Q1768199. БРЭ, печатная версия

Видеоматериалы

Источник Комментарий
Зинкевич А. О. Лекция 1. Вводная лекция [(nil)] : Лекция из курса // Python и облачные вычисления в науке. — МГУ. Лекция, ручное задание полей
Деятельность ВОЗ по научно-техническому анализу и прогнозированию в области здравоохранения // (nil)[d]. — (nil)[d], 2022, 8 июля. — Дата обращения: 22 ноября 2022. Видео на youtube, автоматическое получение данных по идентификаторам издателя и площадки

Аудиоматериалы

Источник Комментарий
(nil)Язык?. — WD Q66423099. Песня, автоматическое получение полей из Викиданных

Разработка

См. также

  • WDFormat — модуль форматирования информации из Викиданных согласно задаваемым профилям.
  • WDSource — подмодуль получения информации об источнике из соответствующего элемента Викиданных.
  • Sources — выполняющий схожие c CiteGost функции модуль, на котором основан шаблон {{source}}.

require('strict')

local p = {}

--: https://www.mediawiki.org/wiki/Extension_default_namespaces
local NS_MAIN = 0
local NS_PROJECT = 4
local NS_TEMPLATE = 10
local NS_MODULE = 828
local moduleNamespace = mw.site.namespaces[NS_MODULE].name

local source = require(moduleNamespace .. ':CiteGost/WDSource')
local formatter = require(moduleNamespace .. ':WDFormat')
local f = formatter.f
local wdLang = require(moduleNamespace .. ':WDLang')

local wikidata = require(moduleNamespace .. ':WDCommon')

local i18n = require(moduleNamespace .. ':I18n')

local l10n = i18n.load()

local currentLangObj = mw.getContentLanguage()
local currentLang = currentLangObj:getCode()
local stylesUsed = false

local function commonLangVisible(source, fieldName)
	if not source[fieldName] then
		return false
	end

	if table.getn(source[fieldName]) > 0 then
		for _, lang in ipairs(source[fieldName]) do
			if lang.components and currentLang == lang.components.langCode.value then
				return false
			end
		end
	else
		if source[fieldName].components and currentLang == source[fieldName].components.langCode.value then
			return false
		end
	end
	return true
end

local function langVisible(source)
	return commonLangVisible(source, 'lang')
end

local function mainAuthorVisible(source)
	if not source.authors then
		return false
	end
	if table.getn(source.authors) == 0 or table.getn(source.authors) > 3 then
		return false
	end
	return true
end

local function langPropHintVisible(source)
	if table.getn(source.lang) > 1 then
		if source.lang == source.publishedInLang then
			return true
		end
	end
	return false
end

local function mainPublishedInAuthorVisible(source)
	if not source.publishedInAuthors then
		return false
	end
	if table.getn(source.publishedInAuthors) == 0 or table.getn(source.publishedInAuthors) > 3 then
		return false
	end
	return true
end

local function authorsVisible(source)
	if not source.authors then
		return false
	end
	if table.getn(source.authors) == 1 then
		return false
	end
	return true
end

local function originLangVisible(source)
	if not source.originLang then
		return false
	end
	if source.lang.entity == source.originLang.entity then
		return false
	end
	return source.originLang.entity ~= nil
end

local function publishedInOriginLangVisible(source)
	if not source.publishedInOriginLang then
		return false
	end
	if source.lang.entity == source.publishedInOriginLang.entity then
		return false
	end
	return source.publishedInOriginLang.entity ~= nil
end

local function publisherVisible(source)
	if source.publishedInIsPeriodic and not source.workVersion then
		if source.publisher.retrieved then
			return false
		end
	end
	return true
end

local function locationVisible(source)
	if source.publishedInIsPeriodic and not source.workVersion then
		if source.location.retrieved then
			return false
		end
	end
	return true
end

local function ruwikiAnchor(source)
	if not source.ref then
		return nil
	end

	local anchor = 'CITEREF' .. source.ref.value
    local date = source.date
    if date and date.value and date.value.year then
        anchor = anchor .. date.value.year
    end
    return anchor
end

local function formatTitle(source, processedData, result)
	if processedData.fieldTable.fromLabel then
		if source.workVersion then
			result.text = result.text .. '?'
			result.wikitext = result.wikitext .. '<sup>[[d:Property:P1476|P1476?]]</sup>'
		end
	end
end

local function formatUrlStatus(source, processedData, result)
	if not result.linked then
		return
	end
	local fieldTable = processedData.fieldTable
	if not fieldTable.components then
		return
	end
	local statusTable = fieldTable.components.urlStatus
	if not statusTable then
		return
	end
	
	local classesMap = {
		['Q1193907'] = 'cite-dead-url',
		['Q910845'] = 'cite-paywall-url',
		['Q232932'] = 'cite-open-access-url',
		['Q24707952'] = 'cite-free-access-url',
		['Q107459441'] = 'cite-reg-required-url',
	}
	local statusClass = classesMap[statusTable.entity]
	if not statusClass then
		mw.log('Unknown url status:')
		mw.logObject(statusTable)
		return
	end
	stylesUsed = true
	
	local spanTitle
	if statusTable.value then
		spanTitle = mw.ustring.gsub(statusTable.value, '^%l', mw.ustring.upper)
	else
		spanTitle = ''
	end

	result.wikitext = '<span class="' .. statusClass .. '" title="' .. spanTitle .. '">' .. result.wikitext .. '</span>'
end

local function formatTitleUrlStatus(source, processedData, result)
	if not result.linked then
		return
	end
	formatUrlStatus(source, { fieldTable = source.url }, result)
end

local function formatPublishedInUrlStatus(source, processedData, result)
	if not result.linked then
		return
	end
	formatUrlStatus(source, { fieldTable = source.publishedInUrl }, result)
end

local function formatPublishedInTitle(source, processedData, result)
	if processedData.fieldTable.fromLabel then
		if source.publishedInVersion and not source.publishedInIsHosting then
			result.text = result.text .. '?'
			result.wikitext = result.wikitext .. '<sup>[[d:Property:P1476|P1476?]]</sup>'
		end
	end
end

local function formatArchiveUrl(source, processedData, result)
	local t = processedData.fieldTable
	local archiveUrl = t.components.archiveUrl
	if type(archiveUrl) == 'table' then
		archiveUrl = archiveUrl.value
	end
	local archiveDate = t.components.archiveDate
	if type(archiveDate) == 'table' and archiveDate.value then
		archiveDate = archiveDate.value
	end

	local langObj = mw.getLanguage(processedData.langCode)
	local dateStr = langObj:formatDate('j xg Y', archiveDate.timestamp)

	result.text = 'арх. ' .. dateStr
	result.wikitext = '[' .. archiveUrl .. ' <abbr title="' .. l10n('messages', 'archive-date-hint') .. '">' .. l10n('messages', 'archive-abbreviated') .. '</abbr>]&nbsp;' .. dateStr
end

local function formatDateMonth(source, processedData, result, state)
	local langObj
	if processedData.langCode then
		langObj = mw.getLanguage(processedData.langCode)
	else
		langObj = currentLangObj
	end

	local dateStr
	if source.date.value.day then
		dateStr = langObj:formatDate('j xg', source.date.value.timestamp)
	else
		-- Without this hack formatDate() gives previous month for the 00 day
		local timestamp = string.gsub(source.date.value.timestamp, '-00T00:00:00Z', '-01T00:00:00Z')
		dateStr = langObj:formatDate('F', timestamp)
		if (processedData.capitalize and state.groupEmpty) or processedData.forceCapitalize then
			dateStr = mw.ustring.gsub(dateStr, '^%l', mw.ustring.upper)
		end
	end
	result.text = dateStr
	result.wikitext = '<span class="nowrap">' .. dateStr .. '</span>'
end

local function formatPartsCount(source, processedData, result, state)
	local text
	local prefixByLang = {
		ru = 'в',
		uk = 'у',
		en = 'in',
		be = 'у',
		de = 'in',
		fr = 'en',
		el = 'σε',
		es = 'en',
		ar = 'في',
		no = 'i',
	}

	local prefix = prefixByLang[processedData.langCode]
	if not prefix then
		prefix = ''
	else
		prefix = prefix .. '&nbsp;'
	end
	text = prefix .. tostring(result.text)

	if (processedData.capitalize and state.groupEmpty) or processedData.forceCapitalize then
		text = mw.ustring.gsub(text, '^%l', mw.ustring.upper)
	end

	result.text = text
	result.wikitext = text
end

local function formatMainAuthorInitialsToEnd(source, processedData, result)
	local text = result.text
	local initials, familyName = mw.ustring.match(text, '^(.+%.) ([^%. ]+)$')
	if not initials or not familyName then
		return false
	end
	text = familyName .. '&nbsp;' .. initials
	result.text = text
	result.wikitext = text
end

local function formatTranslatedFrom(source, processedData, result)
	local abbrByLang = {
		el = 'Μετάφρ. από τα',
		ru = 'Пер.&nbsp;с',
		uk = 'Пер.&nbsp;з',
		en = 'Transl.&nbsp;from',
		de = 'Übers. aus dem',
	}
	local supported = abbrByLang[processedData.langCode]
	if supported then
		result.text = supported
		result.wikitext = result.text
	else
		result.text = result.text .. ':'
		result.wikitext = result.text
	end
end

local function formatEditorsLead(source, processedData, result, state)
	local abbrByLang = {
		el = 'επιμ.',
		en = 'ed.',
		es = 'ed.',
		de = 'hrsg.',
		uk = 'ред.',
		no = 'hrsg.',
	}
	local text = abbrByLang[processedData.langCode]
	if (text and state.groupEmpty and processedData.capitalize) or processedData.forceCapitalize then
		text = mw.ustring.gsub(text, '^%l', mw.ustring.upper)
	end
	if text then
		result.text = text
		result.wikitext = text
	end
end

local function formatEditorsInChiefLead(source, processedData, result, state)
	local abbrByLang = {
		el = 'αρχισυντ.',
		en = 'ed.&nbsp;in&nbsp;ch.',
		es = 'ed.&nbsp;jefe',
		de = 'ch.-Red.',
		uk = 'гол.&nbsp;ред.',
		no = 'ch.-Red.',
	}
	local text = abbrByLang[processedData.langCode]
	if (text and state.groupEmpty and processedData.capitalize) or processedData.forceCapitalize then
		text = mw.ustring.gsub(text, '^%l', mw.ustring.upper)
	end
	if text then
		result.text = text
		result.wikitext = text
	end
end

local function formatTranslatorsLead(source, processedData, result, state)
	local abbrByLang = {
		el = 'μεταφρ.',
		en = 'transl.',
		es = 'trad.',
		de = 'übers.',
	}
	local text = abbrByLang[processedData.langCode]
	if (text and state.groupEmpty and processedData.capitalize) or processedData.forceCapitalize then
		text = mw.ustring.gsub(text, '^%l', mw.ustring.upper)
	end
	if text then
		result.text = text
		result.wikitext = text
	end
end

local function formatIllustratorsLead(source, processedData, result, state)
	local abbrByLang = {
		el = 'εικον.',
		en = 'illus.',
	}
	local text = abbrByLang[processedData.langCode]
	if (text and state.groupEmpty and processedData.capitalize) or processedData.forceCapitalize then
		text = mw.ustring.gsub(text, '^%l', mw.ustring.upper)
	end
	if text then
		result.text = text
		result.wikitext = text
	end
end

local function formatPublishedInLink(source, processedData, result)
	if result.linked then
		return
	end

	if source.publishedInUrl and source.publishedInUrl.retrieved and mw.wikibase.getSitelink(processedData.fieldTable.entity) then
		return
	end
	f.link(source, processedData, result)
end

local function formatNonNumber(source, processedData, result)
	if string.match(result.text, '^[%d%-]+$') then
		f.numericalRanges(source, processedData, result)
		return
	elseif string.match(result.text, '^%d[%.%-%s]') then
		f.dash(source, processedData, result)
		return
	end

	if processedData.langCode == 'ru' then
		result.text = '«' .. result.text .. '»'
		result.wikitext = result.text
	end
end

local function replaceAuthors(source, processedData, others)
	local othersText
	local delimiter
	if processedData.langCode == 'ru' then
		othersText = '[и др.]'
		delimiter = ' '
	else
		-- the delimiter would probably be language-dependent
		othersText = '[' .. wikidata.abbr('Q311624', processedData.langCode) .. ']'
		delimiter = ' '
	end
	others = string.gsub(others, '%[%[d:([^%]]+)|[^%]]+%]%]', '(%1)')
	others = string.gsub(others, '<[^>]+>', '')
	local othersWikitext = delimiter .. '<abbr title="' .. others .. '">' .. othersText .. '</abbr>'
	return othersText, othersWikitext
end

local function replaceExceeded(source, processedData, others)
	local othersWikitext = ' <abbr title="' .. others .. '">' .. l10n('messages', 'et-al') .. '</abbr>'
	return l10n('messages', 'et-al'), othersWikitext
end

local function localTitleDelimiter(source)
	if source.issue then
		return ' :&nbsp;'
	else
		return '&nbsp;'
	end
end

local GostProfile = {
	tag = {
		name = 'span',
		classes = { 'citation' },
		attr = {
			-- ref
			id = ruwikiAnchor,
		},
	},
	groups = {
		{
			{
				field = { 'authors', 1 },
				cond = mainAuthorVisible,
				format = { formatMainAuthorInitialsToEnd, f.personReversedNoComma, f.wikilink, f.wikidata },
				tag = {
					name = 'i',
				},
			},
			{
				conflicts = { 'authors', 'publishedInIsHosting' },
				field = { 'publishedInAuthors', 1 },
				cond = mainPublishedInAuthorVisible,
				format = { formatMainAuthorInitialsToEnd, f.personReversedNoComma, f.wikilink, f.wikidata },
				tag = {
					name = 'i',
				},
			},
			{
				delimiter = ' ',
				ensureEnds = '.',
				field = 'title',
				urlField = 'url',
				capitalize = true,
				format = { f.dash, f.link, formatTitleUrlStatus, f.wikisource, f.wikiversity, f.wikibooks, f.resolveWikilink, formatTitle },
			},
			{
				field = 'titleIsMissing',
				delimiter = ' ',
				ensureEnds = '.',
				capitalize = true,
				prefix='(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				suffix = ')',
			},
			{
				delimiter = ' :&nbsp;',
				field = 'subtitle',
				format = { f.dash },
			},
			{
				tag = {
					name = 'sup',
					classes = { 'error' },
					attr = {
						title = l10n('errors', 'missing-lang-explanation'),
					},
				},
				field = 'langIsMissing',
				delimiter = '',
			},
			{
				delimiter = ' ',
				field = 'contentType',
				format = { f.squareBrackets },
			},
			{
				delimiter = ' = ',
				cond = originLangVisible,
				field = 'origin',
				urlField = 'originUrl',
				format = { f.dash, f.link, f.resolveWikilink },
			},
			{
				delimiter = ' :&nbsp;',
				depends = 'origin',
				cond = originLangVisible,
				field = 'originSubtitle',
				format = { f.dash },
			},
		},
		{
			childDelimiter = ' :&nbsp;',
			{
				field = 'lang',
				prefix = '&lsqb;',
				cond = langVisible,
				forceLang = 'default',
				capitalize = false,
				limits = {
					max = 2,
					cutTo = 2,
					replaceBy = replaceExceeded,
				},
				format = { f.abbrWithHint },
				suffix = '&rsqb;',
			},
			{
				cond = langPropHintVisible,
				delimiter = '',
				value = '<sup>[[d:Property:P407|P407?]]</sup>',
			},
			{
				depends = {
					{ isPath=true, 'url', 'archiveUrl'},
					{ isPath=true, 'url', 'archiveDate'},
				},
				field = 'url',
				forceLang = 'default',
				format = { formatArchiveUrl, f.squareBrackets },
			},
			{
				delimiter = ' ',
				prefix = '(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				field = 'wrongArchiveDateFormat',
				itemsDelimiter = ' ',
				suffix = ')'
			},
			{
				conflicts = 'isVolume',
				delimiter = ' : ',
				field = 'partsCount',
				capitalize = false,
				format = { f.quantity, formatPartsCount },
			},
		},
		{
			{
				depends = 'isVolume',
				{
					ensureEnds = '.',
					delimiter = ' ',
					field = 'partsCount',
					format = { f.quantity, formatPartsCount },
				},
				{
					ensureEnds = '.',
					delimiter = ' ',
					depends = 'volume',
					entity = 'Q1238720',
					capitalize = true,
					format = { f.abbr },
				},
				{
					delimiter = '&nbsp;',
					field = 'volume',
					format = { formatNonNumber },
				},
				{
					delimiter = ' :&nbsp;',
					ensureEnds = '.',
					delimiter = ' ',
					depends = 'volume',
					field = 'volumeTitle',
					format = { f.dash },
				},
				{
					ensureEnds = '.',
					delimiter = ' ',
					conflicts = 'volume',
					depends = 'volumeTitle',
					entity = 'Q1238720',
					capitalize = true,
					format = { f.abbr },
				},
				{
					ensureEnds = '.',
					delimiter = '&nbsp;',
					conflicts = 'volume',
					field = 'volumeTitle',
					format = { formatNonNumber },
				},
			},
			{
				depends = 'isIssue',
				{
					ensureEnds = '.',
					delimiter = ' ',
					field = 'partsCount',
					format = { f.quantity, formatPartsCount },
				},
				{
					ensureEnds = '.',
					delimiter = ' ',
					depends = 'issue',
					entity = 'Q28869365',
					capitalize = true,
					format = { f.abbr },
				},
				{
					delimiter = '&nbsp;',
					field = 'issue',
					format = { formatNonNumber },
				},
				{
					delimiter = ' :&nbsp;',
					ensureEnds = '.',
					delimiter = ' ',
					depends = 'issue',
					field = 'issueTitle',
					format = { f.dash },
				},
				{
					ensureEnds = '.',
					delimiter = ' ',
					conflicts = 'issue',
					depends = 'issueTitle',
					entity = 'Q28869365',
					capitalize = true,
					format = { f.abbr },
				},
				{
					ensureEnds = '.',
					delimiter = '&nbsp;',
					conflicts = 'issue',
					field = 'issueTitle',
					format = { formatNonNumber },
				},
			},
			{
				delimiter = ' :&nbsp;',
				field = 'workType',
				capitalize = false,
			},
			{
				delimiter = ' :&nbsp;',
				field = 'info',
				format = { f.dash },
				capitalize = false,
			},
			{
				delimiter = ' :&nbsp;',
				prefix = '&lbrack;',
				field = 'detectedInfo',
				forceLang = 'default',
				format = { f.dash },
				suffix = '&rbrack;',
				capitalize = false,
			},
			{
				depends = 'originLang',
				cond = originLangVisible,
				delimiter = ' :&nbsp;',
				entity = 'Q7553',
				format = { f.abbr, formatTranslatedFrom },
			},
			{
				delimiter = ' ',
				cond = originLangVisible,
				field = 'originLang',
				format = { f.abbrWithHint },
			},
		},
		{
			delimiter = ' /&nbsp;',
			{
				field = 'authors',
				cond = authorsVisible,
				limits = {
					max = 4,
					cutTo = 3,
					replaceBy = replaceAuthors,
				},
				format = { f.person, f.wikilink, f.wikidata },
			},
			{
				depends = 'illustrators',
				delimiter = '; ',
				entity = 'Q644687',
				format = { f.abbr, formatIllustratorsLead },
			},
			{
				delimiter = ': ',
				field = 'illustrators',
				limits = {
					max = 2,
					cutTo = 1,
					replaceBy = replaceAuthors,
				},
				format = { f.person, f.wikilink, f.wikidata },
			},
			{
				depends = 'translators',
				delimiter = '; ',
				entity = 'Q333634',
				format = { f.abbr, formatTranslatorsLead },
			},
			{
				delimiter = ': ',
				field = 'translators',
				limits = {
					max = 2,
					cutTo = 1,
					replaceBy = replaceAuthors,
				},
				format = { f.person, f.wikilink, f.wikidata },
			},
			{
				depends = 'editorInChief',
				delimiter = '; ',
				entity = 'Q589298',
				format = { f.abbr, formatEditorsInChiefLead },
			},
			{
				delimiter = ': ',
				field = 'editorInChief',
				limits = {
					max = 2,
					cutTo = 1,
					replaceBy = replaceAuthors,
				},
				format = { f.person, f.wikilink, f.wikidata },
			},
			{
				depends = 'editors',
				delimiter = '; ',
				entity = 'Q1607826',
				format = { f.abbr, formatEditorsLead },
			},
			{
				delimiter = ': ',
				field = 'editors',
				limits = {
					max = 2,
					cutTo = 1,
					replaceBy = replaceAuthors,
				},
				format = { f.person, f.wikilink, f.wikidata },
			},
		},
		{
			delimiter = ' //&nbsp;',
			conflicts = { 'isVolume', 'isIssue' },
			{
				field = 'publishedIn',
				urlField = 'publishedInUrl',
				capitalize = true,
				format = { f.dash, formatPublishedInLink, formatPublishedInUrlStatus, f.wikisource, f.wikiversity, f.wikibooks, f.resolveWikilink, f.wikidata, formatPublishedInTitle },
			},
			{
				field = 'publishedInTitleIsMissing',
				delimiter = ' ',
				ensureEnds = '.',
				capitalize = true,
				prefix='(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				suffix = ')',
			},
			{
				delimiter = ' :&nbsp;',
				field = 'publishedInSubtitle',
				format = { f.dash },
			},
			{
				delimiter = ' = ',
				cond = publishedInOriginLangVisible,
				field = 'publishedInOrigin',
				format = { f.dash, f.resolveWikilink },
			},
			{
				depends = 'publishedInOriginLang',
				cond = publishedInOriginLangVisible,
				delimiter = ' :&nbsp;',
				entity = 'Q7553',
				format = { f.abbr, formatTranslatedFrom },
			},
			{
				delimiter = ' :&nbsp;',
				field = 'publishedInPartsCount',
				capitalize = false,
				format = { f.quantity, formatPartsCount },
			},
			{
				delimiter = ' ',
				cond = publishedInOriginLangVisible,
				field = 'publishedInOriginLang',
				format = { f.abbrWithHint },
			},
			{
				delimiter = ' ',
				depends = {
					{ isPath=true, 'publishedInUrl', 'archiveUrl'},
					{ isPath=true, 'publishedInUrl', 'archiveDate'},
				},
				field = 'publishedInUrl',
				forceLang = 'default',
				format = { formatArchiveUrl, f.squareBrackets },
			},
			{
				delimiter = ' ',
				prefix = '(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				field = 'wrongPublishedInArchiveDateFormat',
				itemsDelimiter = ' ',
				suffix = ')'
			},
			{
				conflicts = 'isArticle',
				delimiter = ' :&nbsp;',
				field = 'publishedInWorkType',
				capitalize = false,
			},
		},
		{
			delimiter = ' /&nbsp;',
			{
				conflicts = { 'isVolume' },
				{
					conflicts = { 'isArticle', 'publishedInIsPeriodic' },
					depends = 'publishedInEditionType',
					field = 'publishedInAuthors',
					limits = {
						max = 4,
						cutTo = 3,
						replaceBy = replaceAuthors,
					},
					format = { f.person, f.wikilink, f.wikidata },
				},
				{
					depends = { 'publishedInIllustrators', 'publishedInIsPeriodic' },
					delimiter = '; ',
					entity = 'Q644687',
					format = { f.abbr, formatIllustratorsLead },
				},
				{
					delimiter = ': ',
					field = { 'publishedInIllustrators', 'publishedInIsPeriodic' },
					limits = {
						max = 2,
						cutTo = 1,
						replaceBy = replaceAuthors,
					},
					format = { f.person, f.wikilink, f.wikidata },
				},
				{
					depends = { 'publishedInTranslators', 'publishedInIsPeriodic' },
					delimiter = '; ',
					entity = 'Q333634',
					format = { f.abbr, formatTranslatorsLead },
				},
				{
					delimiter = ': ',
					field = { 'publishedInTranslators', 'publishedInIsPeriodic' },
					limits = {
						max = 2,
						cutTo = 1,
						replaceBy = replaceAuthors,
					},
					format = { f.person, f.wikilink, f.wikidata },
				},
			},
			{
				conflicts = { 'isVolume', 'isArticle', 'publishedInIsPeriodic', 'publishedInIsHosting' },
				{
					depends = { 'publishedInEditorInChief' },
					delimiter = '; ',
					entity = 'Q589298',
					format = { f.abbr, formatEditorsInChiefLead },
				},
				{
					delimiter = ': ',
					field = 'publishedInEditorInChief',
					limits = {
						max = 2,
						cutTo = 1,
						replaceBy = replaceAuthors,
					},
					format = { f.person, f.wikilink, f.wikidata },
				},
				{
					depends = { 'publishedInEditors' },
					delimiter = '; ',
					entity = 'Q1607826',
					format = { f.abbr, formatEditorsLead },
				},
				{
					delimiter = ': ',
					field = 'publishedInEditors',
					limits = {
						max = 2,
						cutTo = 1,
						replaceBy = replaceAuthors,
					},
					format = { f.person, f.wikilink, f.wikidata },
				},
			},
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			field = 'edition',
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			{
				conflicts = 'isArticle',
				cond = locationVisible,
				field = 'location',
				itemsDelimiter = '; ',
				format = { f.abbr, f.wikilink, f.wikidata },
			},
			{
				conflicts = 'isArticle',
				cond = publisherVisible,
				field = 'publisher',
				delimiter = ' :&nbsp;',
				format = { f.short, f.wikilink, f.wikidata },
			},
			{
				field = { 'date', sub='year' },
				delimiter = ', ',
			},
			{
				delimiter = ', ',
				field = {'date', sub = 'month'},
				format = { formatDateMonth },
			},
			{
				field = { 'startDate', sub='year' },
				delimiter = ', ',
			},
			{
				delimiter = '—',
				field = { 'endDate', sub='year' },
			},
			{
				delimiter = ', ',
				prefix = '(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				field = 'wrongDateFormat',
				itemsDelimiter = ' ',
				suffix = ')'
			},
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			{
				conflicts = 'isVolume',
				{
					depends = { {'volume', --[[ or --]] 'volumeTitle'} },
					entity = 'Q1238720',
					format = { f.abbr },
				},
				{
					delimiter = '&nbsp;',
					field = 'volume',
					format = { f.numericalRanges },
				},
				{
					delimiter = localTitleDelimiter,
					field = 'volumeTitle',
				},
			},
			{
				conflicts = 'isIssue',
				passthrough = true,
				{
					depends = { {'issue', --[[ or --]] 'issueTitle'} },
					delimiter = ', ',
					entity = 'Q28869365',
					format = { f.abbr },
				},
				{
					delimiter = '&nbsp;',
					field = 'issue',
				},
				{
					delimiter = localTitleDelimiter,
					field = 'issueTitle',
				},
			},
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			childDelimiter = ' — ',
			childEnsureEnds = '.',
			{
				depends = 'articleId',
				entity = 'Q191067',
				format = { f.abbr },
			},
			{
				delimiter = ' ',
				field = 'articleId',
			},
			{
				depends = 'pages',
				entity = 'Q1069725',
				format = { f.unit },
			},
			{
				delimiter = '&nbsp;',
				field = 'pages',
				format = { f.numericalRanges },
			},
			{
				conflicts = 'pages',
				field = 'pagesCount',
				format = { f.quantity },
			},
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			prefix = '(',
			{
				field = 'series',
				format = { f.dash },
			},
			{
				ensureEnds = ';',
				delimiter = ' ',
				field = 'seriesIssue',
			},
			suffix = ')',
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			prefix = '(',
			field = 'comment',
			suffix = ')',
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			childDelimiter = ' — ',
			childEnsureEnds = '.',
			{
				depends = 'dedicatedTo',
				suffix = ':',
				entity = 'P825',
			},
			{
				delimiter = ' ',
				field = 'dedicatedTo',
				format = { f.person, f.wikilink },
			},
			{
				depends = 'lastUpdate',
				value = l10n('messages', 'last-update'),
			},
			{
				delimiter = ': ',
				field = 'lastUpdate',
				forceLang = currentLang,
				format = { f.date },
			},
			{
				delimiter = ' ',
				prefix = '(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				field = 'wrongLastUpdateFormat',
				itemsDelimiter = ' ',
				suffix = ')'
			},
			{
				depends = 'accessDate',
				value = l10n('messages', 'access-date'),
			},
			{
				delimiter = ': ',
				field = 'accessDate',
				forceLang = currentLang,
				format = { f.date },
			},
			{
				delimiter = ' ',
				prefix = '(',
				tag = {
					name = 'span',
					classes = { 'error' },
				},
				field = 'wrongAccessDateFormat',
				itemsDelimiter = ' ',
				suffix = ')'
			},
		},
		{
			delimiter = ' — ',
			ensureEnds = '.',
			childDelimiter = ' — ',
			childEnsureEnds = '.',
			{
				depends = 'issn',
				entity = 'Q131276',
				format = { f.abbr , f.wikilink },
			},
			{
				delimiter = '&nbsp;',
				field = 'issn',
				urlMaskProp = 'P236',
				format = { f.link },
			},
			{
				depends = 'isbn',
				entity = 'Q33057',
				value = 'ISBN',
				format = { f.wikilink },
			},
			{
				delimiter = '&nbsp;',
				field = 'isbn',
				wikilinkMask = l10n('messages', 'wikilink-mask'),
				format = { f.wikilink },
			},
			{
				depends = 'doi',
				entity = 'Q25670',
				value = 'doi',
				capitalize = false,
				format = { f.wikilink },
			},
			{
				delimiter = ':',
				field = 'doi',
				urlMaskProp = 'P356',
				format = { f.lowercase, f.link, formatUrlStatus },
			},
			{
				conflicts = { 'isbn', 'pmid' },
				depends = 'oclc',
				entity = 'Q190593',
				value = 'OCLC',
				format = { f.wikilink },
			},
			{
				conflicts = { 'isbn', 'pmid' },
				delimiter = '&nbsp;',
				field = 'oclc',
				urlMaskProp = 'P243',
				format = { f.link },
			},
			{
				depends = 'pmid',
				entity = 'Q2082879',
				value = 'PMID',
				format = { f.wikilink },
			},
			{
				delimiter = '&nbsp;',
				field = 'pmid',
				urlMaskProp = 'P698',
				format = { f.link },
			},
			{
				depends = 'pmc',
				conflicts = 'workVersion',
				entity = 'Q229883',
				value = 'PMC',
				format = { f.wikilink },
			},
			{
				conflicts = 'workVersion',
				delimiter = '&nbsp;',
				field = 'pmc',
				urlMaskProp = 'P932',
				format = { f.link },
			},
			{
				depends = 's2sic',
				conflicts = 'workVersion',
				entity = 'Q22908627',
				value = 'S2SIC',
				format = { f.wikilink },
			},
			{
				conflicts = 'workVersion',
				delimiter = '&nbsp;',
				field = 's2sic',
				urlMaskProp = 'P8299',
				format = { f.link },
			},
			{
				childDelimiter = ' — ',
				childEnsureEnds = '.',
				{
					entity = 'Q2013',
					value = 'WD',
					isStatic = true,
					format = { f.wikilink },
				},
				{
					delimiter = '&nbsp;',
					field = 'workVersion',
					format = { f.entity, f.forceWikidataLink },
				},
				{
					conflicts = { 'workVersion' },
					delimiter = '&nbsp;',
					field = 'issueVersion',
					format = { f.entity, f.forceWikidataLink },
				},
				{
					conflicts = { 'workVersion', 'issueVersion' },
					delimiter = '&nbsp;',
					field = 'volumeVersion',
					format = { f.entity, f.forceWikidataLink },
				},
				{
					conflicts = { 'workVersion', 'issueVersion', 'volumeVersion', 'isArticle', 'publishedInIsPeriodic', 'publishedInIsHosting', 'id' },
					delimiter = '&nbsp;',
					field = 'publishedInVersion',
					format = { f.entity, f.forceWikidataLink },
				},
			},
		},
		{
			ensureEnds = '.',
			delimiter = ' — ',
			depends = 'unknownFields',
			tag = {
				name = 'span',
				classes = { 'error' },
			},
			prefix = '(',
			{
				value = l10n('errors', 'unknown-template-args')
			},
			{
				delimiter = ' ',
				field = 'unknownFields',
				format = { f.nowiki },
			},
			suffix = ')'
		},
		{
			ensureEnds = '.',
			delimiter = ' — ',
			prefix = '(',
			tag = {
				name = 'span',
				classes = { 'error' },
			},
			field = 'urlIsArchive',
			itemsDelimiter = ' ',
			suffix = ')'
		},
		{
			ensureEnds = '.',
			delimiter = ' — ',
			prefix = '(',
			tag = {
				name = 'span',
				classes = { 'error' },
			},
			field = 'archiveUrlWithoutUrl',
			itemsDelimiter = ' ',
			suffix = ')'
		},
		{
			ensureEnds = '.',
			delimiter = ' — ',
			prefix = '(',
			tag = {
				name = 'span',
				classes = { 'error' },
			},
			field = 'archiveUrlWithoutArchiveDate',
			itemsDelimiter = ' ',
			suffix = ')'
		},
		{
			ensureEnds = '.',
			delimiter = ' — ',
			prefix = '(',
			tag = {
				name = 'span',
				classes = { 'error' },
			},
			field = 'idWithoutPublishedIn',
			itemsDelimiter = ' ',
			suffix = ')'
		},
	},
	ensureEnds = '.',
}

local function argIsEmpty(s)
	return (not s or s == '')
end

local function argIsSet(s)
	return (s and s ~= '')
end

local function strToArray(str, t)
	if type(str) == 'table' then
		if next(str) == nil then
			return t
		end
		return str
	end

	local array = t
	for item in str:gmatch('[^,]+') do
		item = item:gsub('^%s+', ''):gsub('%s+$', '')
		table.insert(array, { value=item })
	end
	return array
end

local function strToDate(str, t)
	local year, month, day = str:match('^(%d+)-(%d+)-(%d+)$')
	if not year then
		year, month = str:match('^(%d+)-(%d+)$')
		if not year then
			year = str:match('^(%d+)$')
		end
	end
	if not year then
		t.erroneous = true
		return t
	end

	year = tonumber(year)
	if month then
		month = tonumber(month)
		if month == 0 then
			month = nil
		end
	end
	if day then
		day = tonumber(day)
		if day == 0 then
			day = nil
		end
	end

	local timestamp
	if day then
		timestamp = string.format("%04d-%02d-%02d", year, month, day)
	elseif month then
		timestamp = string.format("%04d-%02d", year, month)
	else
		timestamp = string.format("%04d", year)
	end
	
	t.value = { year=year, month=month, day=day, timestamp=timestamp }
	return t
end

local function strToDateToParentTable(value, parentTable, name)
	if not parentTable.components then
		parentTable.components = {}
	end

	parentTable.components[name] = strToDate(value, {})
	return parentTable
end


local function waybackStampToArchiveUrl(stamp, url)
	if argIsEmpty(stamp) then
		return nil
	end

	return { value='https://web.archive.org/web/' .. stamp .. '/' .. url.value }
end

local function waybackStampToArchiveDate(stamp)
	if argIsEmpty(stamp) then
		return nil
	end

	local year, month, day = string.match(stamp, '(%d%d%d%d)(%d%d)(%d%d)')
	local timestamp = string.format("%04d-%02d-%02d", year, month, day)
	return { value={ year=year, month=month, day=day, timestamp=timestamp } }
end

local function volumesCountToPartsCount(volumesCount, t)
	t.value = volumesCount
	t.unitEntity = 'Q1238720'
	return t
end

local function entityToTable(entity, t)
	t.entity = entity
	return t
end

local function valueToTable(value, t)
	t.value = value
	return t
end

local function valueToParentTable(value, parentTable, name)
	if not parentTable.components then
		parentTable.components = {}
	end

	local t = {
		value = value,
	}

	parentTable.components[name] = t
	return parentTable
end

local function urlStatusToTable(value, parentTable)
	if not parentTable.components then
		parentTable.components = {}
	end

	local status = l10n('args', 'reversed', 'urlStatus', value)
	local entityMap = {
		dead = 'Q1193907',
		paywall = 'Q910845',
		['open access'] = 'Q232932',
		['free access'] = 'Q24707952',
		['registration required'] = 'Q107459441',
	}

	local t = {
		value = value,
		lang = currentLang,
		entity = entityMap[status],
	}

	parentTable.components.urlStatus = t
	return parentTable
end

local function langCodeToTable(langCode, t)
	t.entity = wdLang.langEntity(langCode)
	t.components = {
		langCode = { value = langCode },
	}
	return t
end

local function pagesToTable(pagesCount, t)
	t.value = pagesCount
	t.unitEntity = 'Q1069725'
	return t
end

local function getTitles(frame)
	if not frame then
		frame = mw.getCurrentFrame()
	end

	local template
	local parentFrame = frame:getParent()
	local selfTitle = frame:getTitle()
	if parentFrame then
		template = parentFrame:getTitle()
	else
		template = selfTitle
	end
	return template, selfTitle
end

local function getTemplateNameFromTitle(template)
	local templateNamespace = mw.site.namespaces[NS_TEMPLATE].name
	return template:gsub('^' .. templateNamespace .. ':', '')
end

local function argsToSource(frame)
	local s = {}

	local argsMap = {
		entity = { entityToTable, 'workVersion' },
		origin = { valueToTable, 'origin' },
		originEntity = { entityToTable, 'origin' },
		originUrl = { valueToTable, 'originUrl' },
		originLang = { langCodeToTable, 'originLang' },
		contentTypeEntity = { entityToTable, 'contentType' },
		contentType = { valueToTable, 'contentType' },
		workTypeEntity = { entityToTable, 'workType' },
		workType = { valueToTable, 'workType' },
		authors = { strToArray, 'authors' },
		illustrators = { strToArray, 'illustrators' },
		editorInChief = { strToArray, 'editorInChief' },
		editors = { strToArray, 'editors' },
		translators = { strToArray, 'translators' },
		title = { valueToTable, 'title' },
		subtitle = { valueToTable, 'subtitle' },
		info = { valueToTable, 'info' },
		volumesCount = { volumesCountToPartsCount, 'partsCount' },
		publishedInEntity = { entityToTable, 'publishedInVersion' },
		publishedIn = { valueToTable, 'publishedIn' },
		publishedInSubtitle = { valueToTable, 'publishedInSubtitle' },
		publishedInOrigin = { valueToTable, 'publishedInOrigin' },
		publishedInOriginLang = { langCodeToTable, 'publishedInOriginLang' },
		publishedInLang = { langCodeToTable, 'publishedInLang' },
		publishedInAuthors = { strToArray, 'publishedInAuthors' },
		publishedInIllustrators = { strToArray, 'publishedInIllustrators' },
		publishedInEditors = { strToArray, 'publishedInEditors' },
		publishedInEditorInChief = { strToArray, 'publishedInEditorInChief' },
		publishedInTranslators = { strToArray, 'publishedInTranslators' },
		publishedInUrl = { valueToTable, 'publishedInUrl' },
		publishedInUrlStatus = { urlStatusToTable, 'publishedInUrl' },
		publishedInVolumes = { volumesCountToPartsCount, 'publishedInPartsCount' },
		publishedInWorkType = { valueToTable, 'publishedInWorkType' },
		comment = { valueToTable, 'comment' },
		edition = { valueToTable, 'edition' },
		location = { valueToTable, 'location' },
		locationEntity = { entityToTable, 'location' },
		publisher = { valueToTable, 'publisher' },
		publisherEntity = { entityToTable, 'publisher' },
		topic = { valueToTable, 'topic' },
		topicEntity = { entityToTable, 'topic' },
		id = { valueToTable, 'id' },
		date = { strToDate, 'date' },
		volume = { valueToTable, 'volume' },
		volumeTitle = { valueToTable, 'volumeTitle' },
		issue = { valueToTable, 'issue' },
		issueTitle = { valueToTable, 'issueTitle' },
		articleId = { valueToTable, 'articleId' },
		pages = { valueToTable, 'pages' },
		pagesCount = { pagesToTable, 'pagesCount' },
		series = { valueToTable, 'series' },
		seriesEntity = { entityToTable, 'series' },
		seriesIssue = { valueToTable, 'seriesIssue' },
		lastUpdate = { strToDate, 'lastUpdate' },
		accessDate = { strToDate, 'accessDate' },
		doi = { valueToTable, 'doi' },
		pmid = { valueToTable, 'pmid' },
		pmc = { valueToTable, 'pmc' },
		s2sic = { valueToTable, 's2sic' },
		oclc = { valueToTable, 'oclc' },
		issn = { strToArray, 'issn' },
		isbn = { strToArray, 'isbn' },
		url = { valueToTable, 'url' },
		urlStatus = { urlStatusToTable, 'url' },
		waybackStamp = { valueToTable, 'waybackStamp' },
		archiveUrl = { valueToParentTable, 'url', 'archiveUrl' },
		archiveDate = { strToDateToParentTable, 'url', 'archiveDate' },
		publishedInArchiveUrl = { valueToParentTable, 'publishedInUrl', 'archiveUrl' },
		publishedInArchiveDate = { strToDateToParentTable, 'publishedInUrl', 'archiveDate' },
		ref = { valueToTable, 'ref' },
		lang = { langCodeToTable, 'lang' },
	}

	local serviceArgs = {
		offline = true,
		forceSubst = true,
		pureWikitext = true,
	}

	local unknownFields = {}
	
	local template, selfTitle = getTitles(frame)

	local ok, templateInfo = pcall(mw.loadData, selfTitle .. '/args:' .. template)
	if ok then
		local parentFrame = frame:getParent()
		for parentKey, value in pairs(parentFrame.args) do
			local key = templateInfo.argsToModule[parentKey]
			if key then
				value = mw.text.trim(value)
				if argIsSet(value) then
					local argMap = argsMap[key]
					if argMap then
						local name = argMap[2]
						local childName = argMap[3]
						local fieldTable = s[name] or {}
						s[name] = argMap[1](value, fieldTable, childName)
					elseif not serviceArgs[key] then
						error(string.format(l10n('errors', 'unknown-module-arg'), key))
					end
				end
			else
				table.insert(unknownFields, { value = parentKey })
			end
		end
	else
		for key, value in pairs(frame.args) do
			if argIsSet(value) then
				local argMap = argsMap[key]
				if argMap then
					local name = argMap[2]
					local childName = argMap[3]
					local fieldTable = s[name] or {}
					s[name] = argMap[1](value, fieldTable, childName)
				elseif not serviceArgs[key] then
					error('Unknown module argument: ' .. key)
				end
			end
		end
	end

	if next(unknownFields) ~= nil then
		s.unknownFields = unknownFields
	end

	if s.publishedInVersion then
		s.publishedIn = entityToTable(s.publishedInVersion.entity, s.publishedIn or {})
	end

	if s.publishedInEditors or s.publishedInEditorInChief then
		s.isLikeBook = { entity = 'Q571' }
	end

	return s
end

local function urlIsArchive(urlTable)
	local url = urlTable.value:gsub('^(https?://)www%.', '%1')
	local isArchive = false
	if url:match('^https?://web%.archive%.org/web/') or url:match('^https?://webcitation%.org/%w+') then
		isArchive = true
	end
	if url:match('^https?://archive%.%a+/%w+') then
		if url:match('^https?://archive%.today/') or
		   url:match('^https?://archive%.ph/') or
		   url:match('^https?://archive%.is/') or
		   url:match('^https?://archive%.li/') or
		   url:match('^https?://archive%.vn/') or
		   url:match('^https?://archive%.fo/') or
		   url:match('^https?://archive%.md/') then
			isArchive = true
		end
	end
	return isArchive
end

local function appendErrorField(s, fieldName, errorKey)
	s[fieldName] = s[fieldName] or {}
	table.insert(s[fieldName], {
		value = l10n('errors', errorKey),
		lang = currentLang,
	})
end

local function checkFields(s)
	local hasErrors = false

	if not s.lang or (table.getn(s.lang) == 0 and s.lang.isDefault) then
		appendErrorField(s, 'langIsMissing', 'missing-lang')
		hasErrors = true
	end
	if s.url then
		if s.url.value then
			if urlIsArchive(s.url) then
				appendErrorField(s, 'urlIsArchive', 'url-contains-archiveUrl')
				hasErrors = true
			end
		elseif s.url.components then
			if s.url.components.archiveUrl then
				appendErrorField(s, 'archiveUrlWithoutUrl', 'archiveUrl-without-url')
				hasErrors = true
			end
			if s.url.components.urlStatus then
				appendErrorField(s, 'urlIsMissing', 'urlStatus-without-url')
				hasErrors = true
			end
		end

		if s.url.components then
			if s.url.components.archiveDate then
				if s.url.components.archiveDate.erroneous then
					appendErrorField(s, 'wrongArchiveDateFormat', 'wrong-date-format')
					hasErrors = true
				end
			elseif s.url.components.archiveUrl then
				appendErrorField(s, 'archiveUrlWithoutArchiveDate', 'archiveUrl-without-archiveDate')
				hasErrors = true
			end
		end
	end

	if s.publishedInUrl then
		if s.publishedInUrl.value then
			if urlIsArchive(s.publishedInUrl) then
				appendErrorField(s, 'urlIsArchive', 'publishedIn-url-contains-archiveUrl')
				hasErrors = true
			end
		elseif s.publishedInUrl.components then
			if s.publishedInUrl.components.archiveUrl then
				appendErrorField(s, 'archiveUrlWithoutUrl', 'publishedIn-archiveUrl-without-url')
				hasErrors = true
			end
			if s.publishedInUrl.components.urlStatus then
				appendErrorField(s, 'urlIsMissing', 'publishedIn-urlStatus-without-url')
				hasErrors = true
			end
		end
	
		if s.publishedInUrl.components then
			if s.publishedInUrl.components.archiveDate then
				if s.publishedInUrl.components.archiveDate.erroneous then
					appendErrorField(s, 'wrongPublishedInArchiveDateFormat', 'wrong-date-format')
					hasErrors = true
				end
			elseif s.publishedInUrl.components.archiveUrl then
				appendErrorField(s, 'archiveUrlWithoutArchiveDate', 'publishedIn-archiveUrl-without-archiveDate')
				hasErrors = true
			end
		end
	end

	if (not s.url or not s.url.value) and (not s.publishedInUrl or not s.publishedInUrl.value) then
		if s.accessDate then
			appendErrorField(s, 'urlIsMissing', 'accessDate-without-url')
			hasErrors = true
		end
	end

	if not s.title then
		appendErrorField(s, 'titleIsMissing', 'missing-title')
		hasErrors = true
	end

	if (s.publishedInUrl or s.publishedInSubtitle) and (not s.publishedIn or not s.publishedIn.value) then
		appendErrorField(s, 'publishedInTitleIsMissing', 'missing-publishedIn')
		hasErrors = true
	end

	if s.date and s.date.erroneous then
		appendErrorField(s, 'wrongDateFormat', 'wrong-date-format')
		hasErrors = true
	end
	if s.accessDate and s.accessDate.erroneous then
		appendErrorField(s, 'wrongAccessDateFormat', 'wrong-date-format')
		hasErrors = true
	end
	if s.lastUpdate and s.lastUpdate.erroneous then
		appendErrorField(s, 'wrongLastUpdateFormat', 'wrong-date-format')
		hasErrors = true
	end

	if s.id and not s.id.retrieved and not (s.publishedIn and s.publishedIn.entity) then
		appendErrorField(s, 'idWithoutPublishedIn', 'id-without-publishedInEntity')
		hasErrors = true
	end
	return hasErrors
end

local function categoriesAllowed()
	if not mw.title.getCurrentTitle():inNamespaces(NS_MAIN, NS_TEMPLATE, NS_PROJECT) then
		return false
	end
	return true
end

local function getErrorCategories(source, categories, templateName)
	local categoriesStr = ''
	for _, cat in ipairs(categories) do
		local found = false
		for _, fieldName in ipairs(cat) do
			if source[fieldName] then
				found = true
				break
			end
		end
		if found then
			categoriesStr = categoriesStr .. '[[' .. mw.ustring.format(l10n('categories', cat.name), templateName) .. ']]'
		end
	end
	return categoriesStr
end

function p.cite(frame)
	local s = argsToSource(frame)
	local langCode
	if not s.offline or not s.offline.value then
		s, langCode = source.fetch(s)
	elseif s.lang then
		if table.getn(s.lang) > 0 then
			for _, lang in ipairs(s.lang) do
				if lang.components and s.lang.components.langCode then
					langCode = lang.components.langCode.value
					break
				end
			end
		else
			if s.lang.components and s.lang.components.langCode then
				langCode = s.lang.components.langCode.value
			end
		end
	else
		langCode = currentLangObj:getCode()
	end

	if s.url and s.url.value and s.waybackStamp then
		if not s.url.components or (not s.url.components.archiveUrl or not s.url.components.archiveUrl.retrieved) then
			if not s.url.components then
				s.url.components = {}
			end
			s.url.components.archiveUrl = waybackStampToArchiveUrl(s.waybackStamp.value, s.url)
			s.url.components.archiveDate = waybackStampToArchiveDate(s.waybackStamp.value)
		end
	end

	local hasErrors = checkFields(s)

	local args = frame.args
	if (mw.isSubsting() or argIsSet(args.forceSubst)) and argIsEmpty(args.pureWikitext) then
		local template, selfTitle = getTitles(frame)
		local argsProfile = require(selfTitle .. '/Subst')
		local langCode = s.lang and s.lang.components and s.lang.components.langCode
		return '{{' .. getTemplateNameFromTitle(template) .. '|' .. formatter.format(argsProfile, s, langCode) .. '}}'
	end
	
	local formattedCitation = formatter.format(GostProfile, s, langCode)

	local styles = ''
	if stylesUsed then
		styles = frame:extensionTag('templatestyles', '', { src = frame:getTitle() .. '/styles.css' })
	end
	
	local categoriesStr = ''

	if not argIsSet(args.noCat) then
		if hasErrors and categoriesAllowed() then
			local template, selfTitle = getTitles(frame)
			local templateName = getTemplateNameFromTitle(template)
			local categories = {
				{
					'unknownFields',
					name = 'Unknown parameters',
				},
				{
					'archiveUrlWithoutUrl',
					'archiveUrlWithoutArchiveDate',
					'urlIsArchive',
					name = 'Wrong archive url parameters',
				},
				{
					name = 'Lang is not specified',
					'langIsMissing',
				},
				{
					'urlIsMissing',
					name = 'URL is not specified',
				},
				{
					'titleIsMissing',
					name = 'Title is not specified',
				},
				{
					'publishedInTitleIsMissing',
					name = 'PublishedIn is not specified',
				},
				{
					'wrongDateFormat',
					'wrongAccessDateFormat',
					'wrongLastUpdateFormat',
					'wrongArchiveDate',
					'wrongPublishedInArchiveDateFormat',
					name = 'Wrong date format',
				},
				{
					'idWithoutPublishedIn',
					name = 'Id without publishedIn',
				},
			}
			categoriesStr = getErrorCategories(s, categories, templateName)
		end
	end
	
	return styles .. formattedCitation .. categoriesStr
end

return p