1-10

Everyone is happy!

Developer:

->(foo, bar) {
  div {
    h1 foo
    p bar
  }
}
  

Machine:

->(__buffer__, foo, bar) {
  __buffer__ << '<div><h1>'
  __buffer__ << ERB::Escape.html_escape(foo)
  __buffer__ << '</h1><p>'
  __buffer__ << ERB::Escape.html_escape(bar)
  __buffer__ << '</p></div>'
  __buffer__
}
  • Up to 10x faster than “naive” DSL implementation
  • Compiled code similar to compiled ERB
  • Similar performance as compiled ERB