Kelpie wraps EzXML.jl nodes with functions taken from the names of HTML5 elements (e.g.
nav, etc.). Each function takes the content of the element as a positional argument, and translates all keyword arguments into attributes. For example
<a href="https://julialang.org" class="card-link">Julia</a>
is represented in Kelpie as
a("Julia"; href="https://julialang.org", class="card-link")
This package happened almost entirely by accident: I was writing a script to display a combination of biological sequences in a webpage using BioJulia and EzXML.jl and got tired of having to manually link all my nodes together. So I started writing wrapper functions, then I got tired of writing those, so I converted to a generated function, and Kelpie was born. Once I started chaining function calls, I noticed that the syntax looked a lot like Pug, so I named it after a different dog breed.
I’m still learning the full capabilities of my new creation, but it should be really easy to insert into Genie projects (I haven’t tried yet). It is way more capable than its flat-nosed counterpart, as Julia function calls from any package can be inserted right into a webpage directly. Documentation and testing will be more fleshed out in the coming weeks as I play around with it more.