ソース
#!/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