モジュール:Twitter
このLuaモジュールは47,000以上のページで使われています。 余計な混乱やサーバーへの負荷を避けるために、どんな変更でも最初はモジュールのサンドボックス・サブページ、テストケース・サブページで試すべきです。そうすれば、試した変更を1度の編集でこのモジュールに加えることができます。しかし、最初にあなたの提案した変更を、この項目のノートで議論するようにお願いします。 |
{{Twitter}}の内部モジュール。
使用法
{{#invoke:Twitter|main}}
local p = {};
local function getWikidataProperty(property, from )
local entity = nil;
if from == '' then
entity = mw.wikibase.getEntityObject( );
else
entity = mw.wikibase.getEntityObject(from);
end
if not entity then
return nil;
end
local claims = entity.claims or {};
local hasProp = claims[property];
if not hasProp then
return nil;
end
return hasProp[1].mainsnak.datavalue.value;
end
function p.main( frame )
local args = require( 'Module:Arguments' ).getArgs( frame, { wrappers = 'Template:Twitter', removeBlanks = false, parentFirst = true });
local t_name = args[1] or args.id or '';
local from = args.from or '';
if t_name == '' then
t_name = getWikidataProperty('P2002', from) or error('ウィキデータにIDが登録されていません。[[Category:ウィキデータにないTwitter]]');
end
local lang = args.lang or '';
local lang2 = '';
if lang ~= '' then
lang = '<span xml:lang="' ..lang ..'" lang="' ..lang ..'">';
lang2 = '</span>';
end
local formatterURL = mw.text.decode(getWikidataProperty('P1630', 'P2002'));
local url = mw.ustring.gsub(formatterURL, "\$1", t_name);
local name = args[2] or args.name or '';
if name == '' then
name = mw.ustring.gsub(mw.title.getCurrentTitle().text, "%s+%b()$", "");
end
local t_name2 = '(@' .. t_name ..')';
if mw.ustring.match(name, '%(' .. t_name .. '%)$') then
t_name2 = '';
end
return '[' ..url ..' ' ..lang ..name ..lang2 ..'] ' ..t_name2 ..' - [[X (ソーシャル・ネットワーキング・サービス)|X(旧Twitter)]]';
end
return p;