From b0cadf63e425bd8a5700c6add607a12a31a936e7 Mon Sep 17 00:00:00 2001 From: The Magician Date: Sat, 18 Nov 2023 21:33:25 +0000 Subject: [PATCH] Allow an optional extension to be passed to nextfile --- spec/nextfile_spec.lua | 8 ++++++++ src/nextfile.lua | 15 ++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/spec/nextfile_spec.lua b/spec/nextfile_spec.lua index 7a2542e..3e7735e 100644 --- a/spec/nextfile_spec.lua +++ b/spec/nextfile_spec.lua @@ -83,5 +83,13 @@ describe("nextfile", function() assert.are.equal("/testdir/421za.txt", file) end) + + it("should use the provided file extension if one is given", function() + prevfile.prevfile = function() return "/testdir/900.txt" end + + local file = nextfile.nextfile("/testdir", "yaml") + + assert.are.equal("/testdir/901.yaml", file) + end) end) end) diff --git a/src/nextfile.lua b/src/nextfile.lua index da63c6c..be7cd5d 100644 --- a/src/nextfile.lua +++ b/src/nextfile.lua @@ -15,19 +15,28 @@ function nextfile.nextletter(letter) return string.char(nextascii) end -function nextfile.nextfile(directory) +function nextfile.nextfile(directory, extension) local previous = prevfile.prevfile(directory) if previous == nil then return nil end local dir, name, ext = nextfile.splitfilename(previous) + value = dir if tonumber(name) == nil then local lastletter = name:sub(#name) local nextletter = nextfile.nextletter(lastletter) - return dir .. name:gsub(lastletter .. "$", nextletter) .. ext + value = value .. name:gsub(lastletter .. "$", nextletter) + else + value = value .. name + 1 end - return dir .. name + 1 .. ext + if extension ~= nil then + value = value .. "." .. extension + else + value = value .. ext + end + + return value end return nextfile