Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Community portal
Recent changes
Random page
Help
Special pages
Donate
Islamd Wiki
Search
Search
English
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Module:Category see also
Module
Discussion
English
Read
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit source
View history
General
What links here
Related changes
Page information
In other projects
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- This module implements {{Category see also}} local mHatnote = require('Module:Hatnote') local p = {} local function makeWikitextError(msg) return string.format( '<strong class="error">Error: %s ([[Template:Category see also]])</strong>', msg ) end -- Gets the length of the sequence seq. Usually this should be done with the # -- operator, but we need to work with tables that get their values through an -- __index metamethod. local function getSequenceLength(seq) local length = 0 for i in ipairs(seq) do length = i end return length end -- Given a table of options, returns a function that formats categories for -- those options. -- -- Options: -- project - a project code such as "fr" (for the French Wikipedia) -- showPrefix - a boolean value for whether to show the "Category:" prefix -- (and the project prefix if specified) -- -- This is implemented as a function generator rather than a simple function -- so that we can just process the options once, instead of every time we -- generate a category. local function newCategoryLinker(options) local formatString if options.project then if options.showPrefix then formatString = '[[:' .. options.project .. ':Category:%s]]' else formatString = '[[:' .. options.project .. ':Category:%s|%s]]' end else if options.showPrefix then formatString = '[[:Category:%s]]' else formatString = '[[:Category:%s|%s]]' end end return function (category) local title = mw.title.new(category) local pageName, display if not title then -- category is not a valid title, usually because of invalid -- characters like < or [. Raise an error and suppress the stack -- level information so that we can catch it and format the error -- message as wikitext. error(string.format( "'%s' is not a valid category name", category ), 0) elseif title.namespace == 14 then -- Category namespace pageName = title.text display = title.text else pageName = title.prefixedText display = category end -- We can get away with using two arguments even when -- options.showDisplay is false, as string.format ignores extra -- arguments as long as there is an argument for each flag in the -- format string. return formatString:format(pageName, display) end end function p._main(args) local nLinks = getSequenceLength(args) if nLinks < 1 then return makeWikitextError('at least one parameter required') end local makeCategoryLink = newCategoryLinker{ project = args.project, showPrefix = nLinks == 1, } local links = {} for i, cat in ipairs(args) do local success, categoryLink = pcall(makeCategoryLink, cat) if success then links[i] = categoryLink else -- If there was an error, then categoryLink is the error message. return makeWikitextError(categoryLink) end end local formatString if nLinks == 1 then formatString = '%s: %s' else formatString = '%s the categories %s' end -- Don't output a comma before the "and" if we have only two links. local conjunction if nLinks == 2 then conjunction = ' and ' else conjunction = ', and ' end local hatnoteText = formatString:format( args.LABEL or args.label or 'See also', mw.text.listToText(links, ', ', conjunction) ) return mHatnote._hatnote(hatnoteText, {selfref = true}) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Category see also', }) return p._main(args) end return p
Summary:
By saving changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Page included on this page:
Module:Category see also/doc
(
edit
)
Search
Search
Editing
Module:Category see also
Add languages
Add topic