I'm playing with the wee and so far it looks very interesting. I hope 
I'll get more understanding after following tutorial videos (tahnks for 
those btw). The only minor thing I have noticed is that calendar.rb 
example seems to be a little bit outdated. The following change fixed 
it for me:

@@ -343,9 +343,7 @@
      # Call the calendar component
      #
      def calendar()
-      if date = call( CustomCalendar.new(@date) )
-        @date = date
-      end
+      call( CustomCalendar.new(@date), lambda { |date| @date = date if 
date })
      end
    end

Cheers,
Kent.

On Feb 1, 2005, at 3:44 PM, Michael Neumann wrote:

> Hi,
>
> Wee 0.7.0 is out! In addition, I've recorded three tutorial sessions 
> (screen
> captures). You can download the MPEGs via BitTorrent here:
>
>   http://rubyforge.org/frs/?group_id=427&release_id=1528
>
> I'm open for suggestions and thankful for comments. If possible, 
> please let
> you BitTorrent client open.
>
> The first tutorial is about installing Wee, creating an initial 
> skeleton
> application, simple forms and explains briefly decorations. The second 
> is
> about subcomponents and backtracking. The third is on using Wee 
> together with
> Og and a Postgres database.
>
> == Philosophy/Features of Wee
>
>   http://rubytalk.com/128432
>
> == Download and Installation
>
>   http://rubyforge.org/projects/wee
>
>   gem install wee
>
> Have a look at the 'wee' command!
>
> == ChangeLog
>
> Major changes (compared to 0.5.0) are:
>
> 	* Added ERB-templating. Example:
>
> 	    # file: ~/components/main.rb
> 	    class Test < Wee::Component
>
> 	      # use template '~/components/main.tpl'
> 	      template :render
>
> 	      # use template '~/components/main.tpl-buttons'
> 	      template :render_buttons
> 	    end
>
> 	  This allows you to use ERB-templates instead of the render_XXX
> 	  methods. You can also call render_XXX methods from ERB, back and
> 	  forth. The template file is relative to the file from which the
> 	  'template :symbol' call is executed. The template method optionally
> 	  takes the two hash-parameters :file and :property.
>
> 	* Added "Pageless" mode. In pageless mode, the URL displayed in your
> 	  browser always looks like "/app". The session id is stored as cookie
> 	  and there is no page_id, hence "pageless" mode. No backtracking is
> 	  performed! Example:
>
> 	    require 'wee/pageless'
>
> 	    app = Wee::Utils.app_for(YourMainComponent,
> 	      :session => Wee::PagelessSession,
> 	      :application => Wee::PagelessApplication)
>
> 	    Wee::WEBrickAdaptor.
> 	      request_class(Wee::PagelessRequest).
> 	      register('/app' => app).
> 	      start
>
> 	* Added named callbacks. Example:
>
> 	    r.anchor.named_callback('test') { ... }
>
> 	  will use 'test' as callback_id instead of a generic one.
>
> 	* added 'wee' binary which generates a sample application and
> 	  recommended directory structure for you (similar to the 'rails' 
> command).
>
> 	* Wee::Request: Refactored a lot. Use =/ instead of @ as delimeter for
> 	  the request_handler_id/page_id part ('@' looks ugly in Konqueror, as
> 	  it is displayed as '%40')
>
> 	* Implemented a new OgScaffolder, which now is more like the Rails 
> one.
>
> Changes that break compatibility:
>
> 	* Wee::LiteralMethodCallback and Component#call: Additional arguments
> 	  are now prepended instead of appended. Example:
>
> 	    call MessageBox.new('msg'), :confirm, 1
>
> 	    def confirm(one, msgbox_result)
> 	    end
>
> 	* Methods ImageTag#src_for and GenericTagBrush#css_class_for no more
> 	  prepend 'img.' or 'css.' in front of the property name.
>
> 	* Method Wee::Utils.app_for: Removed the id_seed option. Use id_gen
> 	  instead, which expects a IdGenerator object (default is now the 
> much more
> 	  secure Md5IdGenerator).
>
> 	* SelectListTag (r.select_list): NON-backwards-compatible change!!!
> 	  If it's NOT a multiple select list, then the callback is called
> 	  with the choosen value (instead of an array of one element). Method
> 	  #selected requires a single value in the same way. No changes if 
> it's
> 	  a multiple-select list!
>
> For the full list of changes see:
>
>   http://www.ntecs.de/viewcvs/viewcvs/Wee/trunk/ChangeLog?view=auto
>
> == Hello World
>
>    require 'wee'
>
>    class HelloWorld < Wee::Component
>       def click
>        @clicks = (@clicks || 0) + 1
>      end
>
>      def render
>        r.h1.onclick_callback(:click).with("Hello World!")
>        r.text "#{ @clicks || 'No' } clicks"
>      end
>    end
>
>    # And start the WEBrick web-server
>    require 'wee/utils'
>    require 'wee/adaptors/webrick'
>
>    app = Wee::Utils.app_for {
>      HelloWorld.new.add_decoration(Wee::PageDecoration.new("Hello 
> World"))
>    }
>    Wee::WEBrickAdaptor.register('/app' => app).start
>
> Make sure you run this application with the -rubygems option. Then 
> point your
> browser to http://localhost:2000/app and click on the h1-header.  
> Every time
> you click on it, you should see that the number of clicks increases. 
> Have fun!
>
> == Future?
>
> I'd like improve the integration of models with Wee.
>
> Regards,
>
>    Michael
>