Buildable

Buildable is mixin variation of BuildingBlock.

  require 'facets/buildable'
  require 'xmlmarkup'  # hypothetical library

  module XMLMarkup
    include Buildable
    alias :build :element
  end

  doc = XMLMarkup.build do
    html do
      head do
        title "Test"
      end
      body do
        i "Hello"
        br
        text "Test"
        text "Hey"
      end
    end
  end

produces

  <html><head><title>Test</title><body><i>Hello</i><br />TestHey</body></html>

This is based on BuildingBlock. Refer to it for more information.

Methods
included
Public Class methods
included(base)
# File lib/more/facets/buildable.rb, line 144
  def self.included(base)
    singleton = (class << base; self; end)
    singleton.send(:define_method, :builder) do
      @builder ||= BuildingBlock.new(base, :build)
    end
    base.module_eval %{
      def self.build(&block)
        builder.instance_eval(&block)
      end
    }
  end