Content deleted Content added
try fix suggested by chatgpt Tag: Reverted |
only include |id= parameter if template is not arxiv, add guessing of arxiv template based on arxiv identifier |
||
(6 intermediate revisions by the same user not shown) | |||
Line 6:
local wdib = require('Module:WikidataIB')
local getValue = wdib._getValue
local getPropOfProp = wdib._getPropOfProp
local followQid = wdib._followQid
Line 648 ⟶ 647:
elseif citeq_args.website then
template = template or "web"
template = template or "arxiv"
end
-- support arXiv classification
if arxiv then▼
local arxiv_class
arxiv_class =
-- try getting arXiv classification (only one value accepted)▼
▲ arxiv_class = getQualifierValue( {"P818", pval = arxiv, qual = "P820", qid = qid, maxvals = 1, rank="best"} )
if arxiv_class then
-- See https://en.wikipedia.org/wiki/Template:Cite_arXiv
-- To be used only with new-style (2007 and later) eprint identifiers
-- that do not include the classification."
citeq_args.class = arxiv_class
end
end
-- ************* |id= parameter **********************
-- template is CS1 designator: journal, web, news, etc.▼
-- Only include |id= if template
if template ~= "arxiv" then
-- citeq_args.mode = citeq_args.mode or "cs1" -- a cs1 template already knows that it is cs1 so this line is superfluous▼
template = "Cite " .. template▼
else▼
-- citeq_args.mode = citeq_args.mode or "cs2" -- a cs2 template already knows that it is cs2 so this line is superfluous▼
id = id .. '[[File:Wikidata-logo.svg|16px|alt=|link=]]' -- possibly replace by WD edit icon?▼
end▼
citeq_args.id = old_id .. list_sep .. id -- append to user-specified contents▼
citeq_args.id = id
end▼
▲ -- |id= could hold more than one identifier pulled from Wikidata not supported by {{citation}}, right now only add our qid to the list
▲ local list_sep = '. '
if v == "" then citeq_args[k] = nil end▼
▲ if citeq_args.mode ~= 'cs1' then
▲ end
▲ local id = '[[WDQ (identifier)|Wikidata]] [[:d:' .. qid .. '|' .. qid .. ']]' -- go through "WDQ (identifier)" redirect to reduce clutter in "What links here" and improve reverse lookup. Keep in sync with {{QID}}.
▲ local old_id = citeq_args.id
▲ if wdl then -- show WD logo
▲ id = id .. '[[File:Wikidata-logo.svg|16px|alt=|link=]]' -- possibly replace by WD edit icon?
▲ if is_set (old_id) then
▲ citeq_args.id = old_id .. list_sep .. id -- append to user-specified contents
else▼
▲ citeq_args.id = id
▲ -- clean up any blank parameters
▲ for k, v in pairs(citeq_args) do
local expand_args = { "{{" .. template } -- init with citation template▼
▲ if v == "" then citeq_args[k] = nil end
if expand == "self" then▼
citeq_args.id = old_id -- restore original |id= parameter▼
expand_args = { "{{cite Q|" .. qid } -- expand to itself▼
-- make a sortable table and sort it by param name▼
local sorttable = {}▼
for param, val in pairs (citeq_args) do▼
table.insert(sorttable, {param, val})▼
table.sort(sorttable, comp_key)▼
-- add contents to expand_args▼
for idx, val in ipairs(sorttable) do▼
table.insert(expand_args, val[1] .. '=' .. val[2])▼
-- make the nowiki'd string and done▼
return frame:preprocess (table.concat ({'<syntaxhighlight lang="wikitext" inline="1">', table.concat (expand_args, ' |') .. '}}', '</syntaxhighlight>'}));▼
end
end
-- ************* Assign template **********************
▲ -- if |expand=<anything>, write a nowiki'd version to see what the {{citation}} template call looks like
▲ -- template is CS1 designator: journal, web, news, etc.
▲ if expand then
▲ local expand_args = { "{{" .. template } -- init with citation template
▲ --
▲ if expand == "self" then
▲ template = "Cite " .. template
▲ citeq_args.id = old_id -- restore original |id= parameter
▲ expand_args = { "{{cite Q|" .. qid } -- expand to itself
▲ --
▲ end
template = "Citation"
▲ -- make a sortable table and sort it by param name
▲ local sorttable = {}
▲ for param, val in pairs (citeq_args) do
▲ table.insert(sorttable, {param, val})
end
▲ table.sort(sorttable, comp_key)
▲ -- add contents to expand_args
▲ for idx, val in ipairs(sorttable) do
▲ table.insert(expand_args, val[1] .. '=' .. val[2])
▲ end
▲ -- make the nowiki'd string and done
▲ return frame:preprocess (table.concat ({'<syntaxhighlight lang="wikitext" inline="1">', table.concat (expand_args, ' |') .. '}}', '</syntaxhighlight>'}));
▲ end
local erratumid = getPropertyIDs( { "P2507", qid = qid, fwd = "ALL", osd = "no", rank = "best", maxvals = 1 } )
|