converting to github-pages
This commit is contained in:
@ -1,100 +0,0 @@
|
||||
# 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
|
||||
<div><script src='#{script_url}'></script>
|
||||
<noscript><pre><code>#{code}</code></pre></noscript></div>
|
||||
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)
|
@ -1,92 +0,0 @@
|
||||
module Jekyll
|
||||
class TagIndex < Page
|
||||
def initialize(site, base, dir, tag)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'index.html'
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), 'tag_index.html')
|
||||
self.data['tag'] = tag
|
||||
tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “'
|
||||
tag_title_suffix = site.config['tag_title_suffix'] || '”'
|
||||
self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}"
|
||||
end
|
||||
end
|
||||
|
||||
class TagFeed < Page
|
||||
def initialize(site, base, tag_dir, tag)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = tag_dir
|
||||
@name = 'atom.xml'
|
||||
self.process(@name)
|
||||
# Read the YAML data from the layout page.
|
||||
self.read_yaml(File.join(base, '_layouts'), 'tag_feed.xml')
|
||||
self.data['tag'] = tag
|
||||
# Set the title for this page.
|
||||
tag_title_prefix = site.config['tag_title_prefix'] || 'Posts Tagged “'
|
||||
tag_title_suffix = site.config['tag_title_suffix'] || '”'
|
||||
self.data['title'] = "#{tag_title_prefix}#{tag}#{tag_title_suffix}"
|
||||
# Set the meta-description for this page.
|
||||
|
||||
# Set the correct feed URL.
|
||||
self.data['feed_url'] = "#{tag_dir}/#{name}"
|
||||
end
|
||||
end
|
||||
|
||||
class TagGenerator < Generator
|
||||
safe true
|
||||
def generate(site)
|
||||
if site.layouts.key? 'tag_index'
|
||||
dir = site.config['tag_dir'] || 'tag'
|
||||
site.tags.keys.each do |tag|
|
||||
dest_dir = File.join(dir, tag.gsub(/ /, '-'))
|
||||
write_tag_index(site, dest_dir, tag)
|
||||
write_tag_feed(site, dest_dir, tag)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def write_tag_index(site, dir, tag)
|
||||
index = TagIndex.new(site, site.source, dir, tag)
|
||||
index.render(site.layouts, site.site_payload)
|
||||
index.write(site.dest)
|
||||
site.pages << index
|
||||
end
|
||||
|
||||
def write_tag_feed(site, dir, tag)
|
||||
feed = TagFeed.new(site, site.source, dir, tag)
|
||||
feed.render(site.layouts, site.site_payload)
|
||||
feed.write(site.dest)
|
||||
site.pages << feed
|
||||
end
|
||||
|
||||
end
|
||||
# Adds some extra filters used during the category creation process.
|
||||
module Filters
|
||||
|
||||
# Outputs a list of categories as comma-separated <a> links. This is used
|
||||
# to output the category list for each post on a category page.
|
||||
#
|
||||
# +categories+ is the list of categories to format.
|
||||
#
|
||||
# Returns string
|
||||
#
|
||||
def tag_links(tags)
|
||||
tags = tags.sort!.map do |item|
|
||||
item.gsub!(/ /, '-')
|
||||
"<a class='tag' href='/tag/#{item}/'>#{item}</a>"
|
||||
end
|
||||
|
||||
case tags.length
|
||||
when 0
|
||||
""
|
||||
when 1
|
||||
tags[0].to_s
|
||||
else
|
||||
"#{tags[0...-1].join(', ')}, #{tags[-1]}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user