133 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
require 'rubygems'
 | 
						|
require 'rake'
 | 
						|
require 'rdoc'
 | 
						|
require 'date'
 | 
						|
require 'yaml'
 | 
						|
 | 
						|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
 | 
						|
require 'jekyll/version'
 | 
						|
 | 
						|
Dir.glob('rake/**.rake').each { |f| import f }
 | 
						|
 | 
						|
#############################################################################
 | 
						|
#
 | 
						|
# Helper functions
 | 
						|
#
 | 
						|
#############################################################################
 | 
						|
 | 
						|
def name
 | 
						|
  "jekyll"
 | 
						|
end
 | 
						|
 | 
						|
def version
 | 
						|
  Jekyll::VERSION
 | 
						|
end
 | 
						|
 | 
						|
def docs_name
 | 
						|
  "#{name}-docs"
 | 
						|
end
 | 
						|
 | 
						|
def gemspec_file
 | 
						|
  "#{name}.gemspec"
 | 
						|
end
 | 
						|
 | 
						|
def gem_file
 | 
						|
  "#{name}-#{Gem::Version.new(version).to_s}.gem"
 | 
						|
end
 | 
						|
 | 
						|
def normalize_bullets(markdown)
 | 
						|
  markdown.gsub(/\n\s{2}\*{1}/, "\n-")
 | 
						|
end
 | 
						|
 | 
						|
def linkify_prs(markdown)
 | 
						|
  markdown.gsub(/#(\d+)/) do |word|
 | 
						|
    "[#{word}]({{ site.repository }}/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 custom_release_header_anchors(markdown)
 | 
						|
  header_regexp = /^(\d{1,2})\.(\d{1,2})\.(\d{1,2}) \/ \d{4}-\d{2}-\d{2}/
 | 
						|
  section_regexp = /^### \w+ \w+$/
 | 
						|
  markdown.split(/^##\s/).map do |release_notes|
 | 
						|
    _, major, minor, patch = *release_notes.match(header_regexp)
 | 
						|
    release_notes
 | 
						|
      .gsub(header_regexp, "\\0\n{: #v\\1-\\2-\\3}")
 | 
						|
      .gsub(section_regexp) { |section| "#{section}\n{: ##{sluffigy(section)}-v#{major}-#{minor}-#{patch}}" }
 | 
						|
  end.join("\n## ")
 | 
						|
end
 | 
						|
 | 
						|
def sluffigy(header)
 | 
						|
  header.gsub(/#/, '').strip.downcase.gsub(/\s+/, '-')
 | 
						|
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(
 | 
						|
    custom_release_header_anchors(
 | 
						|
      liquid_escape(
 | 
						|
        linkify(
 | 
						|
          normalize_bullets(markdown)))))
 | 
						|
end
 | 
						|
 | 
						|
#############################################################################
 | 
						|
#
 | 
						|
# Standard tasks
 | 
						|
#
 | 
						|
#############################################################################
 | 
						|
 | 
						|
multitask :default => [:test, :features]
 | 
						|
 | 
						|
task :spec => :test
 | 
						|
require 'rake/testtask'
 | 
						|
Rake::TestTask.new(:test) do |test|
 | 
						|
  test.libs << 'lib' << 'test'
 | 
						|
  test.pattern = 'test/**/test_*.rb'
 | 
						|
  test.verbose = true
 | 
						|
end
 | 
						|
 | 
						|
require 'rdoc/task'
 | 
						|
Rake::RDocTask.new do |rdoc|
 | 
						|
  rdoc.rdoc_dir = 'rdoc'
 | 
						|
  rdoc.title = "#{name} #{version}"
 | 
						|
  rdoc.rdoc_files.include('README*')
 | 
						|
  rdoc.rdoc_files.include('lib/**/*.rb')
 | 
						|
end
 | 
						|
 | 
						|
begin
 | 
						|
  require 'cucumber/rake/task'
 | 
						|
  Cucumber::Rake::Task.new(:features) do |t|
 | 
						|
    t.profile = "travis"
 | 
						|
  end
 | 
						|
  Cucumber::Rake::Task.new(:"features:html", "Run Cucumber features and produce HTML output") do |t|
 | 
						|
    t.profile = "html_report"
 | 
						|
  end
 | 
						|
rescue LoadError
 | 
						|
  desc 'Cucumber rake task not available'
 | 
						|
  task :features do
 | 
						|
    abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
desc "Open an irb session preloaded with this library"
 | 
						|
task :console do
 | 
						|
  sh "irb -rubygems -r ./lib/#{name}.rb"
 | 
						|
end
 |