diff --git a/.gitignore b/.gitignore
index b420801..682d82b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
_site
_drafts
+.gist-cache
\ No newline at end of file
diff --git a/_plugins/gist_tag.rb b/_plugins/gist_tag.rb
new file mode 100644
index 0000000..74dd3b3
--- /dev/null
+++ b/_plugins/gist_tag.rb
@@ -0,0 +1,100 @@
+# A Liquid tag for Jekyll sites that allows embedding Gists and showing code for non-JavaScript enabled browsers and readers.
+# by: Brandon Tilly
+# Source URL: https://gist.github.com/1027674
+# Post http://brandontilley.com/2011/01/31/gist-tag-for-jekyll.html
+#
+# Example usage: {% gist 1027674 gist_tag.rb %} //embeds a gist for this plugin
+
+require 'cgi'
+require 'digest/md5'
+require 'net/https'
+require 'uri'
+
+module Jekyll
+ class GistTag < Liquid::Tag
+ def initialize(tag_name, text, token)
+ super
+ @text = text
+ @cache_disabled = false
+ @cache_folder = File.expand_path "../.gist-cache", File.dirname(__FILE__)
+ FileUtils.mkdir_p @cache_folder
+ end
+
+ def render(context)
+ if parts = @text.match(/([\d]*) (.*)/)
+ gist, file = parts[1].strip, parts[2].strip
+ script_url = script_url_for gist, file
+ code = get_cached_gist(gist, file) || get_gist_from_web(gist, file)
+ html_output_for script_url, code
+ else
+ ""
+ end
+ end
+
+ def html_output_for(script_url, code)
+ code = CGI.escapeHTML code
+ <<-HTML
+
+ HTML
+ end
+
+ def script_url_for(gist_id, filename)
+ "https://gist.github.com/#{gist_id}.js?file=#{filename}"
+ end
+
+ def get_gist_url_for(gist, file)
+ "https://raw.github.com/gist/#{gist}/#{file}"
+ end
+
+ def cache(gist, file, data)
+ cache_file = get_cache_file_for gist, file
+ File.open(cache_file, "w") do |io|
+ io.write data
+ end
+ end
+
+ def get_cached_gist(gist, file)
+ return nil if @cache_disabled
+ cache_file = get_cache_file_for gist, file
+ File.read cache_file if File.exist? cache_file
+ end
+
+ def get_cache_file_for(gist, file)
+ bad_chars = /[^a-zA-Z0-9\-_.]/
+ gist = gist.gsub bad_chars, ''
+ file = file.gsub bad_chars, ''
+ md5 = Digest::MD5.hexdigest "#{gist}-#{file}"
+ File.join @cache_folder, "#{gist}-#{file}-#{md5}.cache"
+ end
+
+ def get_gist_from_web(gist, file)
+ gist_url = get_gist_url_for gist, file
+ raw_uri = URI.parse gist_url
+ proxy = ENV['http_proxy']
+ if proxy
+ proxy_uri = URI.parse(proxy)
+ https = Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port).new raw_uri.host, raw_uri.port
+ else
+ https = Net::HTTP.new raw_uri.host, raw_uri.port
+ end
+ https.use_ssl = true
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
+ request = Net::HTTP::Get.new raw_uri.request_uri
+ data = https.request request
+ data = data.body
+ cache gist, file, data unless @cache_disabled
+ data
+ end
+ end
+
+ class GistTagNoCache < GistTag
+ def initialize(tag_name, text, token)
+ super
+ @cache_disabled = true
+ end
+ end
+end
+
+Liquid::Template.register_tag('gist', Jekyll::GistTag)
+Liquid::Template.register_tag('gistnocache', Jekyll::GistTagNoCache)
diff --git a/stylesheets/screen.css b/stylesheets/screen.css
index 04fb9da..c18cb82 100644
--- a/stylesheets/screen.css
+++ b/stylesheets/screen.css
@@ -127,6 +127,10 @@ article pre {
padding: 10px;
}
+article .gist-file pre {
+ color: #000;
+}
+
article footer time {
display: block;
text-align: right;