Die Dokumentation für dieses Modul kann unter Modul:Benutzer:Patrick87/Doku erstellt werden

local URLutil = {}

URLutil.getURIScheme = function ( uri )
    if type( uri ) == "string" then
        local prot, colon, slashes = uri:match( "^%s*([a-zA-Z]*)(:?)(/?/?)" )
        if #colon == 1 and #prot >= 2 then
            return prot:lower()
        elseif #slashes == 2 and #prot == 0 then
            return "//"
        end
    end
    return false
end



local FileUtil = {}


FileUtil.addParameter = function ( file, parameter, value ) -- "value" is optional (default: "nil")
    return FileUtil.replaceParameter( file, parameter, value , false)
end -- FileUtil.addParameter()

FileUtil.replaceParameter = function ( file, parameter, value , replace) -- "value" is optional   (default: "nil")
                                                                         -- "replace" is optional (default: "true")
    local replace = (replace == Nil or replace == true)
    if type( file ) == "string" then
        local fileNew,n = FileUtil.removeParameter(file, parameter)
        if n==0 or replace then
            if value then
                fileNew = fileNew:gsub('(%]%])','|'..parameter..'='..value..']]')
            else
                fileNew = fileNew:gsub('(%]%])','|'..parameter..']]')
            end
            return fileNew
        else
            return file
        end
    end
    return false
end -- FileUtil.replaceParameter()

FileUtil.removeParameter = function ( file, parameter )
    if type( file ) == "string" then
        local fileNew,n = file:gsub('|%s*'..parameter..'%s*[^|%]]*%s*([|%]])','%1')
        return fileNew,n
    end
    return false
end -- FileUtil.removeParameter()



local p = {}

function p.getURIScheme( frame )
    return URLutil.getURIScheme( frame.args[1] ) or ""
end
function p.URLutil()
    return URLutil
end

function p.addParameter( frame )
    return FileUtil.addParameter( frame.args[1] or frame.args["file"],
                                  frame.args[2] or frame.args["parameter"],
                                  frame.args[3] or frame.args["value"]) or ""
end
function p.replaceParameter( frame )
    return FileUtil.replaceParameter( frame.args[1] or frame.args["file"],
                                      frame.args[2] or frame.args["parameter"],
                                      frame.args[3] or frame.args["value"]) or ""
end
function p.removeParameter( frame )
    return FileUtil.removeParameter( frame.args[1] or frame.args["file"],
                                     frame.args[2] or frame.args["parameter"]) or ""
end
function p.FileUtil()
    return FileUtil
end

return p