| Modul Lua ini digunakan pada sekitar 129.000 halaman. Untuk mencegah suntingan mengganggu skala besar dan beban peladen, setiap perubahan harus diuji di subhalaman /bak pasir atau /kasus uji Modul:Hatnote, atau bak pasir modul Anda. Perubahan yang telah diuji kemudian dapat ditambahkan ke halaman ini dalam satu suntingan. Pertimbangkan untuk mendiskusikan perubahan di halaman pembicaraan sebelum mengimplementasikannya. |
| Modul ini dilindungi. Modul ini sangat mencolok yang digunakan oleh banyak halaman, atau sangat sering disubstitusikan. Karena vandalisme atau kesalahan akan mempengaruhi banyak halaman, dan suntingan kecil dapat memberi beban besar pada server, modul ini dilindungi dari penyuntingan. |
| Modul ini menggunakan Lua: |
| Modul ini menggunakan TemplateStyles: |
PenggunaanPenggunaan
Fungsi dalam modul ini tidak dapat digunakan langsung dari #invoke, dan harus digunakan melalui template. Silakan lihat Templat:Hatnote dan Templat:Format link untuk dokumentasi.
Penggunaan di modul lainPenggunaan di modul lain
localmHatnote=require('Module:Hatnote')
Dokumentasi di atas ditransklusikan dari Modul:Hatnote/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-------------------------------------------------------------------------------- -- 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 -------------------------------------------------------------------------------- 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.defaultClasses(inline) -- Provides the default hatnote classes as a space-separated string; useful -- for hatnote-manipulation modules like [[Module:Hatnote group]]. return (inline==1and'hatnote-inline'or'hatnote')..' '.. 'navigation-not-searchable' 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'disambiguasi' returnmw.ustring.format('%s (%s)',page,disambiguator) 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..'|help]])' 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='Hatnote templates with errors' category=mw.ustring.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category='' end returnmw.ustring.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end localcurNs=mw.title.getCurrentTitle().namespace p.missingTargetCat= --Default missing target category, exported for use in related modules ((curNs==0)or(curNs==14))and 'Articles with hatnote templates targeting a nonexistent page'ornil functionp.quote(title) --Wraps titles in quotation marks. If the title starts/ends with a quotation --mark, kerns that side as with {{-'}} localquotationMarks={ ["'"]=true,['"']=true,['“']=true,["‘"]=true,['”']=true,["’"]=true } localquoteLeft,quoteRight=-- Test if start/end are quotation marks quotationMarks[string.sub(title,1,1)], quotationMarks[string.sub(title,-1,-1)] ifquoteLeftorquoteRightthen title=mw.html.create("span"):wikitext(title) end ifquoteLeftthentitle:css("padding-left","0.15em")end ifquoteRightthentitle:css("padding-right","0.15em")end return'"'..tostring(title)..'"' end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- p['']=function(frame)returnp.hatnote(frame:newChild{title="Template:Hatnote"})end functionp.hatnote(frame) localargs=getArgs(frame) locals=args[1] ifnotsthen returnp.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', 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(p.defaultClasses(inline)) :addClass(extraclasses) :addClass(options.selfrefand'selfref'ornil) :wikitext(s) returnmw.getCurrentFrame():extensionTag{ name='templatestyles',args={src='Module:Hatnote/styles.css'} }..tostring(hatnote) end returnp