Module:FileUtil

From Dharmawiki
Jump to navigation Jump to search

--[=[ 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