<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>AUTHORS</filename>
    </added>
    <added>
      <filename>LICENSE</filename>
    </added>
    <added>
      <filename>README</filename>
    </added>
    <added>
      <filename>TODO</filename>
    </added>
    <added>
      <filename>css/active4d.css</filename>
    </added>
    <added>
      <filename>css/all_hallows_eve.css</filename>
    </added>
    <added>
      <filename>css/amy.css</filename>
    </added>
    <added>
      <filename>css/blackboard.css</filename>
    </added>
    <added>
      <filename>css/brilliance_black.css</filename>
    </added>
    <added>
      <filename>css/brilliance_dull.css</filename>
    </added>
    <added>
      <filename>css/cobalt.css</filename>
    </added>
    <added>
      <filename>css/dawn.css</filename>
    </added>
    <added>
      <filename>css/eiffel.css</filename>
    </added>
    <added>
      <filename>css/espresso_libre.css</filename>
    </added>
    <added>
      <filename>css/idle.css</filename>
    </added>
    <added>
      <filename>css/iplastic.css</filename>
    </added>
    <added>
      <filename>css/lazy.css</filename>
    </added>
    <added>
      <filename>css/mac_classic.css</filename>
    </added>
    <added>
      <filename>css/magicwb_amiga.css</filename>
    </added>
    <added>
      <filename>css/pastels_on_dark.css</filename>
    </added>
    <added>
      <filename>css/slush_poppies.css</filename>
    </added>
    <added>
      <filename>css/spacecadet.css</filename>
    </added>
    <added>
      <filename>css/style.css</filename>
    </added>
    <added>
      <filename>css/sunburst.css</filename>
    </added>
    <added>
      <filename>css/twilight.css</filename>
    </added>
    <added>
      <filename>css/zenburnesque.css</filename>
    </added>
    <added>
      <filename>environment.rb</filename>
    </added>
    <added>
      <filename>extensions.rb</filename>
    </added>
    <added>
      <filename>javascripts/application.js</filename>
    </added>
    <added>
      <filename>page.rb</filename>
    </added>
    <added>
      <filename>system/ruby.server.gitwiki.plist</filename>
    </added>
    <added>
      <filename>views/delta.erb</filename>
    </added>
    <added>
      <filename>views/edit.erb</filename>
    </added>
    <added>
      <filename>views/history.erb</filename>
    </added>
    <added>
      <filename>views/layout.erb</filename>
    </added>
    <added>
      <filename>views/list.erb</filename>
    </added>
    <added>
      <filename>views/show.erb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,131 +1,86 @@
 #!/usr/bin/env ruby
 
-%w(rubygems sinatra grit maruku rubypants haml).each do |a_gem| 
-  begin
-    require a_gem
-  rescue LoadError =&gt; e
-    puts &quot;You need to 'sudo gem install #{a_gem}' before we can proceed&quot;
-  end
-end
-
-GIT_REPO = ENV['HOME'] + '/wiki'
-GIT_DIR  = File.join(GIT_REPO, '.git')
-HOMEPAGE = 'Home'
-
-unless File.exists?(GIT_DIR) &amp;&amp; File.directory?(GIT_DIR)
-  FileUtils.mkdir_p(GIT_DIR)
-  puts &quot;Initializing repository in #{GIT_REPO}...&quot;
-  `git --git-dir #{GIT_DIR} init`
-end
-
-$repo = Grit::Repo.new(GIT_REPO)
+require 'environment'
 
-class Page
-  attr_reader :name
+require_gem_with_feedback 'sinatra'
 
-  def initialize(name)
-    @name = name
-    @filename = File.join(GIT_REPO, @name)
-  end
-
-  def body
-    @body ||= Maruku.new(RubyPants.new(raw_body).to_html).to_html
-  end
-
-  def raw_body
-    @raw_body ||= File.exists?(@filename) ? File.read(@filename) : ''
-  end
+layout { File.read('views/layout.erb') }
 
-  def body=(content)
-    File.open(@filename, 'w') { |f| f &lt;&lt; content }
-    message = tracked? ? &quot;Edited #{@name}&quot; : &quot;Created #{@name}&quot;
-    `cd #{GIT_REPO} &amp;&amp; git add #{@name} &amp;&amp; git commit -m &quot;#{message}&quot;`
-  end
+def show(template, title)
+  @title = title
+  erb(template)
+end
 
-  def tracked?
-    return false if $repo.commits.empty?
-    $repo.commits.first.tree.contents.map { |b| b.name }.include?(@name)    
+def page_with_ext
+  if params[:format] == &quot;html&quot;
+    params[:page]
+  else
+    &quot;#{params[:page]}.#{params[:format]}&quot;
   end
+end
 
-  def to_s
-    &quot;&lt;li&gt;&lt;strong&gt;&lt;a href='/#{@name}'&gt;#{@name}&lt;/a&gt;&lt;/strong&gt; &#8212; &lt;a href='/e/#{@name}'&gt;edit&lt;/a&gt;&lt;/li&gt;&quot;
-  end
+def page_url
+  &quot;#{request.env[&quot;rack.url_scheme&quot;]}://#{request.env[&quot;HTTP_HOST&quot;]}#{request.env[&quot;REQUEST_PATH&quot;]}&quot;
 end
 
 get('/') { redirect '/' + HOMEPAGE }
-get('/_stylesheet.css') { File.read('stylesheet.css') }
+get('/_style.css') { header 'Content-Type' =&gt; 'text/css'; File.read(File.join(File.dirname(__FILE__), 'css', 'style.css')) }
+get('/_code.css') { header 'Content-Type' =&gt; 'text/css'; File.read(File.join(File.dirname(__FILE__), 'css', &quot;#{UV_THEME}.css&quot;)) }
+get('/_app.js') { header 'Content-Type' =&gt; 'application/x-javascript'; File.read(File.join(File.dirname(__FILE__), 'javascripts', &quot;application.js&quot;)) }
 
 get '/_list' do
-  if $repo.commits.empty?
-    @pages = []
-  else
-    @pages = $repo.commits.first.tree.contents.map { |blob| Page.new(blob.name) }
-  end
-  
-  haml(list)
+  @pages = $repo.log.first.gtree.children.map { |name, blob| Page.new(name) } rescue []
+  show(:list, 'Listing pages')  
 end
 
 get '/:page' do
-  @page = Page.new(params[:page])
-  @page.tracked? ? haml(show) : redirect('/e/' + @page.name)
+  @page_url = page_url
+  @page = Page.new(page_with_ext)
+  @page.tracked? ? show(:show, @page.name) : redirect('/e/' + @page.name)
+end
+
+get '/:page/append' do
+  @page = Page.new(page_with_ext)
+  @page.body = @page.raw_body + &quot;\n\n&quot; + params[:text]
+  redirect '/' + @page.name
 end
 
 get '/e/:page' do
-  @page = Page.new(params[:page])
-  haml(edit)
+  @page = Page.new(page_with_ext)
+  show :edit, &quot;Editing #{@page.name}&quot;
 end
 
 post '/e/:page' do
-  @page = Page.new(params[:page])
+  @page = Page.new(page_with_ext)
   @page.body = params[:body]
   redirect '/' + @page.name
 end
 
-def layout(title, content)
-  %Q(
-%html
-  %head
-    %title #{title}
-    %link{:rel =&gt; 'stylesheet', :href =&gt; '/_stylesheet.css', :type =&gt; 'text/css', :media =&gt; 'screen'}
-    %meta{'http-equiv' =&gt; 'Content-Type', :content =&gt; 'text/html; charset=utf-8'}
-
-  %body
-    #navigation
-      %a{:href =&gt; '/'} Home
-      %a{:href =&gt; '/_list'} List
-    #{content}
-  )
+get '/h/:page' do
+  @page = Page.new(page_with_ext)
+  show :history, &quot;History of #{@page.name}&quot;
 end
 
-def show
-  layout(@page.name, %q(
-      %a{:href =&gt; '/e/' + @page.name, :class =&gt; 'edit_link'} edit this page
-    %h1{:class =&gt; 'page_title'}= @page.name
-    #page_content= @page.body
-  ))
+get '/h/:page/:rev' do
+  @page = Page.new(page_with_ext, params[:rev])
+  show :show, &quot;#{@page.name} / version #{params[:rev]})&quot;
 end
 
-def edit
-  layout(&quot;Editing #{@page.name}&quot;, %q(
-    %h1
-      Editing
-      = @page.name
-      %a{:href =&gt; 'javascript:history.back()', :class =&gt; 'cancel'} Cancel
-    %form{ :method =&gt; 'POST', :action =&gt; '/e/' + params[:page]}
-      %p
-        ~&quot;&lt;textarea name='body' rows='25' cols='130'&gt;#{@page.raw_body}&lt;/textarea&gt;&quot;
-      %p
-        %input{:type =&gt; :submit, :value =&gt; 'Save as the newest version', :class =&gt; :submit}
-  ))
+# FIXME this repeats the above just to accomodate pages with 
+# file extensions.  bad!
+get '/h/:page.:format/:rev' do
+  @page = Page.new(page_with_ext, params[:rev])
+  show :show, &quot;#{@page.name} / version #{params[:rev]})&quot;
 end
 
-def list
-  layout('Listing pages', %q{
-    %h1 All pages
-    - if @pages.empty?
-      %p No pages found.
-    - else
-      %ul= @pages.each(&amp;:to_s)
-  })
+get '/d/:page/:rev' do
+  @page = Page.new(page_with_ext)
+  show :delta, &quot;Diff of #{@page.name}&quot;
 end
 
+# FIXME this repeats the above just to accomodate pages with 
+# file extensions.  bad!
+get '/d/:page.:format/:rev' do
+  @page = Page.new(page_with_ext)
+  show :delta, &quot;Diff of #{@page.name}&quot;
+end</diff>
      <filename>git-wiki.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>stylesheet.css</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>7bfdd2d3239f64f95426a8f44a9eb2df5c7725b1</id>
    </parent>
    <parent>
      <id>b0f4475857c54a55d030ea14f04137c96a771023</id>
    </parent>
  </parents>
  <author>
    <name>Scott Chacon</name>
    <email>schacon@gmail.com</email>
  </author>
  <url>http://github.com/edavis10/git-wiki/commit/8e78701e35bdcbdc365f9569e2d52660900222e6</url>
  <id>8e78701e35bdcbdc365f9569e2d52660900222e6</id>
  <committed-date>2008-03-06T16:20:07-08:00</committed-date>
  <authored-date>2008-03-06T16:20:07-08:00</authored-date>
  <message>merged from sr</message>
  <tree>f77fa5c569be513985eabb98ef597ccec9d1b7ac</tree>
  <committer>
    <name>Scott Chacon</name>
    <email>schacon@gmail.com</email>
  </committer>
</commit>
