From 0d75ea92b16ff2ee88df2856bb50153ee1556981 Mon Sep 17 00:00:00 2001 From: fyears Date: Sun, 28 Nov 2021 10:45:46 +0800 Subject: [PATCH] polish get parent folder --- src/misc.ts | 5 ++++- tests/misc.test.ts | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/misc.ts b/src/misc.ts index 761ac27..c579ec7 100644 --- a/src/misc.ts +++ b/src/misc.ts @@ -45,7 +45,10 @@ export const getFolderLevels = (x: string) => { const y1 = x.split("/"); let i = 0; for (let index = 0; index + 1 < y1.length; index++) { - res.push(y1.slice(0, index + 1).join("/")); + const k = y1.slice(0, index + 1).join("/"); + if (k !== '' && k!== '/') { + res.push(k) + } } return res; }; diff --git a/tests/misc.test.ts b/tests/misc.test.ts index 82d0f79..35867fb 100644 --- a/tests/misc.test.ts +++ b/tests/misc.test.ts @@ -69,6 +69,28 @@ describe("Misc: get folder levels", () => { const res3 = ["xxx", "xxx/yyy", "xxx/yyy/zzz"]; expect(misc.getFolderLevels(item3)).to.deep.equal(res3); }); + + it("should treat path starting with / correctly", ()=> { + const item = "/xxx/yyy/zzz.md"; + const res = ["/xxx", "/xxx/yyy"]; + expect(misc.getFolderLevels(item)).to.deep.equal(res); + + const item2 = "/xxx/yyy/zzz"; + const res2 = ["/xxx", "/xxx/yyy"]; + expect(misc.getFolderLevels(item2)).to.deep.equal(res2); + + const item3 = "/xxx/yyy/zzz/"; + const res3 = ["/xxx", "/xxx/yyy", "/xxx/yyy/zzz"]; + expect(misc.getFolderLevels(item3)).to.deep.equal(res3); + + const item4 = "/xxx"; + const res4 = [] as string[]; + expect(misc.getFolderLevels(item4)).to.deep.equal(res4); + + const item5 = "/"; + const res5 = [] as string[]; + expect(misc.getFolderLevels(item5)).to.deep.equal(res5); + }); }); describe("Misc: vaild file name tests", () => {