Changeset 135

Show
Ignore:
Timestamp:
02/07/2007 19:27:17 (22 months ago)
Author:
lwu
Message:

Implement method dispatch on tepee nodes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/examples/tippytippytepee/tepee.rb

    r133 r135  
    9494      redirect(Edit, page_name, 1) and return unless @page = Page.find_by_title(page_name) 
    9595      @version = (version.nil? or version == @page.version.to_s) ? @page : @page.versions.find_by_version(version) 
     96      @cgi_parameters = CGI::parse(@env.REQUEST_URI.split('?')[-1]) 
    9697      render :show 
    9798    end 
     
    353354        @no_layout = true 
    354355      end 
    355       str_id = @cookies.camping_sid.gsub(/\W/, '') 
    356       Tepee::Box.eval %{ session_id = '#{str_id}' } 
    357356      code = %{ 
    358         Markaby::Builder.new(:env => #{_dump(@env)}, :input => #{_dump(@input)}) do 
     357        instance_vars = { 
     358          :env => #{_dump(@env)}, :input => #{_dump(@input)},  
     359          :args => #{_dump(@cgi_parameters)},  
     360          :session_id => #{_dump(@cookies.camping_sid)}  
     361        } 
     362         
     363        doc = Markaby::Builder.new(instance_vars) do 
    359364          def puts(txt); self << txt; end 
    360365          ERbLight.new(#{str.dump}).result(binding) 
    361366        end.to_s 
     367         
     368        meth = instance_vars[:args]['method'] 
     369         
     370        if meth.empty? 
     371          doc 
     372        else 
     373          args = OpenStruct.new(instance_vars[:args]) 
     374          #{@page.title.gsub(/^./) {|c| c.upcase} }.send(meth[0], args) 
     375        end 
    362376      } 
    363377      @line_zero = Tepee::Box.eval(%{__LINE__}) + code.count("\n") # FIXME