<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ASources</id>
	<title>Модуль:Sources - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://bukvica.org/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3ASources"/>
	<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;action=history"/>
	<updated>2026-04-11T06:22:57Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=238465&amp;oldid=prev</id>
		<title>Karaby: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=238465&amp;oldid=prev"/>
		<updated>2025-07-27T15:36:44Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 15:36, 27 июля 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Karaby</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=238464&amp;oldid=prev</id>
		<title>Буквица&gt;CupIvan: некорректно сокращались фамилии вида Name van Surname Служебная:GoToComment/c-CupIvan-20250513191900-V1adis1av-20240927215800</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=238464&amp;oldid=prev"/>
		<updated>2025-06-23T20:35:18Z</updated>

		<summary type="html">&lt;p&gt;некорректно сокращались фамилии вида Name van Surname &lt;a href=&quot;/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:GoToComment/c-CupIvan-20250513191900-V1adis1av-20240927215800&quot; class=&quot;new&quot; title=&quot;Служебная:GoToComment/c-CupIvan-20250513191900-V1adis1av-20240927215800 (страница не существует)&quot;&gt;Служебная:GoToComment/c-CupIvan-20250513191900-V1adis1av-20240927215800&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;amp;diff=238464&amp;amp;oldid=123208&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Буквица&gt;CupIvan</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=123208&amp;oldid=prev</id>
		<title>Karaby: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=123208&amp;oldid=prev"/>
		<updated>2021-12-24T09:31:06Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 09:31, 24 декабря 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Karaby</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=123207&amp;oldid=prev</id>
		<title>bukvica&gt;Wikisaurus: грузить Модуль:Languages только тогда, когда нужно (TODO: не выдавать ошибку, если нету - для малых разделов)</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=123207&amp;oldid=prev"/>
		<updated>2020-11-08T23:55:37Z</updated>

		<summary type="html">&lt;p&gt;грузить &lt;a href=&quot;/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Languages&quot; title=&quot;Модуль:Languages&quot;&gt;Модуль:Languages&lt;/a&gt; только тогда, когда нужно (TODO: не выдавать ошибку, если нету - для малых разделов)&lt;/p&gt;
&lt;a href=&quot;https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;amp;diff=123207&amp;amp;oldid=30324&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>bukvica&gt;Wikisaurus</name></author>
	</entry>
	<entry>
		<id>https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=30324&amp;oldid=prev</id>
		<title>Karaby: Новая страница: «local p = {};  local i18nDefaultLanguage = &#039;Q7737&#039;; local i18nEditors = { 	Q150	= &#039;&#039;,			-- French 	Q1321	= &#039;&#039;,			-- Spanish 	Q1860	= &#039;&#039;,			-- English 	Q7737	= &#039;п…»</title>
		<link rel="alternate" type="text/html" href="https://bukvica.org/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Sources&amp;diff=30324&amp;oldid=prev"/>
		<updated>2015-03-06T08:59:49Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local p = {};  local i18nDefaultLanguage = &amp;#039;Q7737&amp;#039;; local i18nEditors = { 	Q150	= &amp;#039;&amp;#039;,			-- French 	Q1321	= &amp;#039;&amp;#039;,			-- Spanish 	Q1860	= &amp;#039;&amp;#039;,			-- English 	Q7737	= &amp;#039;п…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {};&lt;br /&gt;
&lt;br /&gt;
local i18nDefaultLanguage = &amp;#039;Q7737&amp;#039;;&lt;br /&gt;
local i18nEditors = {&lt;br /&gt;
	Q150	= &amp;#039;&amp;#039;,			-- French&lt;br /&gt;
	Q1321	= &amp;#039;&amp;#039;,			-- Spanish&lt;br /&gt;
	Q1860	= &amp;#039;&amp;#039;,			-- English&lt;br /&gt;
	Q7737	= &amp;#039;под ред. &amp;#039;,	-- Russian&lt;br /&gt;
	Q188	= &amp;#039;Hrsg.: &amp;#039;,		-- German&lt;br /&gt;
}&lt;br /&gt;
local i18nVolume = {&lt;br /&gt;
	Q150	= &amp;#039;Vol.&amp;#039;,	-- French&lt;br /&gt;
	Q1321	= &amp;#039;Vol.&amp;#039;,	-- Spanish&lt;br /&gt;
	Q1860	= &amp;#039;Vol.&amp;#039;,	-- English&lt;br /&gt;
	Q7737	= &amp;#039;Т.&amp;#039;,		-- Russian&lt;br /&gt;
}&lt;br /&gt;
local i18nPage = {&lt;br /&gt;
	Q150 = &amp;#039;P.&amp;#039;,	-- French&lt;br /&gt;
	Q188 = &amp;#039;S.&amp;#039;,	-- German&lt;br /&gt;
	Q1321 = &amp;#039;P.&amp;#039;,	-- Spanish&lt;br /&gt;
	Q1860 = &amp;#039;P.&amp;#039;,	-- English&lt;br /&gt;
	Q7737 = &amp;#039;С.&amp;#039;,	-- Russian&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local monthg = {&amp;#039;января&amp;#039;, &amp;#039;февраля&amp;#039;, &amp;#039;марта&amp;#039;, &amp;#039;апреля&amp;#039;, &amp;#039;мая&amp;#039;, &amp;#039;июня&amp;#039;,&lt;br /&gt;
    &amp;#039;июля&amp;#039;, &amp;#039;августа&amp;#039;, &amp;quot;сентября&amp;quot;, &amp;quot;октября&amp;quot;, &amp;quot;ноября&amp;quot;, &amp;quot;декабря&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
local PREFIX_CITEREF = &amp;quot;CITEREF_&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
function p.deepcopy(orig)&lt;br /&gt;
    local orig_type = type(orig)&lt;br /&gt;
    local copy&lt;br /&gt;
    if orig_type == &amp;#039;table&amp;#039; then&lt;br /&gt;
        copy = {}&lt;br /&gt;
        for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
            copy[orig_key] = p.deepcopy( orig_value );&lt;br /&gt;
        end&lt;br /&gt;
	else -- number, string, boolean, etc&lt;br /&gt;
        copy = orig&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local options_commas = { separator = &amp;#039;, &amp;#039;, conjunction = &amp;#039;, &amp;#039;, format = function( src ) return src end, nolinks = false, preferids = false };&lt;br /&gt;
local options_commas_nolinks = { separator = &amp;#039;, &amp;#039;, conjunction = &amp;#039;, &amp;#039;, format = function( src ) return src end, nolinks = true, preferids = false };&lt;br /&gt;
local options_commas_it = { separator = &amp;#039;, &amp;#039;, conjunction = &amp;#039;, &amp;#039;, format = function( src ) return &amp;quot;&amp;#039;&amp;#039;&amp;quot; .. src .. &amp;quot;&amp;#039;&amp;#039;&amp;quot; end, nolinks = false, preferids = false };&lt;br /&gt;
local options_commas_it_nolinks = { separator = &amp;#039;, &amp;#039;, conjunction = &amp;#039;, &amp;#039;, format = function( src ) return &amp;quot;&amp;#039;&amp;#039;&amp;quot; .. src .. &amp;quot;&amp;#039;&amp;#039;&amp;quot; end, nolinks = true , preferids = false };&lt;br /&gt;
local options_citetypes = { separator = &amp;#039; &amp;#039;, conjunction = &amp;#039; &amp;#039;, format = function( src ) return &amp;#039;citetype_&amp;#039; .. src end, nolinks = true , preferids = true };&lt;br /&gt;
&lt;br /&gt;
function renderSource( src )&lt;br /&gt;
	mw.logObject( src );&lt;br /&gt;
&lt;br /&gt;
	if ( src.code and not src.url ) then&lt;br /&gt;
		src.url = mw.wikibase.sitelink( src.code ) or ( &amp;#039;d:&amp;#039; .. src.code )&lt;br /&gt;
		src.url = &amp;#039;:&amp;#039; .. src.url;&lt;br /&gt;
	end&lt;br /&gt;
	src.lang = getSingle( src.lang ) or i18nDefaultLanguage;&lt;br /&gt;
	src.title = src.title or getSingle( src.url ) or &amp;#039;\&amp;#039;\&amp;#039;(unspecified title)\&amp;#039;\&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if ( not src.year and src.date ) then&lt;br /&gt;
		local date = getSingle( src.date );&lt;br /&gt;
		src.year = mw.ustring.sub( date, 9, 12 );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = &amp;#039;&amp;#039;;&lt;br /&gt;
	if ( src.author ) then&lt;br /&gt;
		result = result .. toString( src.author, options_commas_it );&lt;br /&gt;
	end&lt;br /&gt;
	if ( string.len( result ) ~= 0 ) then&lt;br /&gt;
		result = result .. &amp;#039; &amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
 	if ( src.part ) then&lt;br /&gt;
 		if ( src.url ) then&lt;br /&gt;
			local url = getSingle( src.url );&lt;br /&gt;
			if ( string.sub( url, 1, 1 ) == &amp;#039;:&amp;#039; ) then&lt;br /&gt;
				result = result .. &amp;#039;[[&amp;#039; .. url .. &amp;#039;|&amp;#039; .. toString( src.part, options_commas_nolinks ) .. &amp;#039;]]&amp;#039;;&lt;br /&gt;
			else&lt;br /&gt;
				result = result .. &amp;#039;[&amp;#039; .. url .. &amp;#039; &amp;#039; .. toString( src.part, options_commas_nolinks ) .. &amp;#039;]&amp;#039;;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		result = result .. &amp;#039; // &amp;#039; .. toString( src.title, options_commas );&lt;br /&gt;
	else&lt;br /&gt;
		-- title only&lt;br /&gt;
 		if ( src.url ) then&lt;br /&gt;
			local url = getSingle( src.url );&lt;br /&gt;
			if ( string.sub( url, 1, 1 ) == &amp;#039;:&amp;#039; ) then&lt;br /&gt;
				result = result .. &amp;#039;[[&amp;#039; .. url .. &amp;#039;|&amp;#039; .. toString( src.title, options_commas_nolinks ) .. &amp;#039;]]&amp;#039;;&lt;br /&gt;
			else&lt;br /&gt;
				result = result .. &amp;#039;[&amp;#039; .. url .. &amp;#039; &amp;#039; .. toString( src.title, options_commas_nolinks ) .. &amp;#039;]&amp;#039;;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
 	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.originaltitle ) then&lt;br /&gt;
		result = result .. &amp;#039; = &amp;#039; .. toString( src.originaltitle, options_commas );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.publication ) then&lt;br /&gt;
		result = result .. &amp;#039; // &amp;#039; .. toString( src.publication, options_commas_it );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.editor ) then&lt;br /&gt;
		local prefix = i18nEditors[ src.lang ] or i18nEditors[ i18nDefaultLanguage ];&lt;br /&gt;
		result = result .. &amp;#039; / &amp;#039; .. prefix .. toString( src.editor, options_commas );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.place or src.publisher or src.year ) then&lt;br /&gt;
		result = result .. &amp;#039; — &amp;#039;;&lt;br /&gt;
		if ( src.place ) then&lt;br /&gt;
			result = result .. toString( src.place, options_commas );&lt;br /&gt;
			if ( src.publisher or src.year ) then&lt;br /&gt;
				result = result .. &amp;#039;: &amp;#039;;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if ( src.publisher ) then&lt;br /&gt;
			result = result .. toString( src.publisher, options_commas );&lt;br /&gt;
			if ( src.year ) then&lt;br /&gt;
				result = result .. &amp;#039;, &amp;#039;;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if ( src.year ) then&lt;br /&gt;
			result = result .. toString( src.year, options_commas );&lt;br /&gt;
		end&lt;br /&gt;
		result = result .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.volume ) then&lt;br /&gt;
		local letter = i18nVolume[ src.lang ] or i18nVolume[ i18nDefaultLanguage ];&lt;br /&gt;
		result = result .. &amp;#039; — &amp;#039; .. letter .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. toString(src.volume, options_commas ) .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.issue ) then&lt;br /&gt;
		result = result .. &amp;#039; — №&amp;amp;nbsp;&amp;#039; .. toString(src.issue, options_commas ) .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.page ) then&lt;br /&gt;
		local letter = i18nPage[ src.lang ] or i18nPage[ i18nDefaultLanguage ];&lt;br /&gt;
		result = result .. &amp;#039; — &amp;#039; .. letter .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. toString(src.page, options_commas )  .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.isbn13 ) then&lt;br /&gt;
		result = result .. &amp;#039; — ISBN &amp;#039; .. toString( src.isbn13, options_commas );&lt;br /&gt;
	elseif ( src.isbn10 ) then&lt;br /&gt;
		result = result .. &amp;#039; — ISBN &amp;#039; .. toString( src.isbn10, options_commas );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.issn ) then&lt;br /&gt;
		result = result .. &amp;#039; — ISSN &amp;#039; .. toString( src.issn, options_commas );&lt;br /&gt;
	end&lt;br /&gt;
	if ( src.doi ) then&lt;br /&gt;
		result = result .. &amp;#039; — [http://dx.doi.org/&amp;#039; .. mw.uri.encode( src.doi ) .. &amp;#039; DOI&amp;amp;nbsp;&amp;#039; .. src.doi .. &amp;#039;]&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.entityId ) then&lt;br /&gt;
		if ( src.type and src.entityId ) then&lt;br /&gt;
			-- wrap into span to target from JS&lt;br /&gt;
			result = &amp;#039;&amp;lt;span class=&amp;quot;&amp;#039; .. toString( src.type, options_citetypes ) .. &amp;#039;&amp;quot; data-entity-id=&amp;quot;&amp;#039; .. getSingle( src.entityId ) .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. result .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			result = &amp;#039;&amp;lt;span class=&amp;quot;citetype_unknown&amp;quot; data-entity-id=&amp;quot;&amp;#039; .. getSingle( src.entityId ) .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. result .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.accessdate ) then&lt;br /&gt;
			local date = getSingle( src.accessdate );&lt;br /&gt;
			local pattern = &amp;quot;(%-?%d+)%-(%d+)%-(%d+)T&amp;quot;;&lt;br /&gt;
			local y, m, d = mw.ustring.match( date , pattern );&lt;br /&gt;
			y,m,d = tonumber(y),tonumber(m),tonumber(d);&lt;br /&gt;
			result = result .. &amp;quot; &amp;lt;small&amp;gt;Проверено &amp;quot; .. tostring(d) .. &amp;quot; &amp;quot; .. monthg[m]  .. &amp;quot; &amp;quot; .. tostring(y) .. &amp;quot;.&amp;lt;/small&amp;gt;&amp;quot;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return {text = result, code = src.code};&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function renderShortReference( src )&lt;br /&gt;
	src.lang = getSingle( src.lang ) or i18nDefaultLanguage;&lt;br /&gt;
	src.title = src.title or &amp;#039;\&amp;#039;\&amp;#039;(unspecified title)\&amp;#039;\&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local result = &amp;#039;[[#&amp;#039; .. PREFIX_CITEREF .. src.code .. &amp;#039;|&amp;#039;;&lt;br /&gt;
	if ( src.author ) then&lt;br /&gt;
		result = result .. toString( src.author, options_commas_it_nolinks );&lt;br /&gt;
	else&lt;br /&gt;
		result = result .. toString( src.title, options_commas_it_nolinks );&lt;br /&gt;
	end&lt;br /&gt;
	result = result .. &amp;#039;]]&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	if ( src.year ) then&lt;br /&gt;
		result = result .. &amp;#039;, &amp;#039; .. toString( src.year, options_commas );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( src.volume ) then&lt;br /&gt;
		local letter = i18nVolume[ src.lang ] or i18nVolume[ i18nDefaultLanguage ];&lt;br /&gt;
		result = result .. &amp;#039; — &amp;#039; .. letter .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. toString(src.volume, options_commas ) .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.issue ) then&lt;br /&gt;
		result = result .. &amp;#039; — №&amp;amp;nbsp;&amp;#039; .. toString(src.issue, options_commas ) .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( src.page ) then&lt;br /&gt;
		local letter = i18nPage[ src.lang ] or i18nPage[ i18nDefaultLanguage ];&lt;br /&gt;
		result = result .. &amp;#039; — &amp;#039; .. letter .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. toString(src.page, options_commas )  .. &amp;#039;.&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getSingle( value )&lt;br /&gt;
	if ( not value ) then&lt;br /&gt;
		return;&lt;br /&gt;
	end&lt;br /&gt;
	if ( type( value ) == &amp;#039;string&amp;#039; ) then&lt;br /&gt;
		return value;&lt;br /&gt;
	elseif ( type( value ) == &amp;#039;table&amp;#039; ) then&lt;br /&gt;
		if ( value.id ) then&lt;br /&gt;
			return value.id;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for i, tableValue in pairs( value ) do&lt;br /&gt;
			return getSingle( tableValue );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;#039;(unknown)&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function toString( value, options )&lt;br /&gt;
	if ( type( value ) == &amp;#039;string&amp;#039; ) then&lt;br /&gt;
		return options.format( value );&lt;br /&gt;
	elseif ( type( value ) == &amp;#039;table&amp;#039; ) then&lt;br /&gt;
		if ( value.id ) then&lt;br /&gt;
			-- this is link&lt;br /&gt;
			if ( options.preferids ) then&lt;br /&gt;
				return options.format( value.id );&lt;br /&gt;
			else&lt;br /&gt;
				if ( options.nolinks ) then&lt;br /&gt;
					return options.format( value.label or mw.wikibase.label( value.id ) or &amp;#039;\&amp;#039;\&amp;#039;(untranslated title)\&amp;#039;\&amp;#039;&amp;#039; );&lt;br /&gt;
				else&lt;br /&gt;
					return options.format( renderLink( value.id, value.label ) );&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local resultList = {};&lt;br /&gt;
		for i, tableValue in pairs( value ) do&lt;br /&gt;
			table.insert( resultList, toString( tableValue, options ) );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return mw.text.listToText( resultList, options.separator, options.conjunction);&lt;br /&gt;
	else&lt;br /&gt;
		return options.format( &amp;#039;(unknown type)&amp;#039; );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;#039;&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function renderLink( entityId, text )&lt;br /&gt;
	if ( not entityId ) then&lt;br /&gt;
		error(&amp;quot;entityId is not specified&amp;quot;);&lt;br /&gt;
	end&lt;br /&gt;
	local actualText = text or mw.wikibase.label( entityId ) or &amp;#039;\&amp;#039;\&amp;#039;(untranslated)\&amp;#039;\&amp;#039;&amp;#039;;&lt;br /&gt;
	local link = mw.wikibase.sitelink( entityId ) or ( &amp;#039;:d:&amp;#039; .. entityId )&lt;br /&gt;
	return &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. actualText .. &amp;#039;]]&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Expand special types of references when additional data could be found in OTHER entity properties&lt;br /&gt;
function expandSpecials( currentEntity, reference, data )&lt;br /&gt;
	if ( reference.snaks.P248&lt;br /&gt;
			and reference.snaks.P248[1]&lt;br /&gt;
			and reference.snaks.P248[1].datavalue&lt;br /&gt;
			and reference.snaks.P248[1].datavalue.value[&amp;quot;numeric-id&amp;quot;]) then&lt;br /&gt;
		local sourceId = &amp;quot;Q&amp;quot; .. reference.snaks.P248[1].datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
		-- Gemeinsame Normdatei -- specified by P227&lt;br /&gt;
		if ( sourceId == &amp;#039;Q36578&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P227&amp;#039;, data, &amp;#039;title&amp;#039;, { format = function( gnd ) return &amp;#039;Record #&amp;#039; .. gnd; end } );&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P227&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( gnd ) return &amp;#039;http://d-nb.info/gnd/&amp;#039; .. gnd .. &amp;#039;/&amp;#039;; end } );&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- BNF -- specified by P268&lt;br /&gt;
		if ( sourceId == &amp;#039;Q15222191&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P268&amp;#039;, data, &amp;#039;title&amp;#039;, { format = function( id ) return &amp;#039;Record #&amp;#039; .. id; end } );&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P268&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://catalogue.bnf.fr/ark:/12148/cb&amp;#039; .. id; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P268&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Find a Grave -- specified by P535&lt;br /&gt;
		if ( sourceId == &amp;#039;Q63056&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P535&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://www.findagrave.com/cgi-bin/fg.cgi?page=gr&amp;amp;GRid=&amp;#039; .. id; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P535&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Gran Enciclopèdia Catalana -- specified by P1296&lt;br /&gt;
		if ( sourceId == &amp;#039;Q2664168&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P1296&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://www.enciclopedia.cat/enciclop%C3%A8dies/gran-enciclop%C3%A8dia-catalana/EC-GEC-&amp;#039; .. id .. &amp;#039;.xml&amp;#039;; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P1296&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Encyclopædia Britannica online -- specified by P1417&lt;br /&gt;
		if ( sourceId == &amp;#039;Q5375741&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P1417&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://global.britannica.com/EBchecked/topic/&amp;#039; .. id .. &amp;#039;/&amp;#039;; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P1417&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Electronic Jewish Encyclopedia (Elektronnaja Evrejskaja Entsiklopedia) -- specified by P1438&lt;br /&gt;
		if ( sourceId == &amp;#039;Q1967250&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P1438&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://www.eleven.co.il/article/&amp;#039; .. id; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P1438&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- sports-reference.com -- specified by P1447&lt;br /&gt;
		if ( sourceId == &amp;#039;Q18002875&amp;#039; ) then&lt;br /&gt;
			appendMainSnaks( currentEntity, &amp;#039;P1447&amp;#039;, data, &amp;#039;url&amp;#039;, { format = function( id ) return &amp;#039;http://www.sports-reference.com/olympics/athletes/&amp;#039; .. id .. &amp;#039;.html&amp;#039;; end } );&lt;br /&gt;
			expandSpecialsQualifiers( currentEntity, &amp;#039;P1447&amp;#039;, data );&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- do we have appropriate record in P1343 ?&lt;br /&gt;
		local claims = findClaimsByValue( currentEntity, &amp;#039;P1343&amp;#039;, sourceId );&lt;br /&gt;
		if ( claims and #claims ~= 0 ) then&lt;br /&gt;
			appendQualifiers( claims, &amp;#039;P958&amp;#039;, data, &amp;#039;part&amp;#039;, {} );&lt;br /&gt;
			appendQualifiers( claims, &amp;#039;P854&amp;#039;, data, &amp;#039;url&amp;#039;, {} );&lt;br /&gt;
			appendQualifiers( claims, &amp;#039;P357&amp;#039;, data, &amp;#039;title&amp;#039;, {} );&lt;br /&gt;
			appendQualifiers( claims, &amp;#039;P478&amp;#039;, data, &amp;#039;volume&amp;#039;, {} );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function expandSpecialsQualifiers( entity, propertyId, result )&lt;br /&gt;
	if ( entity.claims and entity.claims[propertyId] ) then&lt;br /&gt;
		local claims = entity.claims[propertyId];&lt;br /&gt;
		appendQualifiers( claims, &amp;#039;P958&amp;#039;, result, &amp;#039;part&amp;#039;, {} );&lt;br /&gt;
		appendQualifiers( claims, &amp;#039;P854&amp;#039;, result, &amp;#039;url&amp;#039;, {} );&lt;br /&gt;
		appendQualifiers( claims, &amp;#039;P357&amp;#039;, result, &amp;#039;title&amp;#039;, {} );&lt;br /&gt;
		appendQualifiers( claims, &amp;#039;P478&amp;#039;, result, &amp;#039;volume&amp;#039;, {} );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function findClaimsByValue( entity, propertyId, value )&lt;br /&gt;
	local result = {};&lt;br /&gt;
	if ( entity and entity.claims and entity.claims[propertyId] ) then&lt;br /&gt;
		for i, claim in pairs( entity.claims[propertyId] ) do&lt;br /&gt;
			if ( claim.mainsnak and claim.mainsnak.datavalue ) then&lt;br /&gt;
				local datavalue = claim.mainsnak.datavalue;&lt;br /&gt;
				if ( datavalue.type == &amp;quot;string&amp;quot; and datavalue.value == value &lt;br /&gt;
					or datavalue.type == &amp;quot;wikibase-entityid&amp;quot; and datavalue.value[&amp;quot;entity-type&amp;quot;] == &amp;quot;item&amp;quot; and tostring( datavalue.value[&amp;quot;numeric-id&amp;quot;] ) == mw.ustring.sub( value, 2 ) ) then&lt;br /&gt;
					table.insert( result, claim );&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function appendMainSnaks( entity, propertyId, result, property, options )&lt;br /&gt;
	if ( entity.claims and entity.claims[propertyId] ) then&lt;br /&gt;
		for i, claim in pairs( entity.claims[propertyId] ) do&lt;br /&gt;
			if ( claim.mainsnak and claim.mainsnak.datavalue ) then&lt;br /&gt;
				appendImpl( claim.mainsnak.datavalue, result, property, options );&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function appendSnaks( allSnaks, snakPropertyId, result, property, options )&lt;br /&gt;
	if ( allSnaks and allSnaks[ snakPropertyId ] ) then&lt;br /&gt;
		for k, snak in pairs( allSnaks[ snakPropertyId ] ) do&lt;br /&gt;
			if ( snak and snak.datavalue ) then&lt;br /&gt;
				appendImpl( snak.datavalue, result, property, options );&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function appendQualifiers( claims, qualifierPropertyId, result, property, options )&lt;br /&gt;
	for i, claim in pairs( claims ) do&lt;br /&gt;
		if ( claim.qualifiers and claim.qualifiers[ qualifierPropertyId ] ) then&lt;br /&gt;
			for k, qualifier in pairs( claim.qualifiers[ qualifierPropertyId ] ) do&lt;br /&gt;
				if ( qualifier and qualifier.datavalue ) then&lt;br /&gt;
					appendImpl( qualifier.datavalue, result, property, options );&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function appendImpl( datavalue, result, property, options )&lt;br /&gt;
	if ( datavalue.type == &amp;#039;string&amp;#039; ) then&lt;br /&gt;
		local value = datavalue.value;&lt;br /&gt;
		if ( options.format ) then&lt;br /&gt;
			value = options.format( value );&lt;br /&gt;
		end&lt;br /&gt;
		if ( not result[property] ) then&lt;br /&gt;
			result[property] = {};&lt;br /&gt;
		elseif ( type( result[property] ) == &amp;#039;string&amp;#039; or ( type( result[property] ) == &amp;#039;table&amp;#039; and type( result[property].id ) == &amp;#039;string&amp;#039; ) ) then&lt;br /&gt;
			result[property] = { result[property] };&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( result[property], value);&lt;br /&gt;
	elseif ( datavalue.type == &amp;#039;wikibase-entityid&amp;#039; ) then&lt;br /&gt;
		local value = datavalue.value;&lt;br /&gt;
		if ( not result[property] ) then&lt;br /&gt;
			result[property] = {};&lt;br /&gt;
		elseif ( type( result[property] ) == &amp;#039;string&amp;#039; or ( type( result[property] ) == &amp;#039;table&amp;#039; and type( result[property].id ) == &amp;#039;string&amp;#039; ) ) then&lt;br /&gt;
			result[property] = { result[property] };&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( result[property], { id = &amp;#039;Q&amp;#039; .. value[&amp;quot;numeric-id&amp;quot;] });&lt;br /&gt;
	elseif datavalue.type == &amp;#039;time&amp;#039; then&lt;br /&gt;
		local value = datavalue.value;&lt;br /&gt;
		if ( options.format ) then&lt;br /&gt;
			value = options.format( value );&lt;br /&gt;
		end&lt;br /&gt;
		if ( not result[property] ) then&lt;br /&gt;
			result[property] = {};&lt;br /&gt;
		elseif ( type( result[property] ) == &amp;#039;string&amp;#039; or ( type( result[property] ) == &amp;#039;table&amp;#039; and type( result[property].id ) == &amp;#039;string&amp;#039; ) ) then&lt;br /&gt;
			result[property] = { result[property] };&lt;br /&gt;
		end&lt;br /&gt;
		table.insert( result[property], tostring( value.time ));&lt;br /&gt;
    end &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function expandPublication( data )&lt;br /&gt;
	local publication = data.publication;&lt;br /&gt;
&lt;br /&gt;
	-- use only first one&lt;br /&gt;
	if ( type( publication ) == &amp;#039;table&amp;#039; and publication[1] and publication[1].id ) then&lt;br /&gt;
		data.publication = publication[1];&lt;br /&gt;
		publication = data.publication;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( publication and publication.id ) then&lt;br /&gt;
		populateSourceData( data, publication.id );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function loadSafe( entityId )&lt;br /&gt;
	if ( entityId == nil ) then&lt;br /&gt;
		error(&amp;#039;entityId to load is not specified&amp;#039;);&lt;br /&gt;
	end&lt;br /&gt;
	local status, result = pcall( function() return mw.loadData( &amp;#039;Module:Source/&amp;#039; .. entityId ) end );&lt;br /&gt;
	if ( status == true ) then&lt;br /&gt;
		return true, result;&lt;br /&gt;
	end&lt;br /&gt;
	return false, nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function populateSourceData( data, sourceId )&lt;br /&gt;
	local loaded, sourceData = loadSafe( sourceId );&lt;br /&gt;
	if ( loaded and sourceData ) then&lt;br /&gt;
		populateSourceDataImpl( data, sourceData );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function populateSourceDataImpl( data, sourceData )&lt;br /&gt;
	for key, value in pairs( sourceData ) do&lt;br /&gt;
		if ( not data[key] and key ~= &amp;#039;title&amp;#039; ) then&lt;br /&gt;
			data[key] = value;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if we already have title, than it would be the current one, otherwise move it to publication&lt;br /&gt;
	if ( sourceData.title ) then&lt;br /&gt;
		if ( not data.title ) then&lt;br /&gt;
			data.title = sourceData.title;&lt;br /&gt;
		else&lt;br /&gt;
			if ( not data.publication ) then&lt;br /&gt;
				data.publication = sourceData.title;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function updateWithRef( reference, src )&lt;br /&gt;
	-- specified&lt;br /&gt;
	if ( reference.snaks.O662 ) then&lt;br /&gt;
		local cid = reference.snaks.P662[1].datavalue.value;&lt;br /&gt;
		src.code = src.code .. &amp;#039;-cid:&amp;#039; .. cid;&lt;br /&gt;
		src.title = &amp;#039;Compound Summary for: CID &amp;#039; .. cid;&lt;br /&gt;
		src.url = &amp;#039;http://pubchem.ncbi.nlm.nih.gov/summary/summary.cgi?cid=&amp;#039; .. cid;&lt;br /&gt;
		src.publication = { id = &amp;#039;Q278487&amp;#039;, label = &amp;#039;PubChem&amp;#039; };&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P50&amp;#039;, src, &amp;#039;author&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P364&amp;#039;, src, &amp;#039;lang&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P958&amp;#039;, src, &amp;#039;part&amp;#039;, {} ); -- part&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P357&amp;#039;, src, &amp;#039;title&amp;#039;, {} ); -- title&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P854&amp;#039;, src, &amp;#039;url&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P1433&amp;#039;, src, &amp;#039;publication&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P123&amp;#039;, src, &amp;#039;publisher&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P304&amp;#039;, src, &amp;#039;page&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P478&amp;#039;, src, &amp;#039;volume&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P577&amp;#039;, src, &amp;#039;date&amp;#039;, {} );&lt;br /&gt;
	appendSnaks( reference.snaks, &amp;#039;P813&amp;#039;, src, &amp;#039;accessdate&amp;#039;, {} );&lt;br /&gt;
	return src;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderSource( frame )&lt;br /&gt;
	local arg = frame.args[1];&lt;br /&gt;
	return p.renderSourceImpl( arg );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderSourceImpl( entityId )&lt;br /&gt;
	local value = {};&lt;br /&gt;
	value[&amp;quot;numeric-id&amp;quot;] = string.sub( entityId , 2);&lt;br /&gt;
	local snak = { datavalue = { value =value } };&lt;br /&gt;
	local properties = {};&lt;br /&gt;
	properties[1] = snak;&lt;br /&gt;
	return renderReferenceImpl( {}, { snaks = { P248 = properties } } ).text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderReference( frame, currentEntity, reference )&lt;br /&gt;
	&lt;br /&gt;
	-- template call&lt;br /&gt;
	if ( frame and not currentEntity and not reference ) then&lt;br /&gt;
		local value = {};&lt;br /&gt;
		value[&amp;quot;numeric-id&amp;quot;] = string.sub( frame.args[1] , 2);&lt;br /&gt;
		local snak = { datavalue = { value =value } };&lt;br /&gt;
		local properties = {};&lt;br /&gt;
		properties[1] = snak;&lt;br /&gt;
		&lt;br /&gt;
		currentEntity = mw.wikibase.getEntityObject();&lt;br /&gt;
		reference = { snaks = { P248 = properties } };&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local rendered = renderReferenceImpl( currentEntity, reference );&lt;br /&gt;
&lt;br /&gt;
	if ( not rendered ) then&lt;br /&gt;
		return &amp;#039;&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result;&lt;br /&gt;
	local code = rendered.code or mw.text.encode( rendered.text );&lt;br /&gt;
	result = frame:extensionTag( &amp;#039;ref&amp;#039;, rendered.text, {name = code} ) .. &amp;#039;[[К:Википедия:Статьи с источниками из Викиданных]]&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
	if ( not rendered.found ) then&lt;br /&gt;
		result = result .. &amp;#039;[[К:Википедия:Статьи с неоформленными источниками из Викиданных]]&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function renderReferenceImpl( currentEntity, reference )&lt;br /&gt;
	if ( not reference.snaks ) then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = {};&lt;br /&gt;
	local entityId, found, sourceData;&lt;br /&gt;
	if ( reference.snaks.P248 ) then&lt;br /&gt;
		entityId = &amp;quot;Q&amp;quot; .. reference.snaks.P248[1].datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
		found, sourceData = loadSafe( entityId );&lt;br /&gt;
		data.code = entityId;&lt;br /&gt;
		data.entityId = entityId;&lt;br /&gt;
	else&lt;br /&gt;
		found = true;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	updateWithRef( reference, data );&lt;br /&gt;
	expandSpecials( currentEntity, reference, data );&lt;br /&gt;
	if ( entityId ) then&lt;br /&gt;
		if ( found and sourceData ) then&lt;br /&gt;
			populateSourceDataImpl( data, sourceData );&lt;br /&gt;
		else&lt;br /&gt;
			if ( data.title ) then&lt;br /&gt;
				data.publication = data.publication or { id = entityId, label = mw.wikibase.label( entityId ) };&lt;br /&gt;
			else&lt;br /&gt;
				data.title = { id = entityId, label = mw.wikibase.label( entityId ) };&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	expandPublication( data );&lt;br /&gt;
&lt;br /&gt;
	local rendered;&lt;br /&gt;
	if ( p.short ) then&lt;br /&gt;
		local toStore = p.deepcopy( data );&lt;br /&gt;
		if (not p.list ) then&lt;br /&gt;
			p.list = {};&lt;br /&gt;
		end&lt;br /&gt;
		p.list[toStore.code] = toStore;&lt;br /&gt;
		rendered = renderShortReference( data );&lt;br /&gt;
	else&lt;br /&gt;
		rendered = renderSource( data );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( mw.ustring.len( rendered.text ) == 0 ) then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	rendered.found = found;&lt;br /&gt;
	return rendered;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>Karaby</name></author>
	</entry>
</feed>