more careful sorting of the menu; readme generator more failure-resistant; add missin...
authorRalf Jung <post@ralfj.de>
Wed, 7 Oct 2015 16:27:28 +0000 (18:27 +0200)
committerRalf Jung <post@ralfj.de>
Wed, 7 Oct 2015 16:27:28 +0000 (18:27 +0200)
_config.yml
_plugins/menu.rb
_plugins/readmes.rb

index 9ec865f..7d12ba3 100644 (file)
@@ -11,7 +11,11 @@ readmes:
     projects:
       - name: "lilass"
       - name: "dyn-nsupdate"
+      - name: "zonemaker"
       - name: "schsh"
+      - name: "rust-101"
+        src: "rust/rust-101"
+      - name: "git-mirror"
 
 defaults:
   - scope:
index 98614b7..befe357 100644 (file)
@@ -30,7 +30,7 @@ module Jekyll
                     end
                 end
                 # sort the result before returning it
-                result.sort_by { |a| a['url'] }
+                result.sort_by { |a| [a['sort'], a['url']] }
             end
             
             create_menu(input, "", displayurl.sub('/index.html', ''))
index 272e849..82f917f 100644 (file)
@@ -1,7 +1,7 @@
 module Jekyll
 
   class ReadmePage < Page
-    def initialize(site, base, dir, src)
+    def initialize(site, base, dir, src, idx)
       @site = site
       @base = base
       @dir = dir
@@ -13,8 +13,12 @@ module Jekyll
       content = File.read(src, self.merged_file_read_opts({})).each_line.to_a
 
       self.data['layout'] = 'default'
-      self.data['title'] = content[0].match(/^# (.*)\n$/)[1]
-      self.data['slug'] = self.data['title'].match(/^(.*):.*$/)[1]
+      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
@@ -26,8 +30,10 @@ module Jekyll
       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['name'], 'README.md'))
+          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