Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/evaera/moonwave

Moonwave is a tool for generating documentation from comments in Lua source code.
https://github.com/evaera/moonwave

Last synced: 4 months ago
JSON representation

Moonwave is a tool for generating documentation from comments in Lua source code.

Awesome Lists containing this project

README

        


Moonwave

# Moonwave

Moonwave is a command line tool for generating documentation from comments in Lua source code.

This repository contains three projects:
- The Moonwave Extractor, a Rust program that parses Lua files and extracts the docs as JSON
- A plugin for [Docusaurus](https://docusaurus.io/), written in React, which displays the JSON docs visually
- The Moonwave CLI, which allows you to use both the extractor and the Docusaurus plugin without needing to know anything about how they work.

## Key features
- Easy to use: You can generate a website with little-to-no configuration and just a few comments in your Lua code.
- Extensive validation system which can catch mistakes when something doesn't make sense.
- Generates JSON from your doc comments, which can be consumed by many different tools.
- Simple doc comment format that is easy to read directly when editing your code.

## Demo
Check out the [roblox-lua-promise](https://eryn.io/roblox-lua-promise/api/Promise) docs. This website is completely generated by Moonwave!

## Name
Lua is the moon. The moon is your code. The moon influences the waves in the ocean, just like your code influences its documentation. So.. moonwave!

## Docs

[Check out the Documentation website](https://eryn.io/moonwave/)

## Building in Development and Contributing

Requirements:
- [Node.js 18+](https://nodejs.org/en/)
- [Rust 1.54.0 and Cargo](https://rustup.rs/)

1. Clone this repository
2. in `cli`, run `npm i`, `npm run tsc`, and `npm link`
3. in `docusaurus-plugin-moonwave`, run `npm i`
4. in `extractor`, run `cargo install --path . --locked`
5. in `cli`, run `npm run dev`
6. in another terminal, navigate to the project you want to test with, and run `MOONWAVE_DEV=1 moonwave dev`

You should now be able to change files in the `moonwave` folder and things should live-reload on your development website. If they don't, Ctrl+C the `moonwave dev` terminal and restart it. If you continue to have issues, try adding the `-i` flag to reinstall all dependencies.

## License
Moonwave is available under the terms of the Mozilla Public License Version 2.0. Terms and conditions are available in [LICENSE.txt](LICENSE.txt) or at .