「モジュール:Labelled list hatnote」の版間の差分
ja>Mt.Asahidake 細 (「モジュール:Labelled list hatnote」を保護しました: 影響が特に大きいテンプレート ([編集=拡張承認された利用者と管理者に許可] (無期限) [移動=拡張承認された利用者と管理者に許可] (無期限))) |
細 (1版 をインポートしました) |
(相違点なし)
|
2025年1月3日 (金) 04:41時点における最新版
このモジュールについての説明文ページを モジュール:Labelled list hatnote/doc に作成できます
local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments -- initialize lazily local p = {} -- Defaults global to this module local defaults = { label = 'を参照', -- Final fallback for label argument mainLabelForm = '→詳細は%s%s', -- Label format for main template labelForm = '→%s%s', -- Label format for see_also template prefixes = {'label', 'label ', 'l'}, template = 'Module:Labelled list hatnote' } -- Helper function that pre-combines display parameters into page arguments. -- Also compresses sparse arrays, as a desirable side-effect. function p.preprocessDisplays(args, prefixes) prefixes = prefixes or defaults.prefixes local pages = {} for k, v in pairs(args) do if type(k) == 'number' then local display for i = 1, #prefixes do display = args[prefixes[i] .. k] if display then break end end local page = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v pages[#pages + 1] = page end end return pages end -- Produces a labelled pages-list hatnote. function p.labelledList(frame) mArguments = require('Module:Arguments') local template = frame:getParent():getTitle() if template ~= 'Template:Main' and template ~= 'Template:Main/sandbox' then template = 'Template:See Also' -- Default template if not Main end local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = p.preprocessDisplays(args) local labels local labelForm if template == 'Template:Main' or template == 'Template:Main/sandbox' then labels = {defaults.label} labelForm = frame.args.labelForm or defaults.mainLabelForm else labels = {frame.args[1] or defaults.label} labels[2] = frame.args[2] or labels[1] labelForm = frame.args.labelForm or defaults.labelForm end local options = { extraclasses = frame.args.extraclasses, category = args.category, selfref = frame.args.selfref or args.selfref, template = template, labelForm = labelForm } return p._labelledList(pages, labels, options) end function p._labelledList(pages, labels, options) labels = labels or {} if #pages == 0 then return mHatnote.makeWikitextError( 'ページ名が指定されていません', (options.template or defaults.template) .. '#エラー', options.category ) end local label = (#pages == 1 and labels[1] or labels[2]) or defaults.label local text = string.format( options.labelForm or defaults.labelForm, mHatlist.andList(pages, true), label ) local classes = {} if type(options.extraclasses) == 'string' then classes[#classes + 1] = options.extraclasses end if options.selfref then classes[#classes + 1] = 'selfref' end -- Render the HTML div with the specified style and classes local html = string.format( '<div class="rellink %s" style="margin-bottom: 0.5em; padding-left: 2em; font-size: 90%%;" role="note">%s</div>', table.concat(classes, ' '), text ) return html end return p