Cleaned up code that generates History command.

This commit is contained in:
Parker Moore 2013-06-08 17:20:41 +02:00
parent 96051568fb
commit 10e3f67f1f
1 changed files with 43 additions and 18 deletions

View File

@ -2,6 +2,7 @@ require 'rubygems'
require 'rake'
require 'rdoc'
require 'date'
require 'yaml'
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
@ -44,6 +45,39 @@ def replace_header(head, header_name)
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
end
def normalize_bullets(markdown)
markdown.gsub(/\s{2}\*{1}/, "-")
end
def linkify_prs(markdown)
markdown.gsub(/#(\d+)/) do |word|
"[#{word}](https://github.com/mojombo/jekyll/issues/#{word.delete("#")})"
end
end
def linkify_users(markdown)
markdown.gsub(/(@\w+)/) do |username|
"[#{username}](https://github.com/#{username.delete("@")})"
end
end
def linkify(markdown)
linkify_users(linkify_prs(markdown))
end
def liquid_escape(markdown)
markdown.gsub(/(`{[{%].+[}%]}`)/, "{% raw %}\\1{% endraw %}")
end
def remove_head_from_history(markdown)
index = markdown =~ /^##\s+\d+\.\d+\.\d+/
markdown[index..-1]
end
def converted_history(markdown)
remove_head_from_history(liquid_escape(linkify(normalize_bullets(markdown))))
end
#############################################################################
#
# Standard tasks
@ -150,32 +184,23 @@ namespace :site do
desc "Create a nicely formatted history page for the jekyll site based on the repo history."
task :history do
# First lets go ahead and format the file correctly (mainly bullet points)
puts "Generating the History doc"
# Checking to make sure the History file exists in the root of the repo
if File.exist?("History.markdown")
# Read the file and save to a variable so we can do the replacements
file_time = File.read("History.markdown")
# Replacing the contents of the file for the markdown bullets & issue links
rep_bullets = file_time.gsub(/\s{2}\*{1}/, "-")
rep_links = rep_bullets.gsub(/#(\d+)/) do |word|
"[#{word}](https://github.com/mojombo/jekyll/issues/#{word.delete("#")})"
end
# Create a hash for the front matter that is to be included
front_matter = {"layout" => "docs", "title" => "History",
history_file = File.read("History.markdown")
front_matter = {
"layout" => "docs",
"title" => "History",
"permalink" => "/docs/history/",
"prev_section" => "upgrading"}
# Finally we need to copy the file to the /history directory
"prev_section" => "contributing"
}
Dir.chdir('site/docs/') do
File.open("history.md", "w") do |file|
file.write("#{front_matter.to_yaml}---\n\n")
file.write(rep_links)
file.write(converted_history(history_file))
end
end
else
puts "Something went wrong"
abort "You seem to have misplaced your History.markdown file. I can haz?"
end
puts "Done"
end
end