nu_plugin_ron

Crates.ionu_plugin_ron
lib.rsnu_plugin_ron
version0.1.1
sourcesrc
created_at2023-10-10 14:35:00.364919
updated_at2023-10-10 14:42:13.510649
descriptionA Nushell plugin for parsing RON text.
homepage
repositoryhttps://gitlab.com/moinmoti/nu_plugin_ron
max_upload_size
id999162
size50,383
Moin Hussain Moti (moinmoti)

documentation

README

nu_plugin_ron

This is a nushell plugin to parse RON text into nu structured types.

Installing

To add the plugin permanently, just install it and call register on it:

Using Cargo

cargo install nu_plugin_ron
register ~/.cargo/bin/nu_plugin_ron

Usage

Consider the following RON example:

Scene( // class name is optional
    materials: { // this is a map
        "metal": (
            reflectivity: 1.0,
        ),
        "plastic": (
            reflectivity: 0.5,
        ),
    },
    entities: [ // this is an array
        (
            name: "hero",
            material: "metal",
        ),
        (
            name: "monster",
            material: "plastic",
        ),
    ],
)
$ open example.ron
╭───────────┬───────────────────────────────────────╮
│           │ ╭───┬──────────┬─────────╮            │
│ entities  │ │ # │ material │  name   │            │
│           │ ├───┼──────────┼─────────┤            │
│           │ │ 0 │ metal    │ hero    │            │
│           │ │ 1 │ plastic  │ monster │            │
│           │ ╰───┴──────────┴─────────╯            │
│           │ ╭─────────┬─────────────────────────╮ │
│ materials │ │         │ ╭──────────────┬──────╮ │ │
│           │ │ metal   │ │ reflectivity │ 1.00 │ │ │
│           │ │         │ ╰──────────────┴──────╯ │ │
│           │ │         │ ╭──────────────┬──────╮ │ │
│           │ │ plastic │ │ reflectivity │ 0.50 │ │ │
│           │ │         │ ╰──────────────┴──────╯ │ │
│           │ ╰─────────┴─────────────────────────╯ │
╰───────────┴───────────────────────────────────────╯

$ open example.ron | update materials.metal.reflectivity 2.00 | save -f new_example.ron
$ open new_example.ron
╭───────────┬───────────────────────────────────────╮
│           │ ╭───┬──────────┬─────────╮            │
│ entities  │ │ # │ material │  name   │            │
│           │ ├───┼──────────┼─────────┤            │
│           │ │ 0 │ metal    │ hero    │            │
│           │ │ 1 │ plastic  │ monster │            │
│           │ ╰───┴──────────┴─────────╯            │
│           │ ╭─────────┬─────────────────────────╮ │
│ materials │ │         │ ╭──────────────┬──────╮ │ │
│           │ │ metal   │ │ reflectivity │ 2.00 │ │ │
│           │ │         │ ╰──────────────┴──────╯ │ │
│           │ │         │ ╭──────────────┬──────╮ │ │
│           │ │ plastic │ │ reflectivity │ 0.50 │ │ │
│           │ │         │ ╰──────────────┴──────╯ │ │
│           │ ╰─────────┴─────────────────────────╯ │
╰───────────┴───────────────────────────────────────╯
Commit count: 5

cargo fmt