Skip to content

Latest commit

 

History

History
133 lines (111 loc) · 4.25 KB

README.md

File metadata and controls

133 lines (111 loc) · 4.25 KB

A library for converting ron to a table.

It uses tabled as a rendering backend.

Get started

The library supports 2 modes for a table embeded and collapsed. It also provides with a list of options to modify the table, such as style, alignment, padding and more.

You can change an orientation of a map and sequence via Orientation.

You'll find to examples for the modes bellow.

Usage

Add the library to a dependency list.

[dependencies]
ron_to_table = "0.1.0"
Example (embeded) Result
let data = r#"Scene(
    materials: {
        "metal": (reflectivity: 1.0),
        "plastic": (reflectivity: 0.5),
    },
    entities: [
        (name: "hero", material: "metal"),
        (name: "monster", material: "plastic"),
    ],
)"#;

let scene = ron::from_str(data).unwrap();
let table = ron_to_table::to_string(&scene);

println!("{}", table);
+-------------+--------------------------------------------+
|  entities   | +----------------------------+             |
|             | | +------------+---------+   |             |
|             | | |  material  |  metal  |   |             |
|             | | +------------+---------+   |             |
|             | | |  name      |  hero   |   |             |
|             | | +------------+---------+   |             |
|             | +----------------------------+             |
|             | | +------------+-----------+ |             |
|             | | |  material  |  plastic  | |             |
|             | | +------------+-----------+ |             |
|             | | |  name      |  monster  | |             |
|             | | +------------+-----------+ |             |
|             | +----------------------------+             |
+-------------+--------------------------------------------+
|  materials  | +-----------+----------------------------+ |
|             | |  metal    | +----------------+-----+   | |
|             | |           | |  reflectivity  |  1  |   | |
|             | |           | +----------------+-----+   | |
|             | +-----------+----------------------------+ |
|             | |  plastic  | +----------------+-------+ | |
|             | |           | |  reflectivity  |  0.5  | | |
|             | |           | +----------------+-------+ | |
|             | +-----------+----------------------------+ |
+-------------+--------------------------------------------+
Example (collapsed) Result
use ron_to_table::RonTable;
use tabled::settings::Style;

let data = r#"Scene(
    materials: {
        "metal": (reflectivity: 1.0),
        "plastic": (reflectivity: 0.5),
    },
    entities: [
        (name: "hero", material: "metal"),
        (name: "monster", material: "plastic"),
    ],
)"#;

let scene = ron::from_str(data).unwrap();
let table = RonTable::default()
    .collapse()
    .with(Style::extended())
    .build(&scene);

println!("{table}");
╔═══════════╦══════════╦═══════════════════╗
║ entities  ║ material ║ metal             ║
║           ╠══════════╬═══════════════════╣
║           ║ name     ║ hero              ║
║           ╠══════════╬═══════════════════╣
║           ║ material ║ plastic           ║
║           ╠══════════╬═══════════════════╣
║           ║ name     ║ monster           ║
╠═══════════╬═════════╦╩═════════════╦═════╣
║ materials ║ metal   ║ reflectivity ║ 1   ║
║           ╠═════════╬══════════════╬═════╣
║           ║ plastic ║ reflectivity ║ 0.5 ║
╚═══════════╩═════════╩══════════════╩═════╝