Editing Module:Hatnote inline

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. Read the Privacy Policy to learn what information we collect about you and how we use it.

If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 2: Line 2:
--                              Module:Hatnote-inline                        --
--                              Module:Hatnote-inline                        --
--                                                                            --
--                                                                            --
-- This module produces hatnote-style links and links to related articles,    --
-- This module produces *inline* hatnote links and links to related articles. --
-- but inside a <span>, instead of the <div> used by Module:Hatnote.  It     --
-- It implements the {{hatnote-inline}} meta-template, and                    --
-- implements the {{hatnote-inline}} meta-template.                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------


local libraryUtil = require('libraryUtil')
local checkType = libraryUtil.checkType
local mHatnote = require('Module:Hatnote')
local mHatnote = require('Module:Hatnote')
local mArguments = require('Module:Arguments')
local getArgs = mHatnote.getArgs
local yesno = require('Module:Yesno')
local removeInitialColon = mHatnote.removeInitialColon
local findNamespaceId = mHatnote.findNamespaceId
local mArguments -- lazily initialise [[Module:Arguments]]
local yesno -- lazily initialise [[Module:Yesno]]
 
local p = {}
local p = {}


function p.hatnoteInline (frame)
--------------------------------------------------------------------------------
local args = mArguments.getArgs(frame)
-- Helper functions - these are already in Module:Hatnote, actually.
local hatnote = mHatnote.hatnote(frame)
--------------------------------------------------------------------------------
if args.inline == nil or yesno(args.inline, true) then
 
local subs = {
function p.findNamespaceId(link, removeColon)
['^<div'] = '<span',
-- Finds the namespace id (namespace number) of a link or a pagename. This
['</div>$'] = '</span>'
-- 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
for k, v in pairs(subs) do hatnote = string.gsub(hatnote, k, v) end
-- trimming, set the removeColon parameter to true.
checkType('findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 2, removeColon, 'boolean', true)
if removeColon ~= false then
link = removeInitialColon(link)
end
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end
 
function p.formatPages(...)
-- Formats a list of pages using formatLink and returns it as an array. Nil
-- values are not allowed.
local pages = {...}
local ret = {}
for i, page in ipairs(pages) do
ret[i] = p._formatLink(page)
end
return ret
end
 
function p.formatPageTables(...)
-- Takes a list of page/display tables and returns it as a list of
-- formatted links. Nil values are not allowed.
local pages = {...}
local links = {}
for i, t in ipairs(pages) do
checkType('formatPageTables', i, t, 'table')
local link = t[1]
local display = t[2]
links[i] = p._formatLink(link, display)
end
return links
end
 
function p.makeWikitextError(msg, helpLink, addTrackingCategory)
-- 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')
local title = mw.title.getCurrentTitle()
-- Make the help link text.
local helpText
if helpLink then
helpText = ' ([[' .. helpLink .. '|help]])'
else
helpText = ''
end
-- Make the category text.
local category
if not title.isTalkPage and yesno(addTrackingCategory) ~= false then
category = 'Hatnote templates with errors'
category = string.format(
'[[%s:%s]]',
mw.site.namespaces[14].name,
category
)
else
category = ''
end
return string.format(
'<strong class="error">Error: %s%s.</strong>%s',
msg,
helpText,
category
)
end
 
--------------------------------------------------------------------------------
-- Hatnote-inline
--
-- Produces standard hatnote-inline text. Implements the {{hatnote-inline}} template.
--------------------------------------------------------------------------------
 
function p.hatnote(frame)
local args = getArgs(frame)
local s = args[1]
local options = {}
if not s then
return p.makeWikitextError(
'no text specified',
'Template:Hatnote-inline#Errors',
args.category
)
end
end
return hatnote
options.extraclasses = args.extraclasses
options.selfref = args.selfref
return p._hatnote(s, options)
end
end


p.hatnote = p.hatnoteInline --alias
function p._hatnote(s, options)
checkType('_hatnote', 1, s, 'string')
checkType('_hatnote', 2, options, 'table', true)
local classes = {'hatnote-inline'}
local extraclasses = options.extraclasses
local selfref = options.selfref
if type(extraclasses) == 'string' then
classes[#classes + 1] = extraclasses
end
if selfref then
classes[#classes + 1] = 'selfref'
end
return string.format(
'<span class="%s">%s</span>',
table.concat(classes, ' '),
s
)
end


return p
return p
Please note that all contributions to Nonbinary Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see Nonbinary Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)

Template used on this page: