Modul:ExtId
Vzhled
Tento modul je určen pro formátování šablon používaných v externích odkazech k odkazování do databází či na autoritní záznamy a případné přebírání údajů z Wikidat či jejich srovnávání vůči nim.
Použití
{{#invoke:ExtId|print | pattern = <!-- vzor URL adresy, kde $1 nahrazuje hodnotu, např. "https://cs.wikipedia.org/wiki/$1" --> | property = <!-- identifikátor vlastnosti na Wikidatech, např. "P345" --> | value = <!-- hodnota předaná z parametrů šablony --> | regex = <!-- regulární výraz (Lua syntaxe), pomocí něhož se bude validovat lokálně vyplněná hodnota (např. "%d+") --> | text = <!-- volitelný vlastní popis odkazu (obvykle předaný z parametrů šablony) --> | kurzíva = <!-- vyplňte "ano", pokud má být popis odkazu formátován kurzívou --> | before = <!-- volitelný text zobrazený před odkazem (vlevo) --> | after = <!-- volitelný text zobrazený za odkazem (vpravo) --> | editovat na Wikidatech = <!-- vyplňte "ano", pokud se má na konec řádku doplnit {{Editovat na Wikidatech}} --> | compare = <!-- true zapne u lokálně zadaných hodnot srovnávání s Wikidaty pomocí skrytých kategorií --> | catbase = <!-- "identifikátor" šablony ve skrytých kategoriích, pokud se liší od názvu šablony, např. "ČSFD" --> }}
require "Modul:No globals"
local p = {}
local Wikidata = require 'Modul:Wikidata'
local lib = require 'Modul:Wikidata/lib'
function p.getFormatterURL(args)
return nil
end
function p.getLocalLabel(args)
return nil
end
function p.getLocalValue(args)
return nil
end
function p.getProperty(args)
return nil
end
function p.getWikidataLabel(args)
return mw.wikibase.label()
end
function p.inLanguage(args)
return nil
end
function p.paramFromArgs(args, params)
for _, param in pairs(params) do
if args[param] then
return args[param]
end
end
return nil
end
function p.wantCompare(args)
return p.getProperty(args) and true
end
local function getFormatterURL(args)
local formatterURL
local property = p.getProperty(args)
if property then
formatterURL = Wikidata.getRawValue{ property = 'P1630', id = property }
end
if not formatterURL then
formatterURL = p.getFormatterURL()
end
return formatterURL
end
local function getWhere(args)
return p.getWhere(args) or 'v neuvedené databázi'
end
function p.print(frame)
local parent = frame:getParent()
local args = lib.common.cleanArgs(parent.args or {})
local formatterURL = getFormatterURL(args)
if not formatterURL then
return error('Nebyla nalezena formátovací URL pro externí identifikátor „' .. parent:getTitle().text .. '“!')
end
local fromWikidata = false
local value = p.getLocalValue(args)
if not value then
local property = p.getProperty(args)
if property then
fromWikidata = true
value = Wikidata.getRawValue{ property = property }
end
if not value then
return error('Externí identifikátor „' .. parent:getTitle().text .. '“ nebyl nalezen!')
end
--[[else
if p.wantCompare(args) then
local compare = require 'Modul:Wikidata/compare'
value = value .. compare.compareFromOptions(value, options)
end]]
end
local label = p.getLocalLabel(args) or p.getWikidataLabel(args) or mw.getCurrentTitle().text
local inLanguage = p.inLanguage(args)
if inLanguage then
inLanguage = frame:preprocess('{{' .. inLanguage .. '}}') .. ' ' -- TODO: převod {{Vjazyce}} apod. do Lua
else
inLanguage = ''
end
local url = '[' .. lib.formatFromPattern(value, formatterURL) .. ' ' .. label .. ']'
if fromWikidata then
url = lib.addWdClass(url)
end
return inLanguage .. url .. ' ' .. getWhere(args) .. addCategory()
end
return p