Here's my solution to the first script. See Thursday's summary for how
it came about...
James Edward Gray II
#!/usr/local/bin/ruby
# wiki.cgi
require 'cgi'
HOME = 'HomePage'
LINK = 'wiki.cgi?name=%s'
query = CGI.new 'html4'
# fetch query data
page_name = if query['name'] == '' then HOME else query['name'] end
page_changes = query['changes']
# fetch file content for this page, unless it's a new page
content = File.read(page_name) rescue content = ''
# save page changes, if needed
unless page_changes == ''
content = CGI.escapeHTML(page_changes)
File.open(page_name, 'w') { |f| f.write content }
end
# output requested page
query.instance_eval do
out do
h1 { page_name } +
a(LINK % HOME) { HOME } +
pre do # content area
content.gsub(/([A-Z]\w+){2}/) do |match|
a(LINK % match) { match }
end
end +
form('get') do # update from
textarea('changes') { content } +
hidden('name', page_name) +
submit
end
end
end