rtml

*description*

(r)ust macros for h(tml) expansion => rtml

(r)ust type safe (css) => rcss

*usage*

```rust fn main() { use rtml::*; // Use the macros to generate some HTML let html = html! { .lang = "en", head!{ title!{ "Title of the document" } }, body!{ div!{ "text", h1!{ "This is a heading" }, p!{ "This is a paragraph" } } } }.render();

println!("{}", html);

} ```

the output html will be in non pretty form.

```html Page Title

text

This is a Heading

This is a paragraph.

```

When there are attributes, they go first, before adding any inner nested html.

rust div!{ .style="background-color: red;" }

call render() when the html needs to be built.

*Getting Started*

Install the latest version of the rtml crate into your project

use either specific tags you plan to use or reference all tags by adding this use statement.

rust use rtml::p; // or use rtml::*;

*CSS*

Rtml also supports type safe css. ```rust fn main() { use rtml::*; // Use the macros to generate some CSS let css = css! { p { background: "yellow", color: "red" } }.render();

println!("{}", css);

} ```

The major difference between real inline css and rcss is that values are in strings. type safe values are not yet supported. Another difference is that properties are split on commas , instead of semicolons ;

At-rules and Functions are not yet implemented.

*Type Safe HTML Attributes*

rtml allows an additional layer of type safety with tag use. For example,

rust a! { .href="/documents", My Documents } html <a href="/documents">My Documents</a> Is the correct attribute allowed on the a tag. If you were not familiar, you might try to use the src attribute which is invalid. Most other website building projects would not prevent incompatible attribute use.

In rtml, there is a helpful error.

rust a! { .src="/documents", My Documents }

html <a src="/documents">My Documents</a>

the trait bound `src: ACompat` is not satisified the following other types implement the trait `ACompat`: accesskey class contenteditable dir download draggable hidden href and 13 others

Breaking this error down,

the trait bound src: ACompat...

*Components*

not implemented yet