Перейти к содержанию
Главное меню
Главное меню
переместить в боковую панель
скрыть
Навигация
Заглавная страница
Указатели
Свежие правки
Случайная страница
Справка по MediaWiki
Народные Сказки
Поиск
Найти
Создать учётную запись
Войти
Персональные инструменты
Создать учётную запись
Войти
Страницы для неавторизованных редакторов
узнать больше
Вклад
Обсуждение
Редактирование:
Модуль:Wikibase
Модуль
Обсуждение
English
Читать
Править код
История
Инструменты
Инструменты
переместить в боковую панель
скрыть
Действия
Читать
Править код
История
Общие
Ссылки сюда
Связанные правки
Служебные страницы
Сведения о странице
Внимание:
Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы
войдёте
или
создадите учётную запись
, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.
Анти-спам проверка.
Не
заполняйте это!
-- Модуль для функционала Викиданных 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 ) end end function 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 ref end function M.id( frame ) -- Элемент текущей страницы в Викиданных --Если вызван с параметром, достаёт id значения данного свойства, иначе возвращает id страницы --Второй параметр - разделитель, если значений несколько ("; " по умолчанию), -- либо можно указать номер параметром n. Третий параметр - формат для строкового свойства, -- по умолчанию "%s" local function try() local e = mw.wikibase.getEntity(); if frame.args[ 1 ] then local function gv( i ) local z = e.claims[ frame.args[ 1 ] ][ i ].mainsnak.datavalue; if z.type == 'wikibase-entityid' then return z.value.id else return string.format( frame.args[ 3 ] or '%s', tabletostr( z.value, "%s", '; ', '{', '}' ) ) end end if frame.args[ 'n' ] then return gv( tonumber( frame.args[ 'n' ] ) ) end local p, h = e.claims[ frame.args[ 1 ] ], {} for n, v in pairs( p ) do h[ n ] = gv( n ) end return table.concat( h, frame.args[ 2 ] or "; " ) else return e.id end end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end function M.struc( frame ) -- Отладочная функция, будет перенесена в отдельный модуль --Структуру см. [[mw:Extension:WikibaseClient/Lua#Entity table and data structure]] local function try() local i, e = 1, mw.wikibase.getEntity(); while frame.args[i] do e = e[ frame.args[ i ] ] or e[ tonumber( frame.args[ i ] ) ]; i = i + 1 end return tabletostr( e, frame.args[ 'f' ], frame.args[ 's' ] or '; ', '{', '}' ) end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end function M.label( frame ) -- Комментарий к элементу Викиданных в 1-м параметре local function try() local id = frame.args[1]; if not id or id == '' then id = mw.wikibase.getEntityIdForCurrentPage(); -- error, если нет элемента end return mw.wikibase.label( id ); end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end function M.description( frame ) local function try() local entityId = frame.args[1]; if not entityId or entityId == '' then entityId = mw.wikibase.getEntityIdForCurrentPage(); -- error, если нет элемента end return mw.wikibase.description( entityId ) end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для указанной страницы</strong>'; end end function M.iwiki( frame ) -- Интервики для указанного языка (только с ВД) local function try() if frame.args[ 1 ] then return mw.wikibase.getEntity().sitelinks[ frame.args[ 1 ] .. 'wiki' ].title else-- список интервик local r = {}; for k, v in pairs( mw.wikibase.getEntity().sitelinks ) do table.insert( r, string.format( frame.args[ 'f' ] or "* [[:%s:%s]]\n", v.language, v.title ) ) end return table.concat( r ) end end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end function M.iwikiall( frame ) -- Все ссылки, привязанные к элементу на ВД, в т.ч. викигид и склад local function try() if frame.args[ 1 ] then return mw.wikibase.getEntity().sitelinks[ frame.args[ 1 ] ].title else-- список интервик local r = {}; for k, v in pairs( mw.wikibase.getEntity().sitelinks ) do table.insert( r, string.format( frame.args[ 'f' ] or "* [[:%s:%s]]\n", v.language, v.title ) ) end return table.concat(r) end end local r, result = pcall( try ); if r then return result; else return ''; end end function M.page( frame ) -- страница Рувики для данного элемента local function try() return mw.wikibase.sitelink( frame.args[ 1 ] ) end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end function M.wdprops( frame ) -- список всех свойств с ВД в человеко-читаемом виде local function try() local e, r = mw.wikibase.getEntity(), {}; 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( w.value.id ) or 'd:' .. w.value.id, w.value.id ) .. ']]' or M.tabletostr( w.value ) ) end table.insert( r, string.format( frame.args[ 'f' ] or '\n|-\n|rowspan=%i|%s\n|%s', #vals, label, table.concat( vals, frame.args[ 's' ] or '\n|-\n|' ) ) ) end--for return table.concat( r ) end local r, result = pcall( try ); if r then return result; else return '<strong class="error">В Викиданных нет записей для текущей страницы</strong>'; end end return M
Описание изменений:
Пожалуйста, учтите, что любой ваш вклад в проект «Народные Сказки» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см.
РуСказки:Авторские права
).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!
Отменить
Справка по редактированию
(в новом окне)
Отобразить/Скрыть ограниченную ширину содержимого