Skip to content

Instantly share code, notes, and snippets.

@jamesaoverton
Created October 25, 2011 19:43
Show Gist options
  • Save jamesaoverton/1313992 to your computer and use it in GitHub Desktop.
Save jamesaoverton/1313992 to your computer and use it in GitHub Desktop.
Preprocess Slim layout templates for Jekyll.
require 'rubygems'
require 'slim'
Slim::Engine.set_default_options :pretty => true
desc "Parse .slim layouts, ignoring any YAML front matter."
task :parse_slim do
print "Parsing Slim layouts..."
Find.find('_layouts/slim/') do |filename|
if filename.match(/\.slim\Z/)
slimfile = File.open(filename, "r")
content = IO.read(filename)
slimfile.close
m = Regexp.new(/^(---.*?---\s*|\s*)(.*)/m).match(content)
htmlname = filename.gsub("/slim","").gsub(".slim", ".html")
htmlfile = File.new(htmlname, "w")
htmlfile.write(m[1] + Tilt['slim'].new{m[2]}.render)
htmlfile.close
end
end
puts "done!"
end
desc "Launch preview environment"
task :preview do
Rake::Task["parse_slim"].invoke
system "jekyll --auto --server"
end
desc "Build site"
task :build do |task, args|
Rake::Task["parse_slim"].invoke
system "jekyll"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment