diff options
Diffstat (limited to 'script/uri.lua')
-rw-r--r-- | script/uri.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/script/uri.lua b/script/uri.lua new file mode 100644 index 00000000..9053447c --- /dev/null +++ b/script/uri.lua @@ -0,0 +1,29 @@ +local fs = require 'bee.filesystem' +local platform = require 'bee.platform' +local sandbox = require 'sandbox' +local luaUriPath = (ROOT / 'src' / '3rd' / 'lua-uri'):string() +local URI = sandbox('uri.lua', luaUriPath, io.open) +local URI_FILE = sandbox('uri/file.lua', luaUriPath, io.open) +local OS = platform.OS == 'Windows' and 'win32' or 'unix' + +local function decode(uri) + local obj = URI:new(uri) + if not obj.filesystem_path then + return nil + end + local fullPath = obj:filesystem_path(OS) + local path = fs.path(fullPath) + return path +end + +local function encode(path) + local fullPath = fs.absolute(ROOT / path) + local obj = URI_FILE.make_file_uri(fullPath:string(), OS) + local uri = obj:uri() + return uri +end + +return { + encode = encode, + decode = decode, +} |