Fantastic news! This may call for an update to http://hiccup.space

On Sunday, January 15, 2017 at 1:17:24 PM UTC+11, James Reeves wrote:
>
> I'd like to tentatively announce the first alpha version of Hiccup 2.0.0.
>
> This release introduces automatically escaping of strings, which has been 
> a frequently requested feature. Hiccup 1.0 had no way of distinguishing 
> between a string of text and a fragment of HTML, so for version 2.0 a new 
> type has been introduced to represent the latter.
>
> A lot of projects depend upon Hiccup, and after thinking about it for a 
> while, and watching Rich's Spec-ulation 
> <https://www.youtube.com/watch?v=oyLBGkS5ICk> talk, I decided to 
> introduce a new namespace rather than break backward compatibility. So 
> although Hiccup 2.0.0 is a major version change, it should be backward 
> compatible with version 1.0.
>
> The new namespace is hiccup2.core, and it works like this:
>
>   (require '[hiccup2.core :refer [html raw]])
>
>   (str (html [:span "one < two"]))
>   ;=> "<span>one &lt; two</span>"
>
> Notice that now strings are escaped by default, but we also need to 
> explicitly convert the HTML fragment into a string by using 
> clojure.core/str.
>
> By using a compiled intermediate format, we gain a lot more potential 
> flexibility. For example, possible future feature currently under 
> consideration is to support different ways of formatting the HTML. Using an 
> intermediate format allows us to do this after pre-compilation has taken 
> place.
>
> Because this is an alpha release, the hiccup2.core namespace is not set in 
> stone, but it does seem to be the simplest solution to the problem of 
> incompatibility. Suggestions for better ways to solve this are welcome and 
> encouraged.
>
> As well as escaping strings, additional syntax sugar for attributes has 
> been introduced. This should be familiar to anyone using Reagent:
>
>   (str (html [:span {:class ["foo" "bar"]} "example"]))
>   ;=> "<span class=\"foo bar\">example</span>"
>
>   (str (html [:span {:style {:color "red"}} "example"]))
>   ;=> "<span style=\"color:red;\">example</span>"
>
> Please give the alpha release a spin, and if there are any 
> incompatibilities please let me know.
>
> - James
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to