Expand description
§pico8-to-lua
A library and command line tool to convert Pico-8’s dialect of Lua to plain Lua.
§Installation
§As a library
cargo add pico8-to-lua§As a command line tool
cargo install pico8-to-lua§Examples
§Patch a cart
pico8-to-lua cart.p8 > patched-cart.p8§Patch stdin
echo "if (true) x+= 1" | pico8-to-lua -
if true then x = x + (1) end§Patch the Code
use pico8_to_lua::patch_lua;
assert_eq!(patch_lua("x += 1"), "x = x + (1)");§Patch the Includes
use pico8_to_lua::patch_includes;
fn comment_it(path: &str) -> String {
format!("-- INCLUDE '{}'", path)
}
assert_eq!(patch_includes("#include file.p8", comment_it), "-- INCLUDE 'file.p8'");It’s recommended to patch the includes before patching the code in practice because the includes may need patching as well.
§Omissions
This handles most of the Pico-8 dialect. However, it does not handle the rotation operators: ‘>><’ and ‘<<>’.
§Word of Caution
Don’t go trusting this too much because it is merely a collection of regular expressions and not a full blown language parser like it should be.
§Origin
This is a port of Ben Wiley’s pico8-to-lua Lua tool to Rust. Pico8-to-lua was originally derived from a function in Jez Kabanov’s PICOLOVE project.
§License
PICOLOVE is licensed under the Zlib license and so is Wiley’s pico8-to-lua and so this project is.
Functions§
- find_
includes - Return each path from the the Pico-8 “#include path.p8” statements.
- patch_
includes - Resolve the Pico-8 “#include path.p8” statements without possible error.
- patch_
lua - Given a string with the Pico-8 dialect of Lua, it will convert that code to plain Lua.
- try_
patch_ includes - Resolve the Pico-8 “#include path.p8” statements with possible errors.
- was_
patched - Returns true if the patch_output was patched by testing whether it is
Cow::Owned; aCow::Borrowedimplies it was not patched.