Macro fungui::node

source ·
macro_rules! node {
    (@parent($parent:expr)) => { ... };
    (@parent($parent:expr) @text($txt:expr)) => { ... };
    (@parent($parent:expr) @text($txt:expr) $($other:tt)*) => { ... };
    (@parent($parent:expr) $name:ident (
        $($key:ident = $val:expr),*
    ) {
        $($inner:tt)*
    }) => { ... };
    (@parent($parent:expr) $name:ident (
        $($key:ident = $val:expr),*
    ) {
        $($inner:tt)*
    } $($other:tt)*) => { ... };
    (@parent($parent:expr) $name:ident (
        $($key:ident = $val:expr),*
    )) => { ... };
    (@parent($parent:expr) $name:ident (
        $($key:ident = $val:expr),*
    ) $($other:tt)*) => { ... };
    (@parent($parent:expr) $name:ident {
        $($inner:tt)*
    }) => { ... };
    (@parent($parent:expr) $name:ident {
        $($inner:tt)*
    } $($other:tt)*) => { ... };
    (@parent($parent:expr) $name:ident) => { ... };
    (@parent($parent:expr) $name:ident $($other:tt)*) => { ... };
    (@text($txt:expr)) => { ... };
    ($name:ident (
        $($key:ident = $val:expr),*
    ) {
        $($inner:tt)*
    }) => { ... };
    ($name:ident (
        $($key:ident = $val:expr),*
    )) => { ... };
    ($name:ident {
        $($inner:tt)*
    }) => { ... };
    ($name:ident) => { ... };
}
Expand description

Used to create nodes inline without parsing a document at runtime.

The syntax matches the node description format apart from a few differences.

  • Text can’t be inline, it must be wrapped with @text("hello")
  • String attributes currently need to be .to_owned() as it expects String not &str.

Examples

node!{
    panel(x=5, y=16, width=300, height=50) {
        icon
        title {
            @text("Testing")
        }
    }
};
node!{
    @text("Hello world")
};