prepare for having two sites: personal and research
[web.git] / ralf / _plugins / readmes.rb
diff --git a/ralf/_plugins/readmes.rb b/ralf/_plugins/readmes.rb
new file mode 100644 (file)
index 0000000..f702589
--- /dev/null
@@ -0,0 +1,41 @@
+module Jekyll
+
+  class ReadmePage < Page
+    def initialize(site, base, dir, src, idx)
+      @site = site
+      @base = base
+      @dir = dir
+      @name = 'index.md'
+
+      self.process(@name)
+      self.data ||= {}
+      
+      content = File.read(src, self.merged_file_read_opts({})).each_line.to_a
+
+      self.data['layout'] = 'page'
+      self.data['title'] = content[0].match(/^#* ?(.*)\n$/)[1]
+      slug = self.data['title'].match(/^([^:]*):.*$/)
+      if slug
+        self.data['slug'] = slug[1]
+      end
+      self.data['sort'] = idx
+      self.content = content[1..content.size].join
+    end
+  end
+
+  class ReadmePageGenerator < Generator
+    safe true
+
+    def generate(site)
+      readmes = site.config['readmes']
+      base = readmes['src_base']
+      dir = readmes['out_base']
+      idx = 0
+      for project in readmes['projects']
+          site.pages << ReadmePage.new(site, site.source, File.join(dir, project['name']), File.join(base, project['src'] ? project['src'] : project['name'], 'README.md'), idx)
+          idx += 1
+      end
+    end
+  end
+
+end