Jump to content

Module:Hatnote/sandbox

From Wikipedia, the free encyclopedia
---------------------------------------------------------------------------------- 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.checkTypelocalcheckTypeForNamedArg=libraryUtil.checkTypeForNamedArglocalmArguments-- lazily initialise [[Module:Arguments]]localyesno-- lazily initialise [[Module:Yesno]]localformatLink-- lazily initialise [[Module:Format link]] ._formatLinklocalp={}---------------------------------------------------------------------------------- Helper functions--------------------------------------------------------------------------------localcurNs=mw.title.getCurrentTitle().namespacep.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'ornillocalfunctiongetArgs(frame)-- Fetches the arguments from the parent frame. Whitespace is trimmed and-- blanks are removed.mArguments=require('Module:Arguments')returnmArguments.getArgs(frame,{parentOnly=true})endlocalfunctionremoveInitialColon(s)-- Removes the initial colon from a string, if present.returns:match('^:?(.*)')endfunctionp.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~=falsethenlink=removeInitialColon(link)endlocalnamespace=link:match('^(.-):')ifnamespacethenlocalnsTable=mw.site.namespaces[namespace]ifnsTablethenreturnnsTable.idendendreturn0endfunctionp.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.localhelpTextifhelpLinkthenhelpText=' ([['..helpLink..'|help]])'elsehelpText=''end-- Make the category text.localcategoryifnottitle.isTalkPage-- Don't categorise talk pagesandtitle.namespace~=2-- Don't categorise userspaceandyesno(addTrackingCategory)~=false-- Allow opting outthencategory='Hatnote templates with errors'category=mw.ustring.format('[[%s:%s]]',mw.site.namespaces[14].name,category)elsecategory=''endreturnmw.ustring.format('<strong class="error">Error: %s%s.</strong>%s',msg,helpText,category)endfunctionp.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'disambiguation'returnmw.ustring.format('%s (%s)',page,disambiguator)endfunctionp.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---------------------------------------------------------------------------------- Hatnote---- Produces standard hatnote text. Implements the {{hatnote}} template.--------------------------------------------------------------------------------functionp.hatnote(frame)localargs=getArgs(frame)locals=args[1]ifnotsthenreturnp.makeWikitextError('no text specified','Template:Hatnote#Errors',args.category)endreturnp._hatnote(s,{extraclasses=args.extraclasses,selfref=args.selfref})endfunctionp._hatnote(s,options)checkType('_hatnote',1,s,'string')checkType('_hatnote',2,options,'table',true)options=optionsor{}localinline=options.inlinelocalhatnote=mw.html.create(inline==1and'span'or'div')localextraclassesiftype(options.extraclasses)=='string'thenextraclasses=options.extraclassesendhatnote: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)endreturnp
close