Module:FileUtil

--[=[ MediaUtil Utilities for handling of media files, e.g. images, videos, ... ]=]
 * addParameter
 * replaceParameter

-- table for export 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

-- Provide template access and expose URLutil table to require local p = {}

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