53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# 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.
|
|
|
|
## 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
|
|
```
|