در حال ویرایش پودمان:Hatnote

هشدار: شما وارد نشده‌اید. نشانی آی‌پی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر وارد شوید یا یک حساب کاربری بسازید، ویرایش‌هایتان به نام کاربری‌تان نسبت داده خواهد شد، همراه با مزایای دیگر.

این ویرایش را می‌توان خنثی کرد. لطفاً تفاوت زیر را بررسی کنید تا تأیید کنید که این چیزی است که می‌خواهید انجام دهید، سپس تغییرات زیر را ذخیره کنید تا خنثی‌سازی ویرایش را به پایان ببرید.

نسخهٔ فعلی متن شما
خط ۳: خط ۳:
--                                                                            --
--                                                                            --
-- This module produces hatnote links and links to related articles. It      --
-- This module produces hatnote links and links to related articles. It      --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- implements the {{hatnote}} and {{format hatnote link}} meta-templates, and --
-- helper functions for other Lua hatnote modules.                           --
-- includes helper functions for other Lua hatnote modules.                   --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


local libraryUtil = require('libraryUtil')
local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local checkType = libraryUtil.checkType
local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg
local mArguments -- lazily initialise [[Module:Arguments]]
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
local yesno -- lazily initialise [[Module:Yesno]]
خط ۳۵: خط ۳۴:
-- function will not work if the link is enclosed in double brackets. Colons
-- function will not work if the link is enclosed in double brackets. Colons
-- are trimmed from the start of the link by default. To skip colon
-- are trimmed from the start of the link by default. To skip colon
-- trimming, set the removeColon parameter to false.
-- trimming, set the removeColon parameter to true.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
خط ۵۷: خط ۵۶:
local ret = {}
local ret = {}
for i, page in ipairs(pages) do
for i, page in ipairs(pages) do
ret[i] = p._formatLink{link = page}
ret[i] = p._formatLink(page)
end
end
return ret
return ret
خط ۷۱: خط ۷۰:
local link = t[1]
local link = t[1]
local display = t[2]
local display = t[2]
links[i] = p._formatLink{link = link, display = display}
links[i] = p._formatLink(link, display)
end
end
return links
return links
end
end


function p.makeWikitextError(msg, helpLink, addTrackingCategory, title)
function p.makeWikitextError(msg, helpLink, addTrackingCategory)
-- Formats an error message to be returned to wikitext. If
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- addTrackingCategory is not false after being returned from
خط ۸۴: خط ۸۳:
checkType('makeWikitextError', 2, helpLink, 'string', true)
checkType('makeWikitextError', 2, helpLink, 'string', true)
yesno = require('Module:Yesno')
yesno = require('Module:Yesno')
title = title or mw.title.getCurrentTitle()
local title = mw.title.getCurrentTitle()
-- Make the help link text.
-- Make the help link text.
local helpText
local helpText
if helpLink then
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
helpText = ' ([[' .. helpLink .. '|راهنما]])'
else
else
helpText = ''
helpText = ''
خط ۹۴: خط ۹۳:
-- Make the category text.
-- Make the category text.
local category
local category
if not title.isTalkPage -- Don't categorise talk pages
if not title.isTalkPage and yesno(addTrackingCategory) ~= false then
and title.namespace ~= 2 -- Don't categorise userspace
category = 'الگو:سرنویس همراه خطا'
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = string.format(
category = string.format(
'[[%s:%s]]',
'[[%s:%s]]',
خط ۱۰۸: خط ۱۰۴:
end
end
return string.format(
return string.format(
'<strong class="error">Error: %s%s.</strong>%s',
'<strong class="error">خطا: %s%s.</strong>%s',
msg,
msg,
helpText,
helpText,
category
category
)
)
end
function p.disambiguate(page, disambiguator)
-- Formats a page title with a disambiguation parenthetical,
-- i.e. "Example" → "Example (disambiguation)".
checkType('disambiguate', 1, page, 'string')
checkType('disambiguate', 2, disambiguator, 'string', true)
disambiguator = disambiguator or 'disambiguation'
return string.format('%s (%s)', page, disambiguator)
end
end


خط ۱۳۰: خط ۱۱۷:
-- with colons if necessary, and links to sections are detected and displayed
-- with colons if necessary, and links to sections are detected and displayed
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- with " § " as a separator rather than the standard MediaWiki "#". Used in
-- the {{format link}} template.
-- the {{format hatnote link}} template.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


function p.formatLink(frame)
function p.formatLink(frame)
-- The formatLink export function, for use in templates.
yesno = require('Module:Yesno')
local args = getArgs(frame)
local args = getArgs(frame)
local link = args[1]
local link = args[1]
local display = args[2]
if not link then
if not link then
return p.makeWikitextError(
return p.makeWikitextError(
'no link specified',
'هیچ پیوندی تعیین نشده است',
'Template:Format link#Errors',
'الگو:Format hatnote link#خطاها',
args.category
args.category
)
)
end
end
return p._formatLink{
return p._formatLink(link, display)
link = link,
display = args[2],
italicizePage = yesno(args.italicizepage),
italicizeSection = yesno(args.italicizesection),
}
end
end


local function italicize(s)
function p._formatLink(link, display)
-- Italicize a string.
-- Find whether we need to use the colon trick or not. We need to use the
return '<i>' .. s .. '</i>'
-- colon trick for categories and files, as otherwise category links
end
-- categorise the page and file links display the file.
 
checkType('_formatLink', 1, link, 'string')
local function maybeItalicize(s, shouldItalicize)
checkType('_formatLink', 2, display, 'string', true)
-- italicize s if s is a string and the shouldItalicize parameter is true.
link = removeInitialColon(link)
if s and shouldItalicize then
local namespace = p.findNamespaceId(link, false)
return italicize(s)
local colon
if namespace == 6 or namespace == 14 then
colon = ':'
else
else
return s
colon = ''
end
end
end
 
local function parseLink(link)
-- Parse a link and return a table with the link's components.
-- These components are:
-- - link: the link, stripped of any initial colon (always present)
-- - page: the page name (always present)
-- - section: the page name (may be nil)
-- - display: the display text, if manually entered after a pipe (may be nil)
link = removeInitialColon(link)
 
-- Find whether a faux display value has been added with the {{!}} magic
-- Find whether a faux display value has been added with the {{!}} magic
-- word.
-- word.
local prePipe, display = link:match('^(.-)|(.*)$')
if not display then
link = prePipe or link
local prePipe, postPipe = link:match('^(.-)|(.*)$')
 
link = prePipe or link
-- Find the page, if it exists.
display = postPipe
-- For links like [[#Bar]], the page will be nil.
local preHash, postHash = link:match('^(.-)#(.*)$')
local page
if not preHash then
-- We have a link like [[Foo]].
page = link
elseif preHash ~= '' then
-- We have a link like [[Foo#Bar]].
page = preHash
end
end


-- Find the section, if it exists.
-- Find the display value.
local section
if not display then
if postHash and postHash ~= '' then
local page, section = link:match('^(.-)#(.*)$')
section = postHash
if page then
display = page .. ' § ' .. section
end
end
end
return {
link = link,
page = page,
section = section,
display = display,
}
end


function p._formatLink(options)
-- Assemble the link.
-- The formatLink export function, for use in modules.
if display then
checkType('_formatLink', 1, options, 'table')
return string.format('[[%s%s|%s]]', colon, link, display)
checkTypeForNamedArg('_formatLink', 'link', options.link, 'string', false)
else
checkTypeForNamedArg(
return string.format('[[%s%s]]', colon, link)
'_formatLink',
'display',
options.display,
'string',
true
)
checkTypeForNamedArg(
'_formatLink',
'italicizePage',
options.italicizePage,
'boolean',
true
)
checkTypeForNamedArg(
'_formatLink',
'italicizeSection',
options.italicizeSection,
'boolean',
true
)
 
local parsed = parseLink(options.link)
local display = options.display or parsed.display
-- Deal with the case where we don't have to pipe the link
if not display and not parsed.section and not options.italicizePage then
return string.format('[[:%s]]', parsed.link)
end
end
-- Find the display text for piped links
if not display then
local page = maybeItalicize(parsed.page, options.italicizePage)
local section = maybeItalicize(parsed.section, options.italicizeSection)
if not page then
display = string.format('§&nbsp;%s', section)
elseif section then
display = string.format('%s §&nbsp;%s', page, section)
else
display = page
end
end
return string.format('[[:%s|%s]]', parsed.link, display)
end
end


خط ۲۶۹: خط ۱۸۵:
if not s then
if not s then
return p.makeWikitextError(
return p.makeWikitextError(
'no text specified',
'هیچ متنی تعیین نشده است',
'Template:Hatnote#Errors',
'الگو:Hatnote#خطاها',
args.category
args.category
)
)
خط ۲۸۲: خط ۱۹۸:
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
checkType('_hatnote', 2, options, 'table', true)
options = options or {}
local classes = {'hatnote'}
local classes = {'hatnote', 'navigation-not-searchable'}
local extraclasses = options.extraclasses
local extraclasses = options.extraclasses
local selfref = options.selfref
local selfref = options.selfref
خط ۲۹۳: خط ۲۰۸:
end
end
return string.format(
return string.format(
'<div role="note" class="%s">%s</div>',
'<div class="%s">%s</div>',
table.concat(classes, ' '),
table.concat(classes, ' '),
s
s
لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در ویکی حج منتشرشده تحت Creative Commons Attribution-NonCommercial-ShareAlike در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

الگوی به‌کاررفته در این صفحه: