Modul:Cite tweet: Unterschied zwischen den Versionen
(Lua translation of Template:Cite_tweet designed to deal with very heavy usage on pages.) |
K (Use the right concatenation operator) |
||
| Zeile 15: | Zeile 15: | ||
local args = frame.args | local args = frame.args | ||
local cite_args = { | local cite_args = { | ||
url = 'https://twitter.com/' | url = 'https://twitter.com/' .. ((args.user and args.number) and (args.user .. '/status/' .. args.number) or ''), | ||
title = (args.title or ''):gsub('https*://', ''), | title = (args.title or ''):gsub('https*://', ''), | ||
['script-title'] = args['script-title'], | ['script-title'] = args['script-title'], | ||
| Zeile 21: | Zeile 21: | ||
language = args.language, | language = args.language, | ||
['author-link'] = args['author-link'] or args.authorlink, | ['author-link'] = args['author-link'] or args.authorlink, | ||
others = _if(args.retweet) and ('Retweeted by ' | others = _if(args.retweet) and ('Retweeted by ' .. args.retweet), | ||
via = args.link == 'no' and 'Twitter' or '[[Twitter]]', | via = args.link == 'no' and 'Twitter' or '[[Twitter]]', | ||
type = 'Tweet', | type = 'Tweet', | ||
| Zeile 33: | Zeile 33: | ||
} | } | ||
if _if(args.last1 or args.last) then | if _if(args.last1 or args.last) then | ||
cite_args.author = (args.last1 or args.last) | cite_args.author = (args.last1 or args.last) .. | ||
(_if(args.first1 or args.first) and (', ' | (_if(args.first1 or args.first) and (', ' .. (args.first1 or args.first)) or '') .. | ||
'[@' | '[@' .. (args.user or '') .. ']' | ||
elseif _if(args.author1 or args.author) then | elseif _if(args.author1 or args.author) then | ||
cite_args.author = (args.author1 or args.author) | cite_args.author = (args.author1 or args.author) .. '[@' .. (args.user or '') .. ']' | ||
elseif _if(args['author-link']) then | elseif _if(args['author-link']) then | ||
cite_args.author = args['author-link'] | cite_args.author = args['author-link'] .. '[@' .. (args.user or '') .. ']' | ||
else | else | ||
cite_args.author = '@' | cite_args.author = '@' .. args.user | ||
end | end | ||
cite_args.date = args.date or (_if(args.number) and TwitterSnowflake.snowflakeToDate{ args = {id_str = args.number} }) | cite_args.date = args.date or (_if(args.number) and TwitterSnowflake.snowflakeToDate{ args = {id_str = args.number} }) | ||
| Zeile 71: | Zeile 71: | ||
if errors[1] then | if errors[1] then | ||
local last = errors[#errors] | local last = errors[#errors] | ||
errors[#errors] = last:sub(1, #last - 1) | errors[#errors] = last:sub(1, #last - 1) .. ' ([[Template:Cite_tweet#Error_detection|help]])' | ||
local error_out = error_template:rep(#errors):format(unpack(errors)) | local error_out = error_template:rep(#errors):format(unpack(errors)) | ||
if mw.title.getCurrentTitle():inNamespace(0) then | if mw.title.getCurrentTitle():inNamespace(0) then | ||
error_out = error_out | error_out = error_out .. '[[Category:Cite tweet templates with errors]]' | ||
end | end | ||
output = output | output = output .. error_out | ||
end | end | ||
return output | return output | ||
Version vom 2. Mai 2021, 17:23 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Cite tweet/doc erstellt werden
local p = {}
local TwitterSnowflake = require('Module:TwitterSnowflake')
local CiteWeb = require('Module:Cite web')['']
local function _if(arg)
return x and x ~= '' or nil
end
p.main = function(frame)
frame.args = frame:getParent().args
return p[''](frame)
end
p[''] = function(frame)
local args = frame.args
local cite_args = {
url = 'https://twitter.com/' .. ((args.user and args.number) and (args.user .. '/status/' .. args.number) or ''),
title = (args.title or ''):gsub('https*://', ''),
['script-title'] = args['script-title'],
['trans-title'] = args['trans-title'],
language = args.language,
['author-link'] = args['author-link'] or args.authorlink,
others = _if(args.retweet) and ('Retweeted by ' .. args.retweet),
via = args.link == 'no' and 'Twitter' or '[[Twitter]]',
type = 'Tweet',
location = args.location,
['access-date'] = args['access-date'] or args.accessdate,
['archive-date'] = args['archive-date'] or args.archivedate,
['archive-url'] = args['archive-url'] or args.archiveurl,
['url-status'] = args['url-status'] or args['dead-url'] or args.deadurl,
ref = args.ref,
df = args.df
}
if _if(args.last1 or args.last) then
cite_args.author = (args.last1 or args.last) ..
(_if(args.first1 or args.first) and (', ' .. (args.first1 or args.first)) or '') ..
'[@' .. (args.user or '') .. ']'
elseif _if(args.author1 or args.author) then
cite_args.author = (args.author1 or args.author) .. '[@' .. (args.user or '') .. ']'
elseif _if(args['author-link']) then
cite_args.author = args['author-link'] .. '[@' .. (args.user or '') .. ']'
else
cite_args.author = '@' .. args.user
end
cite_args.date = args.date or (_if(args.number) and TwitterSnowflake.snowflakeToDate{ args = {id_str = args.number} })
frame.args = cite_args
local output = CiteWeb(frame)
frame.args = args
-- Error checking
local error_template = '<span class="cs1-visible-error error citation-comment">%s</span> '
local errors = {}
if not (_if(args.title) or _if(args['script-title']) or args.user or args.number or args.date) then
-- No title; error message is provided by CS1 module.
errors[1] = ';'
end
if not _if(args.user) then
errors[1 + #errors] = 'Missing or empty <kbd>|user=</kbd>;'
end
if not _if(args.number) then
errors[1 + #errors] = 'Missing or empty <kbd>|number=</kbd>;'
end
errors[1 + #errors] = TwitterSnowflake.datecheck{ args = {
id_str = args.number,
date = args.date,
error1 = '<kbd>|date=</kbd> mismatches calculated date from <kbd>|number=</kbd> by two or more days;',
error2 = 'Missing or empty <kbd>|date=</kbd>, and posted before November 4, 2010;',
error3 = 'Invalid <kbd>|number=</kbd> parameter;'
}}
if errors[1] then
local last = errors[#errors]
errors[#errors] = last:sub(1, #last - 1) .. ' ([[Template:Cite_tweet#Error_detection|help]])'
local error_out = error_template:rep(#errors):format(unpack(errors))
if mw.title.getCurrentTitle():inNamespace(0) then
error_out = error_out .. '[[Category:Cite tweet templates with errors]]'
end
output = output .. error_out
end
return output
end
return p