Editing Module:Section link

Jump to: navigation, search

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.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
 
-- This module implements {{section link}}.
 
-- This module implements {{section link}}.
require('Module:No globals');
 
  
 
local checkType = require('libraryUtil').checkType
 
local checkType = require('libraryUtil').checkType
Line 9: Line 8:
 
display = display or section
 
display = display or section
 
page = page or ''
 
page = page or ''
-- MediaWiki doesn't allow these in `page`, so only need to do for `section`
 
if type(section) == 'string' then
 
section = string.gsub(section, "{", "{")
 
section = string.gsub(section, "}", "}")
 
end
 
 
return string.format('[[%s#%s|%s]]', page, section, display)
 
return string.format('[[%s#%s|%s]]', page, section, display)
end
 
 
local function normalizeTitle(title)
 
title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '')
 
title = mw.ustring.gsub(title, "%b<>", "")
 
return mw.title.new(title).prefixedText
 
 
end
 
end
  
Line 52: Line 40:
 
local linkPage = page or ''
 
local linkPage = page or ''
 
local section = sections[1] or 'Notes'
 
local section = sections[1] or 'Notes'
local display = '§&nbsp;' .. section
+
local display = '§&thinsp;' .. section
 
if isShowingPage then
 
if isShowingPage then
 
page = page or title.prefixedText
 
page = page or title.prefixedText
if options.display and options.display ~= '' then
+
display = page .. ' ' .. display
if normalizeTitle(options.display) == normalizeTitle(page) then
 
display = options.display .. ' ' .. display
 
else
 
error(string.format(
 
'Display title "%s" was ignored since it is ' ..
 
"not equivalent to the page's actual title",
 
options.display
 
), 0)
 
end
 
else
 
display = page .. ' ' .. display
 
end
 
 
end
 
end
 
return makeSectionLink(linkPage, section, display)
 
return makeSectionLink(linkPage, section, display)
Line 90: Line 66:
  
 
-- Add the intro text.
 
-- Add the intro text.
local intro = '§§&nbsp;'
+
local intro = '§§&thinsp;'
 
if isShowingPage then
 
if isShowingPage then
 
intro = (page or title.prefixedText) .. ' ' .. intro
 
intro = (page or title.prefixedText) .. ' ' .. intro
Line 101: Line 77:
  
 
function p.main(frame)
 
function p.main(frame)
local yesno = require('Module:Yesno')
 
 
local args = require('Module:Arguments').getArgs(frame, {
 
local args = require('Module:Arguments').getArgs(frame, {
 
wrappers = 'Template:Section link',
 
wrappers = 'Template:Section link',
Line 112: Line 87:
 
end
 
end
 
})
 
})
 
for k, v in pairs(args) do -- replace underscores in the positional parameter values
 
if 'number' == type(k) then
 
if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes
 
args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters
 
else
 
args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores
 
end
 
end
 
end
 
  
 
-- Sort the arguments.
 
-- Sort the arguments.
Line 130: Line 95:
 
-- Doing this in the loop because of a bug in [[Module:Arguments]]
 
-- Doing this in the loop because of a bug in [[Module:Arguments]]
 
-- when using pairs with deleted arguments.
 
-- when using pairs with deleted arguments.
page = mw.text.decode(v, true)
+
page = v
 
elseif type(k) == 'number' then
 
elseif type(k) == 'number' then
 
sections[k] = v
 
sections[k] = v
Line 136: Line 101:
 
options[k] = v
 
options[k] = v
 
end
 
end
end
 
 
options.nopage = yesno (options.nopage); -- make boolean
 
 
-- Extract section from page, if present
 
if page then
 
local p, s = page:match('^(.-)#(.*)$')
 
if p then page, sections[1] = p, s end
 
 
end
 
end
  

Please note that all contributions to All About Ayrshire may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, 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 (see All About Ayrshire:Copyrights for details). Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)

Template used on this page: