Code Formatter for Lua
lua-fmt
is pretty-printer for Lua code, written in TypeScript and deeply inspired by prettier. lua-fmt
provides an interface to format Lua code that conforms to a single and consistent standard.
While not implemented yet, the interface will be customizable to tailor the output to the user's preferences: linebreaks, string style, etc.
Installing
npm install lua-fmt
Usage
API
import {formatText} from 'lua-fmt';
console.log(formatText('local hello = "Hello"; print(hello .. " world!")'))
Command Line
Format a single file:
luafmt test/lua-5.3.4-tests/calls.lua
Format a stream from stdin
:
cat test/lua-5.3.4-tests/calls.lua | luafmt --stdin
TODO
- Add support for a
.luafmt
preferences file
Testing
lua-fmt
uses jest for automated testing.
Among the user-created tests in the test/
folder, a copy of the lua-5.3.4
tests are executed after formatting to ensure the code remains syntactically correct after formatting. For this reason, please do not modify the lua-5.3.4-tests
folder unless updating with new tests from the official Lua tests. To run these tests, lua53
is expected to be available on the PATH
.
When contributing changes, please consider writing tests to ensure they do not regress.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Oskar Schöldström - luaparse: A Lua parser written in JavaScript
- Christopher Chedeau - prettier: Prettier is an opinionated JavaScript formatter.
- Ben Newman - recast: JavaScript syntax tree transformer, nondestructive pretty-printer, and automatic source map generator.