From eafa6e86f7f4a5b3fa11b137d6926202a010771b Mon Sep 17 00:00:00 2001 From: myk002 Date: Tue, 29 Jun 2021 12:22:05 -0700 Subject: [PATCH] add utils.normalizePath() --- library/lua/utils.lua | 7 +++++++ test/library/utils.lua | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/library/lua/utils.lua b/library/lua/utils.lua index b0bc70af4..39a6c156e 100644 --- a/library/lua/utils.lua +++ b/library/lua/utils.lua @@ -544,6 +544,13 @@ function check_number(text) return nv ~= nil, nv end +-- Normalize directory separator slashes across platforms to '/' and collapse +-- adjacent slashes into a single slash. +local platformSlash = package.config:sub(1,1) +function normalizePath(path) + return path:gsub(platformSlash, '/'):gsub('/+', '/') +end + function invert(tab) local result = {} for k,v in pairs(tab) do diff --git a/test/library/utils.lua b/test/library/utils.lua index b2c63dafd..6232bd9a2 100644 --- a/test/library/utils.lua +++ b/test/library/utils.lua @@ -14,6 +14,20 @@ function test.OrderedTable() end end +function test.normalizePath() + expect.eq('imapath/file.csv', utils.normalizePath('imapath/file.csv')) + expect.eq('/ima/path', utils.normalizePath('/ima/path')) + expect.eq('ima/path', utils.normalizePath('ima//path')) + + expect.eq('imapath', utils.normalizePath('imapath')) + expect.eq('/imapath', utils.normalizePath('/imapath')) + expect.eq('/imapath', utils.normalizePath('//imapath')) + expect.eq('/imapath', utils.normalizePath('///imapath')) + + expect.eq('imapath/', utils.normalizePath('imapath/')) + expect.eq('imapath/', utils.normalizePath('imapath//')) +end + function test.invert() local t = {} local i = utils.invert{'a', 4.4, false, true, 5, t}