<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://www.podebrady.study/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata</id>
	<title>Модуль:Wikidata - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://www.podebrady.study/w/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikidata"/>
	<link rel="alternate" type="text/html" href="https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;action=history"/>
	<updated>2026-04-25T00:31:06Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=2120&amp;oldid=prev</id>
		<title>Ilya Rudomilov в 03:12, 13 апреля 2015</title>
		<link rel="alternate" type="text/html" href="https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=2120&amp;oldid=prev"/>
		<updated>2015-04-13T03:12:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;amp;diff=2120&amp;amp;oldid=2051&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Ilya Rudomilov</name></author>
		
	</entry>
	<entry>
		<id>https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=2051&amp;oldid=prev</id>
		<title>Ilya Rudomilov в 03:01, 13 апреля 2015</title>
		<link rel="alternate" type="text/html" href="https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=2051&amp;oldid=prev"/>
		<updated>2015-04-13T03:01:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 03:01, 13 апреля 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l301&quot; &gt;Строка 301:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 301:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         -- либо строка ошибки nil похоже никогда не возвращается&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         -- либо строка ошибки nil похоже никогда не возвращается&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if (formattedStatement) then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         if (formattedStatement) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             formattedStatement = '&amp;lt;span class=&amp;quot;wikidata-claim&amp;quot; data-wikidata-claim-id=&amp;quot;' .. claim.id .. '&amp;quot;&amp;gt;' .. formattedStatement .. '&amp;lt;/span&amp;gt;'&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             formattedStatement = '&amp;lt;span class=&amp;quot;wikidata-claim&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;quot; data-wikidata-property-id=&amp;quot;' .. string.upper( options.property ) .. '&lt;/ins&gt;&amp;quot; data-wikidata-claim-id=&amp;quot;' .. claim.id .. '&amp;quot;&amp;gt;' .. formattedStatement .. '&amp;lt;/span&amp;gt;'&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             table.insert( formattedClaims, formattedStatement )&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             table.insert( formattedClaims, formattedStatement )&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;         end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ilya Rudomilov</name></author>
		
	</entry>
	<entry>
		<id>https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=1740&amp;oldid=prev</id>
		<title>Ilya Rudomilov: Новая страница: «local i18n = {     [&quot;errors&quot;] = {         [&quot;property-param-not-provided&quot;] = &quot;Не дан параметр свойства&quot;,         [&quot;entity-not-found&quot;] = &quot;Су…»</title>
		<link rel="alternate" type="text/html" href="https://www.podebrady.study/w/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikidata&amp;diff=1740&amp;oldid=prev"/>
		<updated>2015-02-15T13:22:02Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «local i18n = {     [&amp;quot;errors&amp;quot;] = {         [&amp;quot;property-param-not-provided&amp;quot;] = &amp;quot;Не дан параметр свойства&amp;quot;,         [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Су…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local i18n = {&lt;br /&gt;
    [&amp;quot;errors&amp;quot;] = {&lt;br /&gt;
        [&amp;quot;property-param-not-provided&amp;quot;] = &amp;quot;Не дан параметр свойства&amp;quot;,&lt;br /&gt;
        [&amp;quot;entity-not-found&amp;quot;] = &amp;quot;Сущность не найдена.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-claim-type&amp;quot;] = &amp;quot;Неизвестный тип заявления.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-snak-type&amp;quot;] = &amp;quot;Неизвестный тип снэка.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-datavalue-type&amp;quot;] = &amp;quot;Неизвестный тип значения данных.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-entity-type&amp;quot;] = &amp;quot;Неизвестный тип сущности.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-property-module&amp;quot;] = &amp;quot;Вы должны установить и property-module, и property-function.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-claim-module&amp;quot;] = &amp;quot;Вы должны установить и claim-module, и claim-function.&amp;quot;,&lt;br /&gt;
        [&amp;quot;unknown-value-module&amp;quot;] = &amp;quot;Вы должны установить и value-module, и value-function.&amp;quot;,&lt;br /&gt;
        [&amp;quot;property-module-not-found&amp;quot;] = &amp;quot;Модуль для отображения свойства не найден&amp;quot;,&lt;br /&gt;
        [&amp;quot;property-function-not-found&amp;quot;] = &amp;quot;Функция для отображения свойства не найдена&amp;quot;,&lt;br /&gt;
        [&amp;quot;claim-module-not-found&amp;quot;] = &amp;quot;Модуль для отображения утверждения не найден.&amp;quot;,&lt;br /&gt;
        [&amp;quot;claim-function-not-found&amp;quot;] = &amp;quot;Функция для отображения утверждения не найдена.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-module-not-found&amp;quot;] = &amp;quot;Модуль для отображения значения не найден.&amp;quot;,&lt;br /&gt;
        [&amp;quot;value-function-not-found&amp;quot;] = &amp;quot;Функция для отображения значения не найдена.&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;somevalue&amp;quot;] = &amp;quot;''неизвестно''&amp;quot;,&lt;br /&gt;
    [&amp;quot;novalue&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
    [&amp;quot;approximate&amp;quot;] = '&amp;lt;span style=&amp;quot;border-bottom: 1px dotted; cursor: help;&amp;quot; title=&amp;quot;около, приблизительно&amp;quot;&amp;gt;прибл. &amp;lt;/span&amp;gt;',&lt;br /&gt;
    [&amp;quot;presumably&amp;quot;] = '&amp;lt;span style=&amp;quot;border-bottom: 1px dotted; cursor: help;&amp;quot; title=&amp;quot;предположительно&amp;quot;&amp;gt;предп. &amp;lt;/span&amp;gt;',&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- settings, may differ from project to project&lt;br /&gt;
local categoryLinksToEntitiesWithMissingLabel = '[[Категория:Википедия:Статьи со ссылками на элементы Викиданных без русской подписи]]';&lt;br /&gt;
local categoryLocalValuePresent = '[[Категория:Википедия:Статьи с переопределением значения из Викиданных]]';&lt;br /&gt;
local outputReferences = true;&lt;br /&gt;
&lt;br /&gt;
-- sources that shall be omitted if any preffered sources exists&lt;br /&gt;
local deprecatedSources = {&lt;br /&gt;
	Q36578 = true, -- Gemeinsame Normdatei&lt;br /&gt;
	Q63056 = true, -- Find a Grave&lt;br /&gt;
	Q15222191 = true, -- BNF&lt;br /&gt;
};&lt;br /&gt;
local preferredSources = {&lt;br /&gt;
	Q5375741  = true, -- Encyclopædia Britannica Online&lt;br /&gt;
	Q17378135  = true, -- Great Soviet Encyclopedia (1969—1978)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
-- Ссылки на используемые модули, которые потребуются в 99% случаев загрузки страниц (чтобы иметь на виду при переименовании)&lt;br /&gt;
local moduleSources = require('Module:Sources')&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local formatDatavalue, formatEntityId, formatRefs, formatSnak, formatStatement, formatStatementDefault, formatProperty, getSourcingCircumstances, loadCacheSafe, throwError, toBoolean;&lt;br /&gt;
&lt;br /&gt;
local function copyTo( obj, target )&lt;br /&gt;
	for k, v in pairs( obj ) do&lt;br /&gt;
		target[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return target;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadCacheSafe( entityId )&lt;br /&gt;
	local status, result = pcall( function() return mw.loadData( 'Module:WikidataCache/' .. entityId ) end );&lt;br /&gt;
	if ( status == true ) then&lt;br /&gt;
		return result;&lt;br /&gt;
	end&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601(str)&lt;br /&gt;
	if 'table' == type(str) then&lt;br /&gt;
		if str.args and str.args[1] then&lt;br /&gt;
			str = '' .. str.args[1]&lt;br /&gt;
		else&lt;br /&gt;
			return 'unknown argument type: ' .. type( str ) .. ': ' .. table.tostring( str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local Y, M, D = (function(str) &lt;br /&gt;
		local pattern = &amp;quot;(%-?%d+)%-(%d+)%-(%d+)T&amp;quot;&lt;br /&gt;
		local Y, M, D = mw.ustring.match( str, pattern )&lt;br /&gt;
		return tonumber(Y), tonumber(M), tonumber(D)&lt;br /&gt;
	end) (str);&lt;br /&gt;
	local h, m, s = (function(str) &lt;br /&gt;
		local pattern = &amp;quot;T(%d+):(%d+):(%d+)%Z&amp;quot;;&lt;br /&gt;
		local H, M, S = mw.ustring.match( str, pattern);&lt;br /&gt;
		return tonumber(H), tonumber(M), tonumber(S);&lt;br /&gt;
	end) (str);&lt;br /&gt;
	local oh,om = ( function(str)&lt;br /&gt;
		if str:sub(-1)==&amp;quot;Z&amp;quot; then return 0,0 end; -- ends with Z, Zulu time&lt;br /&gt;
		-- matches ±hh:mm, ±hhmm or ±hh; else returns nils&lt;br /&gt;
		local pattern = &amp;quot;([-+])(%d%d):?(%d?%d?)$&amp;quot;;&lt;br /&gt;
		local sign, oh, om = mw.ustring.match( str, pattern);&lt;br /&gt;
		sign, oh, om = sign or &amp;quot;+&amp;quot;, oh or &amp;quot;00&amp;quot;, om or &amp;quot;00&amp;quot;;&lt;br /&gt;
		return tonumber(sign .. oh), tonumber(sign .. om);&lt;br /&gt;
	end )(str)&lt;br /&gt;
	return tonumber(os.time({year=Y, month=M, day=D, hour=(h+oh), min=(m+om), sec=s}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
 Преобразует строку в булевое значение&lt;br /&gt;
&lt;br /&gt;
 Принимает: строковое значение (может отсутствовать)&lt;br /&gt;
 Возвращает: булевое значение true или false, если получается распознать значение, или defaultValue во всех остальных  случаях&lt;br /&gt;
]]&lt;br /&gt;
local function toBoolean( valueToParse, defaultValue )&lt;br /&gt;
    if ( valueToParse ) then&lt;br /&gt;
        if valueToParse == '' or valueToParse == 'false' or valueToParse == '0' then&lt;br /&gt;
            return false&lt;br /&gt;
        end&lt;br /&gt;
        return true&lt;br /&gt;
    end&lt;br /&gt;
    return defaultValue;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для получения сущности (еntity) для текущей страницы&lt;br /&gt;
  Подробнее о сущностях см. d:Wikidata:Glossary/ru&lt;br /&gt;
&lt;br /&gt;
  Принимает: строковый индентификатор (типа P18, Q42)&lt;br /&gt;
  Возвращает: объект таблицу, элементы которой индексируются с нуля&lt;br /&gt;
]]&lt;br /&gt;
local function getEntityFromId( id )&lt;br /&gt;
    if id then&lt;br /&gt;
    	local cached = loadCacheSafe( id );&lt;br /&gt;
    	if ( cached ) then&lt;br /&gt;
    		return cached;&lt;br /&gt;
    	end&lt;br /&gt;
        return mw.wikibase.getEntityObject( id )&lt;br /&gt;
    end&lt;br /&gt;
    local entity = mw.wikibase.getEntityObject();&lt;br /&gt;
    if ( entity ) then&lt;br /&gt;
    	local cached = loadCacheSafe( entity.id );&lt;br /&gt;
    	if ( cached ) then&lt;br /&gt;
    		return cached;&lt;br /&gt;
    	end&lt;br /&gt;
	end&lt;br /&gt;
    return entity;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Внутрення функция для формирования сообщения об ошибке&lt;br /&gt;
 &lt;br /&gt;
  Принимает: ключ элемента в таблице i18n (например entity-not-found)&lt;br /&gt;
  Возвращает: строку сообщения&lt;br /&gt;
]]&lt;br /&gt;
local function throwError( key )&lt;br /&gt;
    error( i18n.errors[key] );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для получения идентификатора сущностей &lt;br /&gt;
&lt;br /&gt;
  Принимает: объект таблицу сущности&lt;br /&gt;
  Возвращает: строковый индентификатор (типа P18, Q42)&lt;br /&gt;
]]&lt;br /&gt;
local function getEntityIdFromValue( value )&lt;br /&gt;
    local prefix = ''&lt;br /&gt;
    if value['entity-type'] == 'item' then&lt;br /&gt;
        prefix = 'Q'&lt;br /&gt;
    elseif value['entity-type'] == 'property' then&lt;br /&gt;
        prefix = 'P'&lt;br /&gt;
    else&lt;br /&gt;
        throwError( 'unknown-entity-type' )&lt;br /&gt;
    end&lt;br /&gt;
    return prefix .. value['numeric-id']&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- проверка на наличие специилизированной функции в опциях&lt;br /&gt;
local function getUserFunction( options, prefix, defaultFunction )&lt;br /&gt;
    -- проверка на указание специализированных обработчиков в параметрах,&lt;br /&gt;
    -- переданных при вызове&lt;br /&gt;
    if options[ prefix .. '-module' ] or options[ prefix .. '-function' ] then&lt;br /&gt;
    	-- проверка на пустые строки в параметрах или их отсутствие &lt;br /&gt;
        if not options[ prefix .. '-module' ] or not options[ prefix .. '-function' ] then&lt;br /&gt;
            throwError( 'unknown-' .. prefix .. '-module' );&lt;br /&gt;
        end&lt;br /&gt;
        -- динамическая загруза модуля с обработчиком указанным в параметре&lt;br /&gt;
        local formatter = require ('Module:' .. options[ prefix .. '-module' ]);&lt;br /&gt;
        if formatter == nil then&lt;br /&gt;
            throwError( prefix .. '-module-not-found' )&lt;br /&gt;
        end&lt;br /&gt;
        local fun = formatter[ options[ prefix .. '-function' ] ]&lt;br /&gt;
        if fun == nil then&lt;br /&gt;
            throwError( prefix .. '-function-not-found' )&lt;br /&gt;
        end&lt;br /&gt;
        return fun;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
   	return defaultFunction;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Выбирает свойства по property id, дополнительно фильтруя их по рангу&lt;br /&gt;
local function selectClaims( context, options, propertyId )&lt;br /&gt;
	if ( not context ) then error( 'context not specified'); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified'); end;&lt;br /&gt;
	if ( not options.entity ) then error( 'options.entity is missing'); end;&lt;br /&gt;
	if ( not propertyId ) then error( 'propertyId not specified'); end;&lt;br /&gt;
&lt;br /&gt;
    local allPropertyClaims = options.entity.claims[ string.upper( propertyId ) ];&lt;br /&gt;
    if ( not allPropertyClaims ) then&lt;br /&gt;
    	return nil;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    --Поиск предпочтительного ранга&lt;br /&gt;
    local requiredRank = 'normal' -- ранг по умолчанию (deprecated не используем)&lt;br /&gt;
    -- если есть хотя бы один preferred, используем только их&lt;br /&gt;
	for i, statement in pairs( allPropertyClaims ) do&lt;br /&gt;
		if (statement.rank == 'preferred') then&lt;br /&gt;
			requiredRank = 'preferred';&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local result = {};&lt;br /&gt;
	if ( allPropertyClaims[0] ) then&lt;br /&gt;
		for i = 0, #allPropertyClaims do&lt;br /&gt;
			local statement = allPropertyClaims[i]&lt;br /&gt;
	        if (statement.rank == requiredRank) then&lt;br /&gt;
	        	result[ #result + 1 ] = statement;&lt;br /&gt;
	        end&lt;br /&gt;
	    end&lt;br /&gt;
	else&lt;br /&gt;
		for i, statement in pairs( allPropertyClaims ) do&lt;br /&gt;
			if (statement.rank == requiredRank) then&lt;br /&gt;
				result[ #result + 1 ] = statement;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    if ( #result == 0 ) then&lt;br /&gt;
    	return nil;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления утверждений (statement)&lt;br /&gt;
  Подробнее о утверждениях см. d:Wikidata:Glossary/ru&lt;br /&gt;
&lt;br /&gt;
  Принимает: таблицу параметров&lt;br /&gt;
  Возвращает: строку оформленного текста, предназначенного для отображения в статье&lt;br /&gt;
]]&lt;br /&gt;
local function formatProperty( options )&lt;br /&gt;
    -- Получение сущности по идентификатору&lt;br /&gt;
    local entity = getEntityFromId( options.entityId )&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return -- throwError( 'entity-not-found' )&lt;br /&gt;
    end&lt;br /&gt;
	-- проверка на присутсвие у сущности заявлений (claim)&lt;br /&gt;
	-- подробнее о заявлениях см. d:Викиданные:Глоссарий&lt;br /&gt;
    if (entity.claims == nil) then&lt;br /&gt;
        return '' --TODO error?&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- improve options&lt;br /&gt;
	options.frame = g_frame;&lt;br /&gt;
	options.entity = entity;&lt;br /&gt;
	options.extends = function( self, newOptions )&lt;br /&gt;
		return copyTo( newOptions, copyTo( self, {} ) )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( options.i18n ) then&lt;br /&gt;
		options.i18n = copyTo( options.i18n, copyTo( i18n, {} ) );&lt;br /&gt;
	else&lt;br /&gt;
		options.i18n = i18n;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create context&lt;br /&gt;
	local context = { formatSnak = formatSnak, formatPropertyDefault = formatPropertyDefault, formatStatementDefault = formatStatementDefault }&lt;br /&gt;
	context.formatProperty = function( options ) &lt;br /&gt;
		local func = getUserFunction( options, 'property', context.formatPropertyDefault );&lt;br /&gt;
		return func( context, options )&lt;br /&gt;
	end;&lt;br /&gt;
	context.formatStatement = function( options, statement ) return formatStatement( context, options, statement ) end;&lt;br /&gt;
	context.formatSnak = function( options, snak, circumstances ) return formatSnak( context, options, snak, circumstances ) end;&lt;br /&gt;
	context.formatRefs = function( options, statement ) return formatRefs( context, options, statement ) end;&lt;br /&gt;
	&lt;br /&gt;
	context.parseTimeFromSnak = function( snak )&lt;br /&gt;
			if ( snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time ) then&lt;br /&gt;
				local timeISO6801 = tostring( snak.datavalue.value.time )&lt;br /&gt;
				return parseISO8601( timeISO6801 );&lt;br /&gt;
			end&lt;br /&gt;
			return nil;&lt;br /&gt;
		end&lt;br /&gt;
	context.getSourcingCircumstances = function( statement ) return getSourcingCircumstances( statement ) end;&lt;br /&gt;
	context.selectClaims = function( options, propertyId ) return selectClaims( context, options, propertyId ) end;&lt;br /&gt;
&lt;br /&gt;
	return context.formatProperty( options );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function formatPropertyDefault( context, options )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	if ( not options.entity ) then error( 'options.entity missing' ); end;&lt;br /&gt;
&lt;br /&gt;
    local claims = context.selectClaims( options, options.property );&lt;br /&gt;
    if (claims == nil) then&lt;br /&gt;
        return '' --TODO error?&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Обход всех заявлений утверждения и с накоплением оформленых предпочтительных &lt;br /&gt;
    -- заявлений в таблице&lt;br /&gt;
    local formattedClaims = {}&lt;br /&gt;
&lt;br /&gt;
    for i, claim in ipairs(claims) do&lt;br /&gt;
        local formattedStatement = context.formatStatement( options, claim )&lt;br /&gt;
        -- здесь может вернуться либо оформленный текст заявления&lt;br /&gt;
        -- либо строка ошибки nil похоже никогда не возвращается&lt;br /&gt;
        if (formattedStatement) then&lt;br /&gt;
            formattedStatement = '&amp;lt;span class=&amp;quot;wikidata-claim&amp;quot; data-wikidata-claim-id=&amp;quot;' .. claim.id .. '&amp;quot;&amp;gt;' .. formattedStatement .. '&amp;lt;/span&amp;gt;'&lt;br /&gt;
            table.insert( formattedClaims, formattedStatement )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- создание текстовой строки со списком оформленых заявлений из таблицы  &lt;br /&gt;
    return mw.text.listToText( formattedClaims, options.separator, options.conjunction )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления одного утверждения (statement)&lt;br /&gt;
&lt;br /&gt;
  Принимает: объект-таблицу утверждение и таблицу параметров&lt;br /&gt;
  Возвращает: строку оформленного текста с заявлением (claim)&lt;br /&gt;
]]&lt;br /&gt;
function formatStatement( context, options, statement )&lt;br /&gt;
	if ( not statement ) then&lt;br /&gt;
		error( 'statement is not specified or nil' );&lt;br /&gt;
	end&lt;br /&gt;
    if not statement.type or statement.type ~= 'statement' then&lt;br /&gt;
        throwError( 'unknown-claim-type' )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local functionToCall = getUserFunction( options, 'claim', context.formatStatementDefault );&lt;br /&gt;
    return functionToCall( context, options, statement );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getSourcingCircumstances( statement )&lt;br /&gt;
	if (not statement) then error('statement is not specified') end;&lt;br /&gt;
&lt;br /&gt;
	local circumstances = {};&lt;br /&gt;
	if ( statement.qualifiers&lt;br /&gt;
			and statement.qualifiers.P1480 ) then&lt;br /&gt;
		for i, qualifier in pairs( statement.qualifiers.P1480 ) do&lt;br /&gt;
			if ( qualifier&lt;br /&gt;
					and qualifier.datavalue&lt;br /&gt;
					and qualifier.datavalue.type == 'wikibase-entityid'&lt;br /&gt;
					and qualifier.datavalue.value&lt;br /&gt;
					and qualifier.datavalue.value[&amp;quot;entity-type&amp;quot;] == 'item' ) then&lt;br /&gt;
				local circumstance = 'Q' .. qualifier.datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
				if ( 'Q18086598' == circumstance ) then&lt;br /&gt;
					circumstances.approximate = true;&lt;br /&gt;
				end&lt;br /&gt;
				if ( 'Q18122778' == circumstance ) then&lt;br /&gt;
					circumstances.presumably = true;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return circumstances;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления одного утверждения (statement)&lt;br /&gt;
&lt;br /&gt;
  Принимает: объект-таблицу утверждение, таблицу параметров,&lt;br /&gt;
  объект-функцию оформления внутренних структур утверждения (snak) и&lt;br /&gt;
  объект-функцию оформления ссылки на источники (reference)&lt;br /&gt;
  Возвращает: строку оформленного текста с заявлением (claim)&lt;br /&gt;
]]&lt;br /&gt;
function formatStatementDefault( context, options, statement )&lt;br /&gt;
	if (not context) then error('context is not specified') end;&lt;br /&gt;
	if (not options) then error('options is not specified') end;&lt;br /&gt;
	if (not statement) then error('statement is not specified') end;&lt;br /&gt;
&lt;br /&gt;
	local circumstances = context.getSourcingCircumstances( statement );&lt;br /&gt;
&lt;br /&gt;
	if ( options.references ) then&lt;br /&gt;
    	return context.formatSnak( options, statement.mainsnak, circumstances ) .. context.formatRefs( options, statement );&lt;br /&gt;
    else&lt;br /&gt;
    	return context.formatSnak( options, statement.mainsnak, circumstances );&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления части утверждения (snak)&lt;br /&gt;
  Подробнее о snak см. d:Викиданные:Глоссарий&lt;br /&gt;
&lt;br /&gt;
  Принимает: таблицу snak объекта (main snak или же snak от квалификатора) и таблицу опций&lt;br /&gt;
  Возвращает: строку оформленного викитекста&lt;br /&gt;
]]&lt;br /&gt;
function formatSnak( context, options, snak, circumstances )&lt;br /&gt;
	circumstances = circumstances or {};&lt;br /&gt;
	local hash = '';&lt;br /&gt;
	local mainSnakClass = '';&lt;br /&gt;
	if ( snak.hash ) then&lt;br /&gt;
		hash = ' data-wikidata-hash=&amp;quot;' .. snak.hash .. '&amp;quot;';&lt;br /&gt;
	else&lt;br /&gt;
		mainSnakClass = ' wikidata-main-snak';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local before = '&amp;lt;span class=&amp;quot;wikidata-snak ' .. mainSnakClass .. '&amp;quot;' .. hash .. '&amp;gt;'&lt;br /&gt;
	local after = '&amp;lt;/span&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
    if snak.snaktype == 'somevalue' then&lt;br /&gt;
        return before .. options.i18n['somevalue'] .. after;&lt;br /&gt;
    elseif snak.snaktype == 'novalue' then&lt;br /&gt;
        return before .. options.i18n['novalue'] .. after;&lt;br /&gt;
    elseif snak.snaktype == 'value' then&lt;br /&gt;
		if ( circumstances.presumably ) then&lt;br /&gt;
			before = before .. options.i18n.presumably;&lt;br /&gt;
		end&lt;br /&gt;
		if ( circumstances.approximate ) then&lt;br /&gt;
			before = before .. options.i18n.approximate;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
        return before .. formatDatavalue( context, options, snak.datavalue ) .. after;&lt;br /&gt;
    else&lt;br /&gt;
        throwError( 'unknown-snak-type' );&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления объектов-значений с географическими координатами&lt;br /&gt;
&lt;br /&gt;
  Принимает: объект-значение и таблицу параметров,&lt;br /&gt;
  Возвращает: строку оформленного текста&lt;br /&gt;
]]&lt;br /&gt;
function formatGlobeCoordinate( value, options )&lt;br /&gt;
	-- проверка на требование в параметрах вызова на возврат сырого значения &lt;br /&gt;
    if options['subvalue'] == 'latitude' then -- широты&lt;br /&gt;
        return value['latitude']&lt;br /&gt;
    elseif options['subvalue'] == 'longitude' then -- долготы&lt;br /&gt;
        return value['longitude']&lt;br /&gt;
    else&lt;br /&gt;
    	-- в противном случае формируются параметры для вызова шаблона {{coord}}&lt;br /&gt;
    	-- нужно дописать в документации шаблона, что он отсюда вызывается, и что&lt;br /&gt;
    	-- любое изменние его парамеров  должно быть согласовано с кодом тут&lt;br /&gt;
        local eps = 0.0000001 -- &amp;lt; 1/360000&lt;br /&gt;
        local globe = '' -- TODO&lt;br /&gt;
        local lat = {}&lt;br /&gt;
        lat['abs'] = math.abs(value['latitude'])&lt;br /&gt;
        lat['ns'] = value['latitude'] &amp;gt;= 0 and 'N' or 'S'&lt;br /&gt;
        lat['d'] = math.floor(lat['abs'] + eps)&lt;br /&gt;
        lat['m'] = math.floor((lat['abs'] - lat['d']) * 60 + eps)&lt;br /&gt;
        lat['s'] = math.max(0, ((lat['abs'] - lat['d']) * 60 - lat['m']) * 60)&lt;br /&gt;
        local lon = {}&lt;br /&gt;
        lon['abs'] = math.abs(value['longitude'])&lt;br /&gt;
        lon['ew'] = value['longitude'] &amp;gt;= 0 and 'E' or 'W'&lt;br /&gt;
        lon['d'] = math.floor(lon['abs'] + eps)&lt;br /&gt;
        lon['m'] = math.floor((lon['abs'] - lon['d']) * 60 + eps)&lt;br /&gt;
        lon['s'] = math.max(0, ((lon['abs'] - lon['d']) * 60 - lon['m']) * 60)&lt;br /&gt;
        local coord = '{{coord'&lt;br /&gt;
        if (value['precision'] == nil) or (value['precision'] &amp;lt; 1/60) then -- по умолчанию с точностью до секунды&lt;br /&gt;
            coord = coord .. '|' .. lat['d'] .. '|' .. lat['m'] .. '|' .. lat['s'] .. '|' .. lat['ns']&lt;br /&gt;
            coord = coord .. '|' .. lon['d'] .. '|' .. lon['m'] .. '|' .. lon['s'] .. '|' .. lon['ew']&lt;br /&gt;
        elseif value['precision'] &amp;lt; 1 then&lt;br /&gt;
            coord = coord .. '|' .. lat['d'] .. '|' .. lat['m'] .. '|' .. lat['ns']&lt;br /&gt;
            coord = coord .. '|' .. lon['d'] .. '|' .. lon['m'] .. '|' .. lon['ew']&lt;br /&gt;
        else&lt;br /&gt;
            coord = coord .. '|' .. lat['d'] .. '|' .. lat['ns']&lt;br /&gt;
            coord = coord .. '|' .. lon['d'] .. '|' .. lon['ew']&lt;br /&gt;
        end&lt;br /&gt;
        coord = coord .. '|globe:' .. globe&lt;br /&gt;
        if options['display'] then&lt;br /&gt;
            coord = coord .. '|display=' .. options.display&lt;br /&gt;
        else&lt;br /&gt;
            coord = coord .. '|display=title'&lt;br /&gt;
        end&lt;br /&gt;
        coord = coord .. '}}'&lt;br /&gt;
&lt;br /&gt;
        return g_frame:preprocess(coord)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDefaultValueFunction( datavalue )&lt;br /&gt;
    -- вызов обработчиков по умолчанию для известных типов значений&lt;br /&gt;
    if datavalue.type == 'wikibase-entityid' then&lt;br /&gt;
    	-- идентификатор сущности&lt;br /&gt;
        return function( context, options, value ) return formatEntityId( getEntityIdFromValue( value ), options ) end;&lt;br /&gt;
    elseif datavalue.type == 'string' then&lt;br /&gt;
    	-- строка&lt;br /&gt;
        return function( context, options, value ) return value end;&lt;br /&gt;
    elseif datavalue.type == 'monolingualtext' then&lt;br /&gt;
    	-- моноязычный текст (строка с указанием языка)&lt;br /&gt;
        return function( context, options, value ) return '&amp;lt;span class=&amp;quot;lang&amp;quot; lang=&amp;quot;' .. value.language .. '&amp;quot;&amp;gt;' .. value.text .. '&amp;lt;/span&amp;gt;' end;&lt;br /&gt;
    elseif datavalue.type == 'globecoordinate' then&lt;br /&gt;
    	-- географические координаты&lt;br /&gt;
        return function( context, options, value ) return formatGlobeCoordinate( value, options )  end;&lt;br /&gt;
    elseif datavalue.type == 'quantity' then&lt;br /&gt;
        return function( context, options, value )&lt;br /&gt;
	    	-- диапазон значений&lt;br /&gt;
	        local amount = string.gsub(value['amount'], '^%+', '')&lt;br /&gt;
	        local lang = mw.language.new( 'ru' )&lt;br /&gt;
	        return lang:formatNum( tonumber( amount ) )&lt;br /&gt;
        end;&lt;br /&gt;
    elseif datavalue.type == 'time' then&lt;br /&gt;
        return function( context, options, value )&lt;br /&gt;
			local moduleDate = require('Module:Wikidata/date')&lt;br /&gt;
	    	return moduleDate.formatDate( context, options, value );&lt;br /&gt;
        end;&lt;br /&gt;
    else&lt;br /&gt;
    	-- во всех стальных случаях возвращаем ошибку&lt;br /&gt;
        throwError( 'unknown-datavalue-type' )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления значений (value)&lt;br /&gt;
  Подробнее о значениях  см. d:Wikidata:Glossary/ru&lt;br /&gt;
&lt;br /&gt;
  Принимает: объект-значение и таблицу параметров,&lt;br /&gt;
  Возвращает: строку оформленного текста&lt;br /&gt;
]]&lt;br /&gt;
function formatDatavalue( context, options, datavalue )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	if ( not datavalue ) then error( 'datavalue not specified' ); end;&lt;br /&gt;
	if ( not datavalue.value ) then error( 'datavalue.value is missng' ); end;&lt;br /&gt;
&lt;br /&gt;
    -- проверка на указание специализированных обработчиков в параметрах,&lt;br /&gt;
    -- переданных при вызове&lt;br /&gt;
    context.formatValueDefault = getDefaultValueFunction( datavalue );&lt;br /&gt;
    local functionToCall = getUserFunction( options, 'value', context.formatValueDefault );&lt;br /&gt;
    return functionToCall( context, options, datavalue.value );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Небольшой словарь упрощенного отображения (TODO: надо сделать расширенный с учётом даты)&lt;br /&gt;
local simpleReplaces = {&lt;br /&gt;
	Q30 = '[[Соединённые Штаты Америки|США]]',&lt;br /&gt;
	Q148 = '[[Китайская Народная Республика|КНР]]',&lt;br /&gt;
	Q183 = '[[Германия]]',&lt;br /&gt;
	Q258 = '[[Южно-Африканская Республика|ЮАР]]',&lt;br /&gt;
	Q423 = '[[Корейская Народно-Демократическая Республика|КНДР]]',&lt;br /&gt;
	Q2184 = '[[Российская Советская Федеративная Социалистическая Республика|РСФСР]]',&lt;br /&gt;
	Q2895 = '[[Белорусская Советская Социалистическая Республика|Белорусская ССР]]',&lt;br /&gt;
	Q15180 = '[[Союз Советских Социалистических Республик|СССР]]',&lt;br /&gt;
	Q16957 = '[[Германская Демократическая Республика|ГДР]]',&lt;br /&gt;
	Q130229 = '[[Грузинская Советская Социалистическая Республика|Грузинская ССР]]',&lt;br /&gt;
	Q130280 = '[[Эстонская Советская Социалистическая Республика|Эстонская ССР]]',&lt;br /&gt;
	Q131337 = '[[Азербайджанская Советская Социалистическая Республика|Азербайджанская ССР]]',&lt;br /&gt;
	Q132856 = '[[Армянская Советская Социалистическая Республика|Армянская ССР]]',&lt;br /&gt;
	Q133356 = '[[Украинская Советская Социалистическая Республика|Украинская ССР]]',&lt;br /&gt;
	Q168811 = '[[Казахская Советская Социалистическая Республика|Казахская ССР]]',&lt;br /&gt;
	Q170895 = '[[Молдавская Советская Социалистическая Республика|Молдавская ССР]]',&lt;br /&gt;
	Q173761 = '[[Литовская Советская Социалистическая Республика|Литовская ССР]]',&lt;br /&gt;
	Q192180 = '[[Латвийская Советская Социалистическая Республика|Латвийская ССР]]',&lt;br /&gt;
	Q199707 = '[[Туркменская Советская Социалистическая Республика|Туркменская ССР]]',&lt;br /&gt;
	Q199711 = '[[Таджикская Советская Социалистическая Республика|Таджикская ССР]]',&lt;br /&gt;
	Q484578 = '[[Узбекская Советская Социалистическая Республика|Узбекская ССР]]',&lt;br /&gt;
	Q809806 = '[[Башкирская Автономная Советская Социалистическая Республика|Башкирская АССР]]',&lt;br /&gt;
	Q1157215 = '[[Дагестанская Автономная Советская Социалистическая Республика|Дагестанская АССР]]',&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления идентификатора сущности&lt;br /&gt;
&lt;br /&gt;
  Принимает: строку индентификатора (типа Q42) и таблицу параметров,&lt;br /&gt;
  Возвращает: строку оформленного текста&lt;br /&gt;
]]&lt;br /&gt;
function formatEntityId( entityId, options )&lt;br /&gt;
	-- получение локализованного названия &lt;br /&gt;
    local label = nil;&lt;br /&gt;
    if ( options.text and options.text ~= '' ) then&lt;br /&gt;
        label = options.text&lt;br /&gt;
    else&lt;br /&gt;
    	if ( simpleReplaces[entityId] ) then&lt;br /&gt;
			return simpleReplaces[entityId];&lt;br /&gt;
		end&lt;br /&gt;
		label = mw.wikibase.label( entityId );&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	-- получение ссылки по идентификатору&lt;br /&gt;
    local link = mw.wikibase.sitelink( entityId )&lt;br /&gt;
    if link then&lt;br /&gt;
        if label then&lt;br /&gt;
            return '[[' .. link .. '|' .. label .. ']]'&lt;br /&gt;
        else&lt;br /&gt;
            return '[[' .. link .. ']]'&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if label then&lt;br /&gt;
        return label&lt;br /&gt;
    end&lt;br /&gt;
    -- сообщение об отсутвии локализованного названия&lt;br /&gt;
    -- not good, but better than nothing&lt;br /&gt;
    return '[[d:' .. entityId .. '|' .. entityId .. ']]&amp;lt;span style=&amp;quot;border-bottom: 1px dotted; cursor: help; white-space: nowrap&amp;quot; title=&amp;quot;В Викиданных нет русской подписи к элементу. Вы можете помочь, указав русский вариант подписи.&amp;quot;&amp;gt;?&amp;lt;/span&amp;gt;' .. categoryLinksToEntitiesWithMissingLabel;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ &lt;br /&gt;
  Функция для оформления утверждений (statement)&lt;br /&gt;
  Подробнее о утверждениях см. d:Wikidata:Glossary/ru&lt;br /&gt;
&lt;br /&gt;
  Принимает: таблицу параметров&lt;br /&gt;
  Возвращает: строку оформленного текста, предназначенного для отображения в статье&lt;br /&gt;
]]&lt;br /&gt;
-- устаревшее имя, не использовать&lt;br /&gt;
function p.formatStatements( frame )&lt;br /&gt;
	return p.formatProperty( frame );&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatProperty( frame )&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    local plain = toBoolean( frame.args.plain, false );&lt;br /&gt;
    frame.args.nocat = toBoolean( frame.args.nocat, false );&lt;br /&gt;
    frame.args.references = toBoolean( frame.args.references, true );&lt;br /&gt;
&lt;br /&gt;
    -- проверка на отсутствие обязательного параметра property &lt;br /&gt;
    if not frame.args.property then&lt;br /&gt;
        throwError( 'property-param-not-provided' )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
-- если значение передано в параметрах вызова то выводим только его&lt;br /&gt;
    if frame.args.value and frame.args.value ~= '' then&lt;br /&gt;
        if plain or frame.args.nocat or frame:callParserFunction( '#property', frame.args.property )=='' then&lt;br /&gt;
                -- опция, запрещающая оформление значения, поэтому никак не трогаем&lt;br /&gt;
                return frame.args.value&lt;br /&gt;
        else&lt;br /&gt;
                -- если трогать всё-таки можно, добавляем категорию-маркер&lt;br /&gt;
                return args.value .. categoryLocalValuePresent;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if ( plain ) then -- вызова стандартного обработчика без оформления, если передана опция plain&lt;br /&gt;
    	return frame:callParserFunction( '#property', frame.args.property );&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	g_frame = frame&lt;br /&gt;
	-- после проверки всех аргументов -- вызов функции оформления для свойства (набора утверждений)&lt;br /&gt;
    return formatProperty( frame.args )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
  Функция оформления ссылок на источники (reference) &lt;br /&gt;
  Подробнее о ссылках на источники см. d:Wikidata:Glossary/ru&lt;br /&gt;
&lt;br /&gt;
  Экспортируется в качестве зарезервированной точки для вызова из функций-расширения вида claim-module/claim-function через context&lt;br /&gt;
  Вызов из других модулей напрямую осуществляться не должен (используйте frame:expandTemplate вместе с одним из специлизированных шаблонов вывода значения свойства).&lt;br /&gt;
&lt;br /&gt;
  Принимает: объект-таблицу утверждение&lt;br /&gt;
  Возвращает: строку оформленных ссылок для отображения в статье&lt;br /&gt;
]]&lt;br /&gt;
function formatRefs( context, options, statement )&lt;br /&gt;
	if ( not context ) then error( 'context not specified' ); end;&lt;br /&gt;
	if ( not options ) then error( 'options not specified' ); end;&lt;br /&gt;
	if ( not options.entity ) then error( 'options.entity missing' ); end;&lt;br /&gt;
	if ( not statement ) then error( 'statement not specified' ); end;&lt;br /&gt;
&lt;br /&gt;
	if ( not outputReferences ) then&lt;br /&gt;
		return '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = '';&lt;br /&gt;
	if ( statement.references ) then&lt;br /&gt;
&lt;br /&gt;
		local allReferences = statement.references;&lt;br /&gt;
		local hasPreferred = false;&lt;br /&gt;
		for _, reference in pairs( statement.references ) do&lt;br /&gt;
			if ( reference.snaks&lt;br /&gt;
					and 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 entityId = &amp;quot;Q&amp;quot; .. reference.snaks.P248[1].datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
				if ( preferredSources[entityId] ) then&lt;br /&gt;
					hasPreferred = true;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, reference in pairs( statement.references ) do&lt;br /&gt;
			local display = true;&lt;br /&gt;
			if ( hasPreferred ) then&lt;br /&gt;
				if ( reference.snaks&lt;br /&gt;
						and 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 entityId = &amp;quot;Q&amp;quot; .. reference.snaks.P248[1].datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
					if ( deprecatedSources[entityId] ) then&lt;br /&gt;
						display = false;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if ( display ) then&lt;br /&gt;
				result = result .. moduleSources.renderReference( g_frame, options.entity, reference );&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;
return p&lt;/div&gt;</summary>
		<author><name>Ilya Rudomilov</name></author>
		
	</entry>
</feed>