NAME

widgetz.rb

SYNOPSIS

simple widgets for rails 

INSTALL

gem install widgetz

URIS http://rubyforge.org/projects/codeforpeople/ http://codeforpeople.com/lib/ruby/widgetz/ http://drawohara.tumblr.com/post/6060120

DESCRIPTION

widgetz.rb aims to fix two problems with factoring and abstracting html
generation in rails using the normal 'helper' methodolgy:

1) helper methods are purely procedural and provide no state.  ruby is an
object oriented language and we like to use objects to abstract things
where possible.  widgetz lets you do just that.  some people call this
encapsulation.

2) by using the normal rendering chain in rails, widgetz makes sure you
get a nice stack stace from the location in the widgetz template where 
you used ruby's power blow your leg off instead of some esoteric message
from an anonymous module you barely knew.

widgetz are essentailly bags of data that use a controller to render
themselves.  all the state of the widget is made available in the view as
local variables, while the normal @variables set in a controller remain
visible as normal.  one special local variable, 'widget', is set in the view's
local vars so you have a handle on the widget in order to use it for some evil
purpose.

SAMPLE

app/controllers/sample_controller.rb

def c
  @var = 42
  @c = widget 'c'

  render :layout => 'application', :inline => "    var: <%= @var %>\n\n    <hr>\n\n    <%= @c %>\n  rhtml\nend\n\n#\n# lib/widgets/c.rb\n#\nWidget 'c' do\n  attribute 'var' => 'forty-two'\n\n  def answer\n    42.0\n  end\nend\n\n#\n# app/views/widgets/c.rhtml\n#\ncontroller var : <%= @var %>          <br> \nwidget var     : <%= var %>           <br> \nwidget method  : <%= widget.answer %> <br> \n\n#\n# output\n#\nvar: 42  \n----------------------\ncontroller var : 42\nwidget var     : forty-two\nwidget method  : 42.0\n"

DOCS

lib/*
sample/rails/*

AUTHOR

a @ http://drawohara.com/