require 'drb/drb'
require 'rw-proxy'
require 'tofu/mock'
class RWikiDiv < Div::Div
set_erb('rwiki.erb')
def initialize(session)
super(session)
@proxy = RWikiProxy.instance
end
def path2name(context)
@proxy.path2name(context.req_path_info)
end
def fetch(context)
name = path2name(context) || 'top'
@proxy.fetch(name)
end
def title(context)
pg = fetch(context)
pg.section_prop[:first_heading] || pg.name
end
def rw_link(name, content = nil)
content = name unless content
if content == :heading
content = @proxy.fetch(name).section_prop[:first_heading]
end
"#{h content}"
end
def mock_context(name)
mock = Tofu::MockContext.new
mock.req_path_info = "/" + @proxy.escape(name)
mock
end
def en_page(name)
return nil if /\.en$/ =~ name
en_name = name + ".en"
page = @proxy.fetch(en_name)
return nil if page.empty?
%Q[(English|Japanese)]
end
def ja_page(name)
return nil unless /\.en$/ =~ name
ja_name = name.sub(/\.en$/, '')
page = @proxy.fetch(ja_name)
return nil if page.empty?
%Q[(English|Japanese)]
end
def babel_link(name)
en = en_page(name)
return en if en
ja = ja_page(name)
return ja if ja
""
end
def recent_changes(n = -1)
@proxy.recent_changes[0..n].collect do |name|
@proxy.fetch(name)
end
end
end