# hyperscript Create hypertext with Raku. ## api ```raku sub hyperscript(Str $tag, *%attrs, *@inner) ``` * `Str $tag`: * The HTML tag to be created. * Supports class and id shortcuts, e.g.: `'p#id.class'`. * if `$tag` begins with a class or id shortcut, hyperscript uses a `div` element. * `*%attrs`: HTML attributes on the element. * `*@inner`: Inner contents for the element. ## example ```raku use Hyperscript; constant &h = &hyperscript; say h('h1', 'hello, world!'); # OUTPUT:

hello, world!

``` ## slightly longer example ```raku use Hyperscript; constant &h = &hyperscript; my $html = h('div#page', h('div#header', h('h1.classy', style => { background-color => '#22f'}, 'h')), h('div#menu', style => { background-color => '#2f2' }, h('ul', h('li', 'one'), h('li', 'two'), h('li', 'three'))), h('h2', style => { background-color => '#f22' }, 'content title'), h('p', "so it's just like a templating engine, ", "but easy to use inline with Raku"), h('p', "the intention is for this to be used to create ", "reusable, interactive html widgets.")); ``` ## helpers for common tags `Hyperscript::Helpers` module provides simple helpers for common tags: div, p, img, ol, ul, li, a, nav. ```raku use Hyperscript::Helpers; my $nav = div(:class
, p(:class, 'Main Menu'), nav( ul( li(a(:href, 'Home')), li(a(:href:active, 'News')), li(a(:href, 'Contact')) ) ) ); ``` ## why? * It produces HTML from Raku code, instead of a separate templating language. * It's a way to learn Raku module development. ## prior art * Hyperscript (JavaScript library): https://github.com/hyperhype/hyperscript ## testing ```sh prove6 -l ``` ## license MIT