Index of /lib/ruby/widgetz/widgetz-0.0.2

[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -  
[   ]README08-Feb-2009 19:33 2.0K 
[TXT]README.html08-Feb-2009 19:33 5.6K 
[   ]gemspec.rb08-Feb-2009 19:33 779  
[   ]install.rb08-Feb-2009 19:33 4.5K 
[DIR]lib/08-Feb-2009 19:33 -  
[DIR]rails/08-Feb-2009 19:33 -  
[   ]widgetz-0.0.2.gem08-Feb-2009 19:33 76K 

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 => <<-rhtml
        var: <%= @var %>

        <hr>

        <%= @c %>
      rhtml
    end

  #
  # lib/widgets/c.rb
  #
    Widget 'c' do
      attribute 'var' => 'forty-two'

      def answer
        42.0
      end
    end

  #
  # app/views/widgets/c.rhtml
  #
    controller var : <%= @var %>          <br>
    widget var     : <%= var %>           <br>
    widget method  : <%= widget.answer %> <br>

  #
  # output
  #
    <<-html
      var: 42  
      ----------------------
      controller var : 42
      widget var     : forty-two
      widget method  : 42.0
    html

DOCS

  lib/*
  sample/rails/*

AUTHOR

  a @ http://drawohara.com/