If you find this useful, please consider supporting my work with a donation.
Momoa is a general purpose JSON utility toolkit, containing:
A tool like Momoa comes in handy when you want to know not just the result of JSON parsing, but exactly what is contained in the original JSON string.
There are two parsing methods: one for JSON and one for JSON-C.
To parse a JSON string into an AST, use the json::parse()
function:
```rs use momoa::ast::*; use momoa::json;
fn do_parse(code) -> Node { let ast = json::parse(code).unwrap();
// do something with ast
ast
} ```
To parse a JSON-C string into an AST, use the jsonc::parse()
function:
```rs use momoa::ast::*; use momoa::jsonc;
fn do_parse(code) -> Node { let ast = jsonc::parse(code).unwrap();
// do something with ast
ast
} ```
To produce JSON tokens from a string, use the json::tokenize()
function:
```rs use momoa::*;
fn do_parse(code) -> Vec
// do something with ast
result
} ```
To produce JSON tokens from a string, use the jsonc::tokenize()
function:
```rs use momoa::*;
fn do_parse(code) -> Vec
// do something with ast
result
} ```
To work on Momoa, you'll need:
Make sure both are installed by visiting the links and following the instructions to install.
Now you're ready to clone the repository:
bash
git clone https://github.com/humanwhocodes/momoa.git
Then, enter the directory and install the dependencies:
bash
cd momoa/rust
cargo build
After that, you can run the tests via:
bash
cargo test
Apache 2.0
Momoa is the last name of American actor Jason Momoa. Because "JSON" is pronounced "Jason", I wanted a name that played off of this fact. The most obvious choice would have been something related to Jason and the Argonauts, as this movie is referenced in the JSON specification directly. However, both "Argo" and "Argonaut" were already used for open source projects. When I did a search for "Jason" online, Jason Momoa was the first result that came up. He always plays badass characters so it seemed to fit.
There are a number of programs that allow C-style comments in JSON files, most notably, configuration files for Visual Studio Code. As there seems to be a need for this functionality, I decided to add it out-of-the-box.