Модул:Wikidata/redLink
Для реализации {{Мақола нест}}, простановки красных ссылок модулем Wikidata и части шаблона {{iw}}.
Санҷишҳо
вироиш5 тестов провалено.
test_formatRedLinkFromTemplate:
Текст | Ожидаемое значение | Фактическое значение | |
---|---|---|---|
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate }} | Унсури Викидода нишон дода нашудааст | Унсури Викидода нишон дода нашудааст | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q6 }} | Унсур ишора надорад Q6 | Унсур ишора надорад Q6 | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q42 }} | Дуглас Адамс | Douglas Adams | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q42 | Дуглас Ноэл Адамс }} | Дуглас Ноэл Адамс | Дуглас Ноэл Адамс | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q2 | Замин }} | Замин | Замин | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q3124803 | HD 23985 }} | HD 23985 | HD 23985 | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q100712902 | Я. Венник }} | Я. Венник | Унсур ишора надорад Q100712902 | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q84437742 | LDS 5078 }} | LDS 5078 | LDS 5078 | |
{{#invoke:Wikidata/redLink | formatRedLinkFromTemplate | Q74169392 | [GS55] 204 }} | [GS55] 204 | [GS55] 204 |
test_getBioInfobox:
Текст | Ожидаемое значение | Фактическое значение | |
---|---|---|---|
getBioInfobox() | Шахс | Шахс | |
getBioInfobox('Q81840636') | Шахс | Шахс | |
getBioInfobox('Q40192238') | Олим | Олим |
test_getInfobox:
local p = {};
function p.formatRedLink(title, text, entityId, infobox)
if infobox == nil or infobox == '' then
infobox = 'Қуттии ҳамагонӣ'
end
return mw.ustring.format(
'<span class="plainlinks">[//tg.wikipedia.org/w/index.php?title=%s&action=edit&editintro=Шаблон:Мақола_нест/editintro&preload=Шаблон:Мақола_нест/preload&preloadparams%%5B%%5D=%s&preloadparams%%5B%%5D=%s&preloadparams%%5B%%5D=%s <span style="color: var(--color-destructive, #d73333); text-decoration: inherit; text-decoration-color: var(--color-destructive, #d73333);">%s</span>]</span>',
mw.uri.encode(title), entityId, mw.uri.encode(title), string.gsub(infobox, ' ', '+') , mw.text.nowiki(text)
)
end
function p.formatRedLinkWithInfobox(title, text, entityId, defaultInfobox)
return p.formatRedLink(title, text, entityId, p.getInfobox(entityId, defaultInfobox))
end
function p.getInfobox(entityId, defaultInfobox)
if defaultInfobox then
return defaultInfobox
end
if entityId then
local result = mw.wikibase.getBestStatements(entityId, 'P31')
for _, statement in pairs(result) do
if statement.mainsnak.datavalue then
local type = statement.mainsnak.datavalue.value.id
if type == 'Q5' then return p.getBioInfobox(entityId)
elseif type == 'Q523' then return 'Ситора'
elseif type == 'Q318' then return 'Галактика'
end
end
end
end
return 'Қуттии ҳамагонӣ'
end
function p.getBioInfobox(entityId)
if entityId then
local result = mw.wikibase.getBestStatements(entityId, 'P106')
for _, statement in pairs(result) do
if statement.mainsnak.datavalue then
local occupation = statement.mainsnak.datavalue.value.id
if occupation == 'Q901' then return 'Олим'
end
end
end
end
return 'Шахс'
end
function p.formatRedLinkFromTemplate(frame)
local args = frame['args']
if not args[1] then -- may be arguments are passed from the parent template?
args = frame:getParent().args
end
if not args[1] then
return '<span class="error">Унсури Викидода нишон дода нашудааст</span>'
end
local entityId = mw.text.trim(args[1])
local title = mw.wikibase.label(entityId)
if not title then
return mw.ustring.format('<span class="error">Унсур ишора надорад %s</span>', entityId)
elseif mw.ustring.match(title, '[%[%]:]') then -- cannot create page with this name
return title
end
local text = title
if args[2] then
text = mw.text.trim(args[2])
end
local sitelink = mw.wikibase.sitelink(entityId)
if sitelink then
if text == sitelink then
return '[[' .. sitelink .. ']]'
else
return '[[' .. sitelink .. '|' .. text .. ']]'
end
end
return p.formatRedLinkWithInfobox(title, text, entityId, args[3])
end
return p