モジュール:Coreのソースを表示
←
モジュール:Core
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
--[[ __ __ _ _ ____ | \/ | ___ __| |_ _| | ___ _ / ___|___ _ __ ___ | |\/| |/ _ \ / _` | | | | |/ _ (_) | / _ \| '__/ _ \ | | | | (_) | (_| | |_| | | __/_| |__| (_) | | | __/ |_| |_|\___/ \__,_|\__,_|_|\___(_)\____\___/|_| \___| This module is intended as collection of core functions shared among several Lua modules creating infobox templates on Commons. Authors and maintainers: * User:Jarekt ]] local core = {} ------------------------------------------------------------------------------ -- Based on frame structure create "args" table with all the input parameters. -- All inputs are not not case-sensitive and underscored are treated the same -- way as speces. Input values are trimmed and empty string are converted to -- nils. If "lang" is not provided than we substitute user's prefered language. function core.getArgs(frame) local function normalize_input_args(input_args, output_args) for name, value in pairs( input_args ) do value = string.gsub(value, "^%s*(.-)%s*$", "%1") -- trim whitespaces from the beggining and the end of the string if value ~= '' then -- nuke empty strings if type(name)=='string' then name = string.gsub( string.lower(name), ' ', '_') end output_args[name] = value end end return output_args end local args = {} args = normalize_input_args(frame:getParent().args, args) args = normalize_input_args(frame.args, args) if (args.lang and mw.language.isSupportedLanguage(args.lang)) then args.lang = string.lower(args.lang) else args.lang = frame:callParserFunction("int","lang") -- get user's chosen language end return args end ------------------------------------------------------------------------------ -- code equivalent to https://commons.wikimedia.org/wiki/Template:LangSwitch function core.langSwitch(list,lang) local langList = mw.language.getFallbacksFor(lang) table.insert(langList,1,lang) for i,language in ipairs(langList) do if list[language] then return list[language] end end end ------------------------------------------------------------------------------ -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to Module:Yesno function core.yesno(val, default) if type(val) == 'boolean' then return val elseif type(val) == 'number' then if val==1 then return true elseif val==0 then return false end elseif type(val) == 'string' then val = mw.ustring.lower(val) -- put in lower case if val == 'no' or val == 'n' or val == 'false' or val == '0' then return false elseif val == 'yes' or val == 'y' or val == 'true' or val == '1' then return true end end return default end ------------------------------------------------------------------------------ -- read Commons Data:SOMENAME.tab dataset and look for message identified by a -- "key" in a language "lang". See editAtWikidata as an example. function core.formatMessage(dataset, key, lang) for _, row in pairs(mw.ext.data.get(dataset, lang).data) do local id, msg = unpack(row) if id == key then return mw.message.newRawMessage(msg):plain() end end error('Invalid message key "' .. key .. '"') end ------------------------------------------------------------------------------- -- Assembles the "Edit at Wikidata" pen icon and returns it as wikitext string. -- Dependencies: Data:I18n/EditAt.tab ------------------------------------------------------------------------------- function core.editAtWikidata(entityID, propertyID, lang) local msg = core.formatMessage('I18n/EditAt.tab', 'EditAtWikidata', lang) local link = 'https://www.wikidata.org/wiki/' .. entityID .. (propertyID == "" and "" or ("#" .. propertyID)) return " [[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt="..msg.."|link="..link.."|"..msg.."]]" end ------------------------------------------------------------------------------- -- Assembles the "Edit at SDC" pen icon and returns it as wikitext string. -- Dependencies: Data:I18n/EditAt.tab ------------------------------------------------------------------------------- function core.editAtSDC(propertyID, lang) local msg = core.formatMessage('I18n/EditAt.tab', 'EditAtSDC', lang) local link = mw.title.getCurrentTitle():fullUrl() .. (propertyID == "" and "" or ("#" .. propertyID)) return " [[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt="..msg.."|link="..link.."|"..msg.."]]" end ------------------------------------------------------------------------------- function core.getLabel(id, userLang) -- code equivalent to require("Module:Wikidata label")._getLabel local label, link -- build language fallback list local langList = mw.language.getFallbacksFor(userLang) table.insert(langList, 1, userLang) for _, lang in ipairs(langList) do -- loop over language fallback list looking for label in the specific language label = mw.wikibase.getLabelByLang(id, lang) if label then break end -- label found and we are done end for _, lang in ipairs(langList) do -- loop over language fallback list looking for label in the specific language link = mw.wikibase.getSitelink(id, lang .. 'wiki') if link then link = mw.ustring.format('w:%s:%s', lang, link) break end end link = link or ('d:'..id) label = label or id return '[['..link..'|'..label..']]' end return core
このページで使用されているテンプレート:
モジュール:Core/doc
(
ソースを閲覧
)
モジュール:Core
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
モジュール
議論
English
表示
閲覧
履歴表示
その他
検索
案内
索引
脳科学辞典について
最近完成した項目
編集履歴
執筆にあたって
引用の仕方
著作権について
免責事項
問い合わせ
各学会編集のオンライン用語辞典
About us (in English)
Twitter (BrainScienceBot)
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
他のプロジェクト