Modul:AL
Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:AL
p = {}
function RemoveSelflink (link)
if link == "[[" .. pagename .. "]]" then
return pagename
else
return link
end
end
local Replacements = mw.loadData ('Modul:AL/Replacements')
function replacements (text)
for word in pairs (Replacements) do
for repl in pairs (Replacements[word]) do
if "[[" .. Replacements[word][repl] .. "]]" == text then
text = text:gsub( "[[]", "")
text = text:gsub( "[]]", "")
return "[[" .. word .. "|" .. text .. "]]"
end
end
end
return text
end
function link (link)
-- slova odpovídající následujícím výrazům nebudou mít odkaz
local noLinks = { "^[(]*[0-9]+[.-,;)]*$", "^[0-9]+[/][0-9]+$" }
for l in pairs (noLinks) do
if link:find (noLinks[l]) then
return replacements (link)
end
end
-- slova začínající na ! nebudou prolinkována, ale ! se nevloží
if link:find ("^[!]") then
return link:gsub ("^[!]", "")
end
-- podtržítko (_) se změní na mezeru
local out = link:gsub("_", " ")
-- defaultní linkování slova
out = out:gsub("^(.*)$","[[%1]]")
-- závorky vždy na konec, resp. začátek slova
out = out:gsub("(.*)[(](.*)", "(%1%2")
out = out:gsub("(.*)[)](.*)", "%1%2)")
-- interpunkce ignorovaná na konci slova
local ignores = { ";", ",", "!", "?", "/" }
for i in pairs (ignores) do
out = out:gsub("[" .. ignores[i] .. "][]][]]", "]]" .. ignores[i])
out = out:gsub("[" .. ignores[i] .. "][)]", ")" .. ignores[i])
end
-- výrazy s lomítkem (/)
if out:find("[^/][/][^/]") then
out = out:gsub("[]][]]","")
out = out:gsub("/","]]")
end
-- dvě lomítka vloží 1 lomítko
out = out:gsub("[/][/]","/")
return replacements (out)
end
function p.print (frame)
local out = ""
local arg = {}
n = 1
-- aby šlo pracovat s počtem argumentů
for a in pairs (frame:getParent().args) do
table.insert (arg, frame:getParent().args[n])
n = n + 1
end
local page = mw.title.getCurrentTitle()
pagename = page.text
local text = ""
n = 1
for a in pairs (arg) do
text = text .. arg[n]
if n ~= #arg then
text = text .. "|"
end
n = n + 1
end
local words = {}
for word in text:gmatch ("[^ ]+") do
table.insert (words, word)
end
n = 1
for word in pairs (words) do
out = out .. link (words[word])
if word ~= #words then
out = out .. " "
end
end
return out
end
return p