RustBelt post: link to final version
[web.git] / personal / _plugins / readmes.rb
1 module Jekyll
2
3   class ReadmePage < Page
4     def initialize(site, base, dir, src, idx)
5       @site = site
6       @base = base
7       @dir = dir
8       @name = 'index.md'
9
10       self.process(@name)
11       self.data ||= {}
12       
13       content = File.read(src, Utils.merged_file_read_opts(site, {})).each_line.to_a
14
15       self.data['layout'] = 'page'
16       self.data['title'] = content[0].match(/^#* ?(.*)\n$/)[1]
17       slug = self.data['title'].match(/^([^:]*):.*$/)
18       if slug
19         self.data['slug'] = slug[1]
20       end
21       self.data['sort'] = idx
22       self.content = content[1..content.size].join
23     end
24   end
25
26   class ReadmePageGenerator < Generator
27     safe true
28
29     def generate(site)
30       # Go through all READMEs, and add them as pages
31       readmes = site.config['readmes']
32       return if readmes.nil?
33       base = readmes['src_base']
34       dir = readmes['out_base']
35       idx = 0
36       for project in readmes['projects']
37           site.pages << ReadmePage.new(site, site.source, File.join(dir, project['name']), File.join(base, project['src'] ? project['src'] : project['name'], 'README.md'), idx)
38           idx += 1
39       end
40     end
41   end
42
43 end