Forum: Ruby on Rails [ANN] widgetz.rb

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1bac2e65d64faf472cf2ebc94f0f5ee0?d=identicon&s=25 ara.t.howard (Guest)
on 2007-07-18 09:41
(Received via mailing list)
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
   #
     var: 42
     ----------------------
     controller var : 42
     widget var     : forty-two
     widget method  : 42.0

DOCS

   lib/*
   sample/rails/*

AUTHOR

   a @ http://drawohara.com/

enjoy.

-a
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama
1bac2e65d64faf472cf2ebc94f0f5ee0?d=identicon&s=25 -a (Guest)
on 2007-07-18 09:52
(Received via mailing list)
(sorry for formatting - fixed here)

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
  #
    var: 42
    ----------------------
    controller var : 42
    widget var     : forty-two
    widget method  : 42.0

DOCS

  lib/*
  sample/rails/*

AUTHOR

  a @ http://drawohara.com/
This topic is locked and can not be replied to.