Erector is a Builder-like view framework for Ruby, inspired by Markaby.
In Erector all views are objects, not template files, which allows the full power of object-oriented programming (inheritance, modular decomposition, encapsulation) in views.
Examples
require 'erector' class Hello < Erector::Widget def content html { head { title "Hello" } body { h1.heading! "Message:" text "Hello, " b.big @target text "!" } } end end Hello.new(:target => 'world').to_html |
→ |
<html> <head> <title>Hello</title> </head> <body> <h1 id="heading">Message:</h1> Hello, <b class="big">world</b>! </body> </html> |
include Erector::Mixin erector { div "love", :class => "big" } |
→ |
<div class="big">love</div> |
require 'erector' class Logo < Erector::Widget def content div.logo { a(:href => "index.html") { img.logo :src => 'erector.jpg', :height => 323, :width => 287 } } end end |
→ |
<div class="logo"> <a href="index.html"> <img class="logo" height="323" src="erector.jpg" width="287" /> </a> </div> |
Current version: 0.10.0