انتقل إلى المحتوى

وحدة:Hatnote

صفحة محمية جزئيًّا (سماح للمحررين)
من ويكيبيديا، الموسوعة الحرة
--------------------------------------------------------------------------------
-- Module:Hatnote --
-- --
-- This module produces hatnote links and links to related articles. It --
-- implements the {{hatnote}} and {{format link}} meta-templates and includes --
-- helper functions for other Lua hatnote modules. --
--------------------------------------------------------------------------------

locallibraryUtil=require('libraryUtil')
localcheckType=libraryUtil.checkType
localcheckTypeForNamedArg=libraryUtil.checkTypeForNamedArg
localmArguments-- lazily initialise [[Module:Arguments]]
localyesno-- lazily initialise [[Module:Yesno]]
localformatLink-- lazily initialise [[Module:Format link]]._formatLink

localp={}

--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------

localcurNs=mw.title.getCurrentTitle().namespace
p.missingTargetCat=
--Default missing target category, exported for use in related modules
((curNs==0)or(curNs==14))and
'مقالات بقوالب ملاحظات تستهدف صفحة غير موجودة'ornil

localfunctiongetArgs(frame)
-- Fetches the arguments from the parent frame. Whitespace is trimmed and
-- blanks are removed.
mArguments=require('Module:Arguments')
returnmArguments.getArgs(frame,{parentOnly=true})
end

localfunctionremoveInitialColon(s)
-- Removes the initial colon from a string, if present.
returns:match('^:?(.*)')
end

functionp.findNamespaceId(link,removeColon)
-- Finds the namespace id (namespace number) of a link or a pagename. This
-- 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
-- trimming, set the removeColon parameter to false.
checkType('findNamespaceId',1,link,'string')
checkType('findNamespaceId',2,removeColon,'boolean',true)
ifremoveColon~=falsethen
link=removeInitialColon(link)
end
localnamespace=link:match('^(.-):')
ifnamespacethen
localnsTable=mw.site.namespaces[namespace]
ifnsTablethen
returnnsTable.id
end
end
return0
end

functionp.makeWikitextError(msg,helpLink,addTrackingCategory,title)
-- Formats an error message to be returned to wikitext. If
-- addTrackingCategory is not false after being returned from
-- [[Module:Yesno]], and if we are not on a talk page, a tracking category
-- is added.
checkType('makeWikitextError',1,msg,'string')
checkType('makeWikitextError',2,helpLink,'string',true)
yesno=require('Module:Yesno')
title=titleormw.title.getCurrentTitle()
-- Make the help link text.
localhelpText
ifhelpLinkthen
helpText=' ([['..helpLink..'|مساعدة]])'
else
helpText=''
end
-- Make the category text.
localcategory
ifnottitle.isTalkPage-- Don't categorise talk pages
andtitle.namespace~=2-- Don't categorise userspace
andyesno(addTrackingCategory)~=false-- Allow opting out
then
category='قوالب ملاحظات علوية بها أخطاء'
category=mw.ustring.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category=''
end
returnmw.ustring.format(
'<strong class= "error" >خطأ: %s%s.</strong>%s',
msg,
helpText,
category
)
end

functionp.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=disambiguatoror'توضيح'
returnmw.ustring.format('%s (%s)',page,disambiguator)
end

--------------------------------------------------------------------------------
-- Hatnote
--
-- Produces standard hatnote text. Implements the {{hatnote}} template.
--------------------------------------------------------------------------------

functionp.hatnote(frame)
localargs=getArgs(frame)
locals=args[1]
ifnotsthen
returnp.makeWikitextError(
'لم يُحدد نص',
'قالب:ملاحظة علوية#أخطاء',
args.category
)
end
returnp._hatnote(s,{
extraclasses=args.extraclasses,
selfref=args.selfref
})
end

functionp._hatnote(s,options)
checkType('_hatnote',1,s,'string')
checkType('_hatnote',2,options,'table',true)
options=optionsor{}
localinline=options.inline
localhatnote=mw.html.create(inline==1and'span'or'div')
localextraclasses
iftype(options.extraclasses)=='string'then
extraclasses=options.extraclasses
end

hatnote
:attr('role','note')
:addClass(inline==1and'hatnote-inline'or'hatnote')
:addClass('navigation-not-searchable')
:addClass(extraclasses)
:addClass(options.selfrefand'selfref')
:wikitext(s)

returnmw.getCurrentFrame():extensionTag{
name='templatestyles',args={src='Module:Hatnote/styles.css'}
}..tostring(hatnote)
end

returnp