Browse code

added optional title to include code tag

Brandon Mathis authored on 20/07/2011 at 15:02:49
Showing 1 changed files
... ...
@@ -18,9 +18,14 @@ require 'pathname'
18 18
 module Jekyll
19 19
 
20 20
   class IncludeCodeTag < Liquid::Tag
21
-    def initialize(tag_name, file, tokens)
21
+    def initialize(tag_name, markup, tokens)
22
+      @title = nil
23
+      @file = nil
24
+      if markup.strip =~ /(.*)?(\s+|^)(\/*\S+)/i
25
+        @title = $1 || nil
26
+        @file = $3
27
+      end
22 28
       super
23
-      @file = file.strip
24 29
     end
25 30
 
26 31
     def render(context)
... ...
@@ -39,8 +44,9 @@ module Jekyll
39 39
       Dir.chdir(code_path) do
40 40
         code = file.read
41 41
         file_type = file.extname
42
+        title = @title ? "#{@title} (#{file.basename})" : file.basename
42 43
         url = "#{context.registers[:site].config['url']}/#{code_dir}/#{@file}"
43
-        source = "<div><figure role=code><figcaption><span>#{file.basename}</span> <a href='#{url}'>download</a></figcaption>\n"
44
+        source = "<div><figure role=code><figcaption><span>#{title}</span> <a href='#{url}'>download</a></figcaption>\n"
44 45
         source += "{% highlight #{file_type} %}\n" + code + "\n{% endhighlight %}</figure></div>"
45 46
         partial = Liquid::Template.parse(source)
46 47
         context.stack do