about summary refs log tree commit homepage
path: root/site/atom.rb
diff options
context:
space:
mode:
Diffstat (limited to 'site/atom.rb')
-rw-r--r--site/atom.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/site/atom.rb b/site/atom.rb
new file mode 100644
index 0000000..0c9702f
--- /dev/null
+++ b/site/atom.rb
@@ -0,0 +1,86 @@
+require 'rubygems'
+require 'atom/collection'
+require 'find'
+require 'yaml'
+require 'redcloth'
+
+$site ="http://mongrel.rubyforge.org/"
+
+zed = Atom::Author.new
+zed.name = "Zed A. Shaw"
+zed.uri = $site
+zed.email = "zedNOSPAMshaw A-T zedNOSPAMshaw.com"
+
+
+f = Atom::Feed.new
+f.id = $site
+f.authors << zed
+
+link = Atom::Link.new
+link["href"] = $site + "/feed.atom"
+link["rel"] = "self"
+f.links << link
+link = Atom::Link.new
+link["href"] = $site
+link["rel"] = "via"
+f.links << link
+
+f.title = "Mongrel Web Server"
+f.subtitle = "Faster Is Possible"
+f.updated = Time.now
+f.generator = "atom-tools"
+f.rights = "Copyright Zed A. Shaw with contributors.  All rights reserved."
+
+class Page
+  attr_accessor :path
+  attr_accessor :stat
+  attr_accessor :uri
+  attr_accessor :info
+
+  def initialize(path)
+    @path = path
+    @stat = File.stat(path)
+    @uri = $site + path.match(/^src(.*)\.page/)[1] + ".html"
+    @info = YAML.load_file(path)
+  end
+
+  def <=>(other)
+    other.stat.mtime <=> self.stat.mtime
+  end
+
+  def to_html
+    if not @html
+      content = open(path) { |f| f.read(1024) }
+      content.gsub!(/^---.*---/m,"")
+      content = content + "...\n\"Read more\":#{uri}"
+      r = RedCloth.new(content)
+      @html = r.to_html
+    end
+
+    @html
+  end
+end
+
+pages = []
+
+Find.find("src") do |path|
+  if /.page$/ === path and !path.index("index.page")
+    pages << Page.new(path)
+  end
+end
+
+pages.sort!
+
+pages[0 .. 30].each do |p|
+  e = Atom::Entry.new
+  e.id = p.uri
+  e.title = p.info["title"]
+  link = Atom::Link.new
+  link["href"] = p.uri
+  e.links << link
+  e.updated = p.stat.mtime
+  f.entries << e
+end
+
+
+puts f.to_s