Модуль:Wikibase

Для документации этого модуля может быть создана страница Модуль:Wikibase/doc

-- Модуль для функционала Викиданныхlocal M={};local function tabletostr(t,fmt,s,o,c)--не для использования на страницах    if type(t)=="table" then            local f={};            for k,v in pairs(t) do                table.insert(f,string.format(fmt or '%s = %s',k,tabletostr(v,fmt,s,o,c)))            end;            table.sort(f);            return (o or '')..table.concat(f, s or '')..(c or '')        else return tostring(t)        endendfunction M.wbview(ref,id)--вспом. функция для подписи из Викиданных    local l=mw.wikibase.label(id);    return l and ( l==ref and l or ref..'|'..l..(mw.ustring.lower(l)==mw.ustring.lower(ref) and '' or '<sup>*</sup>') ) or refendfunction M.id(f)-- Элемент текущей страницы в Викиданных    --Если вызван с параметром, достаёт id значения данного свойства, иначе возвращает id страницы    --Второй параметр - разделитель, если значений несколько ("; " по умолчанию),    -- либо можно указать номер параметром n. Третий параметр - формат для строкового свойства,    -- по умолчанию "%s"    local function try()    local e = mw.wikibase.getEntityObject();            if f.args[1] thenlocal function gv(i)local z=e.claims[f.args[1]][i].mainsnak.datavalue;if z.type == 'wikibase-entityid' thenreturn 'Q'..z.value['numeric-id']elsereturn string.format(f.args[3] or '%s',tabletostr(z.value,"%s",'; ','{','}'))endendif f.args['n'] thenreturn gv(tonumber(f.args['n']))endlocal p,h = e.claims[f.args[1]],{}        for n,v in pairs(p) doh[n] = gv(n)endreturn table.concat(h,f.args[2] or "; ")else return e.idendendlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendfunction M.struc(f)-- Отладочная функция, будет перенесена в отдельный модуль    --Структуру см. [[mw:Extension:WikibaseClient/Lua#Entity table and data structure]]    local function try()    local i,e = 1,mw.wikibase.getEntityObject();    while f.args[i] do        e = e[ f.args[i] ] or e[ tonumber(f.args[i]) ];        i = i+1    endreturn tabletostr(e,f.args['f'],f.args['s'] or '; ','{','}')endlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendfunction M.label(f)--Комментарий к элементу Викиданных в 1-м параметре    local function try()    local id = f.args[1];    if not id or id == '' then    id = mw.wikibase.getEntityObject().id; -- error, если нет элемента    end    return mw.wikibase.label(id);    endlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendfunction M.description(f)    local function try()    local id = f.args[1];    if not id or id == '' then    id = mw.wikibase.getEntityObject().id; -- error, если нет элемента    end    return mw.wikibase.description(id)    endlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для указанной страницы</strong>';    endendfunction M.iwiki(f)-- Интервики для указанного языка (только с ВД)    local function try()    if f.args[1] then        return mw.wikibase.getEntityObject().sitelinks[f.args[1]..'wiki'].title    else-- список интервик        local r={};        for k,v in pairs( mw.wikibase.getEntityObject().sitelinks ) do            table.insert( r, string.format(f.args['f'] or "* [[:%s:%s]]\n", v.language, v.title) )        end        return table.concat(r)    endendlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendfunction M.iwikiall(f)-- Все ссылки, привязанные к элементу на ВД, в т.ч. викигид и склад    local function try()    if f.args[1] then        return mw.wikibase.getEntityObject().sitelinks[f.args[1]].title    else-- список интервик        local r={};        for k,v in pairs( mw.wikibase.getEntityObject().sitelinks ) do            table.insert( r, string.format(f.args['f'] or "* [[:%s:%s]]\n", v.language, v.title) )        end        return table.concat(r)    endendlocal r, result = pcall(try);    if r then    return result;    else    return '';    endendfunction M.page(f)-- страница Рувики для данного элемента    local function try()return mw.wikibase.sitelink(f.args[1])endlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendfunction M.wdprops(f)-- список всех свойств с ВД в человеко-читаемом виде    local function try()    local e,r = mw.wikibase.getEntityObject(),{};    for p,a in pairs(e.claims) do        local label = mw.wikibase.label(p) or string.format([[d:%s]],p);        local vals = {};        for n,v in pairs(a) do            local w=v.mainsnak.datavalue;            vals[n]=(                w.type=='wikibase-entityid'                and '[['.. M.wbview(                    mw.wikibase.sitelink('Q'..w.value['numeric-id'])                    or 'd:Q'..w.value['numeric-id'],                    'Q'..w.value['numeric-id']                )..']]' or M.tabletostr(w.value)            )        end        table.insert(r, string.format(            f.args['f'] or '\n|-\n|rowspan=%i|%s\n|%s',            #vals,            label,            table.concat(vals,f.args['s'] or '\n|-\n|')            )        )    end--for    return table.concat(r)    endlocal r, result = pcall(try);    if r then    return result;    else    return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>';    endendreturn M
🔥 Top keywords: Тӧс бӱкВикипедия:ЈартамалыВикипедия:Ӧмӧликтиҥ порталыРоссияВикипедия:КурултайМоскваАлтай тилЧаган айдыҥ 15 кӱниАҥылу:Свежие правкиТайваньХристиан јаҥАлтыгы НовгородВикипедия:Талдама бичимелдерКичӱ изӱ айдыҥ 1 кӱниМСК+4:00Склодовская-Кюри, МарияЧаган айдыҥ 20 кӱниТулаан айдыҥ 22 кӱниСыгын айдыҥ 9 кӱниЈопонКочкор айдыҥ 10 кӱниКатегория:БастыраКичӱ изӱ айдыҥ 18 кӱниЈаҥар айдыҥ 21 кӱниИталияМаатаи, ВангариКӱӱк айдыҥ 25 кӱниДостоевский, Фёдор МихайловичКандык айдыҥ 5 кӱниАда-Тӧрӧл учун Улу јууЈаҥар айдыҥ 14 кӱниПутин, Владимир ВладимировичСыгын айдыҥ 8 кӱниЧелябинскТулаан айдыҥ 21 кӱниЈаан изӱ айКандык айдыҥ 14 кӱниСанкт-ПетербургКандык айдыҥ 19 кӱниӰлӱрген айКичӱ изӱ айдыҥ 20 кӱниКатегория:БилимӰлекер:Тӧс бӱк/helpЈаҥар айдыҥ 5 кӱниКатегория:Чыккан кÿндери аайынча кижилерКазахстанКудайКӱчӱрген айдыҥ 2 кӱниКочкор айКӱӱк айдыҥ 30 кӱниКазанӰлекер:NobrСыгын айдыҥ 11 кӱниКандык айдыҥ 25 кӱниТепуков, Кӱлер ЭзендиковичАҥылу:ПоискКичӱ изӱ айдыҥ 19 кӱниАҥылу:Моё обсуждениеАзимов, АйзекАҥылу:Мой вкладӰлекер:SmallКатегория:Россияныҥ географиязыЧаган айдыҥ 9 кӱниКӱчӱрген айдыҥ 24 кӱниФайл:Outline Map of Altai Republic.svgКичӱ изӱ айдыҥ 15 кӱниМюллер, ГертаКӱчӱрген айдыҥ 15 кӱниТуружаачыны шӱӱжери:BakpayКуран айдыҥ 11 кӱниГабриела МистральКӱчӱрген айдыҥ 13 кӱниКӱӱк айдыҥ 10 кӱниЈаҥар айдыҥ 26 кӱниФайл:Flag of Russia.svgЈаҥар айдыҥ 23 кӱниФайл:Wanderheuschrecke-01.jpgКичӱ изӱ айдыҥ 13 кӱниЧаган айдыҥ 8 кӱниДондо РостовСыгын айдыҥ 16 кӱниКочкор айдыҥ 13 кӱниФайл:Italy on the globe (Europe centered).svgКаспаЈаан изӱ айдыҥ 15 кӱниӰлекер:Potd/2023-03Кӱӱк айдыҥ 31 кӱниАтГонконгФайл:004 2018 05 14 Extremes Wetter.jpgЈаан изӱ айдыҥ 10 кӱниКӱчӱрген айдыҥ 9 кӱниШабалинЧаган айдыҥ 11 кӱниӰлӱрген айдыҥ 8 кӱниКурмач-БайголУкачин, Борис УкачиновичТулаан айдыҥ 1 кӱниМодуль:Arguments