nextfile/README.md

53 lines
1.8 KiB
Markdown
Raw Normal View History

2023-12-12 16:26:05 +00:00
# nextfile
`nextfile` is a Lua library used to generate the "next" filename in a sequence.
## Installation
`nextfile` is published on [LuaRocks](https://luarocks.org), use `luarocks install nextfile` to install it.
## Usage
The `nextfile` library actually contains two exported modules, `nextfile` and `prevfile`.
`prevfile` scans the files in a directory and returns the "most recent" filename according to a ["human sort"](https://en.wikipedia.org/wiki/Natural_sort_order) algorithm.
`prevfile` is also leveraged by `nextfile`, which then gives the "next file" according to the following rules:
- If the previous filename is entirely numeric, then the next file is the next number. For example, if the previous file were "500.jpg", then the next file would be "501.jpg".
- If the previous filename ends in a letter, then the next file will bump it to the next letter. For example, if the previous file were "200a.png", the next file would be "200b.png".
By default, `nextfile` will give the next file the same file extension as the previous file; there is a second optional parameter for specifying the file extension.
2023-12-12 16:45:17 +00:00
## Examples
### Create Test Files
```sh
user@box:~$ cd $(mktemp -d)
user@box:/tmp/tmp.g9nf7G4U1C $ touch {1,2,3}.txt
```
### Use prevfile
```lua
local prevfile = require("prevfile")
local pfile = prevfile.prevfile("/tmp/tmp.g9nf7G4U1C")
print(pfile) -- 3.txt
```
### Use nextfile
```lua
local nextfile = require("nextfile")
local nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C")
print(nfile) -- 4.txt
-- Specify an alternate file extension
nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C", "png")
print(nfile) -- 4.png
```
### Create Alphabetical Test File
```sh
user@box:/tmp/tmp.g9nf7G4U1C $ touch 4a.txt
```
```lua
local nextfile = require("nextfile")
local nfile = nextfile.nextfile("/tmp/tmp.g9nf7G4U1C")
print(nfile) -- 4b.txt
```