<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikibase</id>
	<title>Модуль:Wikibase - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dzmuh.com/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AWikibase"/>
	<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikibase&amp;action=history"/>
	<updated>2026-05-06T13:28:47Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikibase&amp;diff=7541&amp;oldid=prev</id>
		<title>Dzmuh: Новая страница: «-- Модуль для функционала Викиданных local M={};  local function tabletostr(t,fmt,s,o,c)--не для использования н...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.dzmuh.com/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:Wikibase&amp;diff=7541&amp;oldid=prev"/>
		<updated>2022-03-20T15:19:50Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «-- Модуль для функционала Викиданных local M={};  local function tabletostr(t,fmt,s,o,c)--не для использования н...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Модуль для функционала Викиданных&lt;br /&gt;
local M={};&lt;br /&gt;
&lt;br /&gt;
local function tabletostr(t,fmt,s,o,c)--не для использования на страницах&lt;br /&gt;
    if type(t)==&amp;quot;table&amp;quot; then&lt;br /&gt;
            local f={};&lt;br /&gt;
            for k,v in pairs(t) do&lt;br /&gt;
                table.insert(f,string.format(fmt or '%s = %s',k,tabletostr(v,fmt,s,o,c)))&lt;br /&gt;
            end;&lt;br /&gt;
            table.sort(f);&lt;br /&gt;
            return (o or '')..table.concat(f, s or '')..(c or '')&lt;br /&gt;
        else return tostring(t)&lt;br /&gt;
        end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.wbview(ref,id)--вспом. функция для подписи из Викиданных&lt;br /&gt;
    local l=mw.wikibase.label(id);&lt;br /&gt;
    return l and ( l==ref and l or ref..'|'..l..(mw.ustring.lower(l)==mw.ustring.lower(ref) and '' or '&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;') ) or ref&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.id(f)-- Элемент текущей страницы в Викиданных&lt;br /&gt;
    --Если вызван с параметром, достаёт id значения данного свойства, иначе возвращает id страницы&lt;br /&gt;
    --Второй параметр - разделитель, если значений несколько (&amp;quot;; &amp;quot; по умолчанию),&lt;br /&gt;
    -- либо можно указать номер параметром n. Третий параметр - формат для строкового свойства,&lt;br /&gt;
    -- по умолчанию &amp;quot;%s&amp;quot;&lt;br /&gt;
    local function try()&lt;br /&gt;
	    local e = mw.wikibase.getEntityObject();        &lt;br /&gt;
	    if f.args[1] then&lt;br /&gt;
			local function gv(i)&lt;br /&gt;
				local z=e.claims[f.args[1]][i].mainsnak.datavalue;&lt;br /&gt;
				if z.type == 'wikibase-entityid' then&lt;br /&gt;
					return 'Q'..z.value['numeric-id']&lt;br /&gt;
				else&lt;br /&gt;
					return string.format(f.args[3] or '%s',tabletostr(z.value,&amp;quot;%s&amp;quot;,'; ','{','}'))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if f.args['n'] then&lt;br /&gt;
				return gv(tonumber(f.args['n']))&lt;br /&gt;
			end&lt;br /&gt;
			local p,h = e.claims[f.args[1]],{}&lt;br /&gt;
	        for n,v in pairs(p) do&lt;br /&gt;
				h[n] = gv(n)&lt;br /&gt;
			end&lt;br /&gt;
			return table.concat(h,f.args[2] or &amp;quot;; &amp;quot;)&lt;br /&gt;
		else &lt;br /&gt;
			return e.id&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.struc(f)-- Отладочная функция, будет перенесена в отдельный модуль&lt;br /&gt;
    --Структуру см. [[mw:Extension:WikibaseClient/Lua#Entity table and data structure]]&lt;br /&gt;
    local function try()&lt;br /&gt;
    	local i,e = 1,mw.wikibase.getEntityObject();&lt;br /&gt;
	    while f.args[i] do&lt;br /&gt;
	        e = e[ f.args[i] ] or e[ tonumber(f.args[i]) ];&lt;br /&gt;
	        i = i+1&lt;br /&gt;
	    end&lt;br /&gt;
		return tabletostr(e,f.args['f'],f.args['s'] or '; ','{','}')&lt;br /&gt;
	end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.label(f)--Комментарий к элементу Викиданных в 1-м параметре&lt;br /&gt;
    local function try()&lt;br /&gt;
	    local id = f.args[1];&lt;br /&gt;
	    if not id or id == '' then&lt;br /&gt;
	    	id = mw.wikibase.getEntityObject().id; -- error, если нет элемента&lt;br /&gt;
    	end&lt;br /&gt;
	    return mw.wikibase.label(id);&lt;br /&gt;
    end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.description(f)&lt;br /&gt;
    local function try()&lt;br /&gt;
	    local id = f.args[1];&lt;br /&gt;
	    if not id or id == '' then&lt;br /&gt;
	    	id = mw.wikibase.getEntityObject().id; -- error, если нет элемента&lt;br /&gt;
    	end&lt;br /&gt;
	    return mw.wikibase.description(id)&lt;br /&gt;
    end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для указанной страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.iwiki(f)-- Интервики для указанного языка (только с ВД)&lt;br /&gt;
    local function try()&lt;br /&gt;
	    if f.args[1] then&lt;br /&gt;
	        return mw.wikibase.getEntityObject().sitelinks[f.args[1]..'wiki'].title&lt;br /&gt;
	    else-- список интервик&lt;br /&gt;
	        local r={};&lt;br /&gt;
	        for k,v in pairs( mw.wikibase.getEntityObject().sitelinks ) do&lt;br /&gt;
	            table.insert( r, string.format(f.args['f'] or &amp;quot;* [[:%s:%s]]\n&amp;quot;, v.language, v.title) )&lt;br /&gt;
	        end&lt;br /&gt;
	        return table.concat(r)&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.iwikiall(f)-- Все ссылки, привязанные к элементу на ВД, в т.ч. викигид и склад&lt;br /&gt;
    local function try()&lt;br /&gt;
	    if f.args[1] then&lt;br /&gt;
	        return mw.wikibase.getEntityObject().sitelinks[f.args[1]].title&lt;br /&gt;
	    else-- список интервик&lt;br /&gt;
	        local r={};&lt;br /&gt;
	        for k,v in pairs( mw.wikibase.getEntityObject().sitelinks ) do&lt;br /&gt;
	            table.insert( r, string.format(f.args['f'] or &amp;quot;* [[:%s:%s]]\n&amp;quot;, v.language, v.title) )&lt;br /&gt;
	        end&lt;br /&gt;
	        return table.concat(r)&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.page(f)-- страница Рувики для данного элемента&lt;br /&gt;
    local function try()&lt;br /&gt;
		return mw.wikibase.sitelink(f.args[1])&lt;br /&gt;
	end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function M.wdprops(f)-- список всех свойств с ВД в человеко-читаемом виде&lt;br /&gt;
    local function try()&lt;br /&gt;
	    local e,r = mw.wikibase.getEntityObject(),{};&lt;br /&gt;
	    for p,a in pairs(e.claims) do&lt;br /&gt;
	        local label = mw.wikibase.label(p) or string.format([[d:%s]],p);&lt;br /&gt;
	        local vals = {};&lt;br /&gt;
	        for n,v in pairs(a) do&lt;br /&gt;
	            local w=v.mainsnak.datavalue;&lt;br /&gt;
	            vals[n]=(&lt;br /&gt;
	                w.type=='wikibase-entityid'&lt;br /&gt;
	                and '[['.. M.wbview(&lt;br /&gt;
	                    mw.wikibase.sitelink('Q'..w.value['numeric-id'])&lt;br /&gt;
	                    or 'd:Q'..w.value['numeric-id'],&lt;br /&gt;
	                    'Q'..w.value['numeric-id']&lt;br /&gt;
	                )..']]' or M.tabletostr(w.value)&lt;br /&gt;
	            )&lt;br /&gt;
	        end&lt;br /&gt;
	        table.insert(r, string.format(&lt;br /&gt;
	            f.args['f'] or '\n|-\n|rowspan=%i|%s\n|%s',&lt;br /&gt;
	            #vals,&lt;br /&gt;
	            label,&lt;br /&gt;
	            table.concat(vals,f.args['s'] or '\n|-\n|')&lt;br /&gt;
	            )&lt;br /&gt;
	        )&lt;br /&gt;
	    end--for&lt;br /&gt;
    	return table.concat(r)&lt;br /&gt;
    end&lt;br /&gt;
	local r, result = pcall(try);&lt;br /&gt;
    if r then&lt;br /&gt;
    	return result;&lt;br /&gt;
    else&lt;br /&gt;
    	return '&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;В Викиданных нет записей для текущей страницы&amp;lt;/strong&amp;gt;';&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return M&lt;/div&gt;</summary>
		<author><name>Dzmuh</name></author>
	</entry>
</feed>