Added support for alternate (cleaner) syntax
[doozer.git] / Rakefile
blob0fb0fa33424f1c9fb571bdfed07d5a64bb8c1abe
1 require 'rake'
2 require 'rake/testtask'
3 $: << 'lib'
4 require 'doozer/version'
5 require 'doozer/tasks/fixed_hoe'
6 require 'doozer/tasks/specs'
7 require 'doozer/tasks/scm'
9 FixedHoe.new('doozer', Doozer::VERSION::STRING) do |p|
10   p.rubyforge_name = 'doozer'
11   p.author = "M@ McCray"
12   p.email = 'darthapo@gmail.com'
13   p.summary = 'A test fixture generator'
14   p.description = p.paragraphs_of('ReadMe', 1..2).join("\n\n")
15   p.url = 'http://www.mattmccray.com'
16   p.changes = p.paragraphs_of('History', 0..1).join("\n\n")
17   p.extra_deps << 'active_support'
18 end
20 desc 'Run the default tasks'
21 task :default => :test
24 require 'spec/rake/spectask'
26 desc "Run all examples"
27 Spec::Rake::SpecTask.new('spec') do |t|
28   t.spec_files = FileList['specs/**/*.rb']
29 end
31 desc "Generate specdocs for examples for inclusion in RDoc"
32 Spec::Rake::SpecTask.new('specdoc') do |t|
33   t.spec_files = FileList['specs/**/*.rb']
34   t.spec_opts = ["--format", "rdoc:EXAMPLES.rd"]
35 end
37 Rake::TestTask.new do |t|
38   t.libs << "lib"
39   t.test_files = FileList['test/*/*test.rb']
40   t.verbose = false
41 end
43 Behaviors::ReportTask.new :specs do |t|
44   t.pattern = 'test/**/*_test.rb'
45   t.html_dir = 'docs'
46   t.src_dir = 'docs/src'
47 end
49 desc "Generates the documentation"
50 task :doc=>[:specs_src] do
51   require 'bluecloth'
52   require 'erb'
53   require 'active_support'
54   #RedCloth::DEFAULT_RULES.replace [:markdown, :textile]
55   
56   src_files = FileList['docs/src/*.markdown']
57   src_filenames = src_files.map {|sf| File.basename sf, '.markdown' }
58   src_titles = src_filenames.map {|sfn| sfn.gsub('_', ' ').titleize }
59   layout_tmpl = ERB.new(File.readlines('docs/src/_layout.rhtml', 'r').join(''))
61   puts "#{src_files.length} docs found.\n"  
63   src_files.each do |src|
64     filename = File.basename src, '.markdown'
65     title = filename.gsub('_', ' ').titleize
66     content = BlueCloth.new(File.readlines(src, 'r').join('')).to_html
67     page_html = layout_tmpl.result(binding)
68     File.open("docs/#{filename}.html", 'w' ) do |f|
69       f.write( page_html )
70     end
71   end
72   
73   puts "Done."
74 end