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

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

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

نسخهٔ فعلی متن شما
خط ۹: خط ۹:
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]]
خط ۵۷: خط ۵۶:
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
خط ۹۴: خط ۹۳:
-- 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
and yesno(addTrackingCategory) ~= false -- Allow opting out
then
category = 'Hatnote templates with errors'
category = 'Hatnote templates with errors'
category = string.format(
category = string.format(
خط ۱۳۰: خط ۱۲۶:
-- 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',
'no link specified',
'Template:Format link#Errors',
'Template:Format hatnote link#Errors',
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.
checkType('_formatLink', 1, link, 'string')
return '<i>' .. s .. '</i>'
checkType('_formatLink', 2, display, 'string', true)
end
 
local function maybeItalicize(s, shouldItalicize)
-- italicize s if s is a string and the shouldItalicize parameter is true.
if s and shouldItalicize then
return italicize(s)
else
return s
end
end


local function parseLink(link)
-- Remove the initial colon for links where it was specified manually.
-- 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)
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 .. ' §&nbsp;' .. 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(
checkTypeForNamedArg('_formatLink', 'link', options.link, 'string', false)
'[[:%s|%s]]',
checkTypeForNamedArg(
string.gsub(link, '|(.*)$', ''), --display overwrites manual piping
'_formatLink',
display
'display',
)
options.display,
else
'string',
return string.format('[[:%s]]', link)
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
-- 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
end
return string.format('[[:%s|%s]]', parsed.link, display)
end
end


لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در ویکی حج منتشرشده تحت Creative Commons Attribution-NonCommercial-ShareAlike در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). اگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر ویکی حج:حق تکثیر را ببینید). کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو راهنمای ویرایش‌کردن (در پنجرهٔ تازه باز می‌شود)

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