モジュール: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 ..' - [[Twitter]]'; end return p;