パンくずナビ用のクラス

ソース

 #!/usr/bin/ruby -Ke
 require 'cgi'
 class Navi
   def initialize(path="",size=10)               #
     @path=path
     @size=size
     @cgi=CGI.new
     @navi=[]
     @navi=@cgi.cookies['NAVI'].join.split(':')
   end
   def unshift(page="")
     if @navi!=nil
       pre=CGI::unescape(@navi.shift)
       @navi.unshift(CGI::escape(pre)) if pre != page
     end
     @navi.unshift(CGI::escape(page))
     @navi=@navi[0..@size] if @navi.size > @size
   end
   def to_s                      #
     %Q!Set-Cookie: NAVI=#{@navi.join(':')}; expires=#{(Time.new+2592000).utc.strftime(\
 "%a, %1d-%b-%Y %1X GMT")}; path=#{@path};!
   end
   def print                     #
     @navi.map{|i| CGI::unescape(i)}.join(':')
   end
   def to_a
     @navi.map{|i| CGI::unescape(i)}
   end
 end

利用方法

 #!/usr/bin/ruby -Ke
 require 'navi'
 a=Navi.new('/cgi-bin/cookie/')
 a.unshift(rand(10).to_s)
 puts "content-type: text/html"
 puts a.to_s
 puts "\n"
 puts "<html><head>"
 print "<body>$$$$"
 print a.print
 puts "<br>"
 puts a.to_s