def image_map_
escpage = CGI.escape(@page)
gif = "dot/sitemap_#{escpage}.gif"
dot = "dot/sitemap_#{escpage}.dot"
ret = %Q()
ret += %Q()
return ret
end
def dotsitemap
gif = "dot/sitemap_#{CGI.escape(@page)}.gif"
font = 'mincho'
size = 12
if (File.exists?(gif))
return image_map_
end
wikiname_re = /\[\[([^\]\|]+?)\]\]/
links = Hash.new
@db.page_info.each do |a|
name = a.keys[0]
links[name] = Array.new
body = @db.load(name)
body.scan(wikiname_re).each do |link|
links[name].push(link)
end
end
relLinks = Hash.new
pages = Array.new
pages.push(@page)
while ! pages.empty?
p = pages.pop
ls = links[p]
if (ls == nil)
next
end
relLinks[p] = Array.new
ls.each do |l|
if (!relLinks[p].include?(l))
relLinks[p].push(l)
pages.push(l.to_s)
end
end
end
tmpfile = "dot/tmp.dot"
File.open(tmpfile, "w") do |ofile|
ofile.print "digraph G {\n";
ofile.print "\tnode[fontname=\"#{font}\" fontsize=\"#{size}\"];\n"
relLinks.each do |k, a|
a.each do |v|
ofile.print "\t\"#{k}\" -> \"#{v}\"\n"
end
end
ofile.print "}\n"
end
dot = "dot/sitemap_#{CGI.escape(@page)}.dot"
system("dot -Tdot #{tmpfile} > #{dot}")
system("dot -Tgif #{dot} > #{gif}")
return image_map_
end