Moduuli:Polku
Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Polku/ohje
local export = {}
function export.getRelativePathTo(from, to)
local fromList = mw.text.split(from, "/")
local toList = mw.text.split(to, "/")
local toListLeft = mw.text.split(to, "/")
local fromListLenLeft = #fromList
local l = math.min(#fromList, #toList)
for i = 1, l do
assert(fromList[i] ~= "", "Tyhjä arvo lähdepolussa")
assert(toList[i] ~= "", "Tyhjä arvo kohdepolussa")
if fromList[i] ~= toList[i] then
break
end
table.remove(toListLeft, 1)
fromListLenLeft = fromListLenLeft - 1
end
if fromListLenLeft == 0 and #toListLeft == 0 then
assert(#toList > 0, "kohdepolku on tyhjä")
assert(toList[#toList] ~= nil, "kohde on tyhjä")
return toList[#toList]
end
local pathUp = string.rep("../", fromListLenLeft - 1)
if #toListLeft == 0 then
return pathUp .. ".."
end
return pathUp .. table.concat(toListLeft, "/")
end
return export