| Crates.io | script-format |
| lib.rs | script-format |
| version | 1.3.2 |
| created_at | 2025-01-22 22:13:27.386469+00 |
| updated_at | 2025-02-24 22:07:16.40826+00 |
| description | A simple DSL to format data via rhai scripting |
| homepage | |
| repository | https://github.com/hardliner66/script-format |
| max_upload_size | |
| id | 1527187 |
| size | 90,983 |
I regularly needed to output data in a custom format, which is why I created a DSL based on Rhai.
cargo run -q -- -s test_format.rhai -i test.json
The most important part of the DSL is the ++ operator.
The ++ operator takes the values to its left and right and stores them internally. Once the script is done running,
all the stored values get concatenated and returned.
This allows for a really nice way to express what should get output:
let some_number = 1;
// will output 'Test 1'
~ "Test " ++ some_number;
There are also a two more conveniences, namely NL and IND.
NL is a constant holding the newline character (\r).IND is a constant holding the indentation string (Default: four spaces).There are also functions with the same name that take a number and return the value that amount of time. So if you want to
indent something by 3 levels, you can just write IND(3).
If your indentation is different than four spaces, you can set the string for a single indentation level with the
function SET_INDENT.
In order to use the DSL you need create a FormattingEngine and register all types you want to work with.
After that, you can just call the appropriate format function to format your data.