From 179d8b2a95c0cab592c3918564ba304ccf93598f Mon Sep 17 00:00:00 2001 From: Tobias Ulmer Date: Tue, 3 Dec 2013 14:54:44 +0100 Subject: [PATCH] Add url.to_file_path() Signed-off-by: Tobias Ulmer --- generic/url.lua | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/generic/url.lua b/generic/url.lua index 78db534..6cb8aa3 100644 --- a/generic/url.lua +++ b/generic/url.lua @@ -29,6 +29,7 @@ ]] local url = {} +local e2lib = require("e2lib") local strict = require("strict") --- parse @@ -99,6 +100,29 @@ function url.parse(url) return u end +--- Returns a file path from an URL object. +-- @param u URL object. +-- @param transport Transport of URL object must match this transport. Optional. +-- @param relative Return a relative path if true, otherwise absolute. Optional. +-- @return Path on success, false on error. +-- @return Error object on failure. +function url.to_file_path(u, transport, relative) + if transport and u.transport ~= transport then + return false, err.new("converting URL to file path: transport mismatch") + end + + if type(u.path) ~= "string" then + return false, + err.new("converting URL to file path: path component in URL empty") + end + + if relative then + return u.path + end + + return e2lib.join("/", u.path) +end + return strict.lock(url) -- vim:sw=4:sts=4:et: -- 2.39.5