Rakefile in haml-1.0.5 vs Rakefile in haml-1.5.0

- old
+ new

@@ -9,43 +9,54 @@ rescue LoadError not_loaded.push file end end -# For some crazy reason, -# some Rake tasks interfere with others -# (specifically, benchmarking). -# Thus, it's advantageous to only show -# the task currently being used. -def is_task?(*tasks) - ARGV[0].nil? || tasks.include?(ARGV[0]) +# ----- Benchmarking ----- + +temp_desc = <<END +Benchmark haml against ERb. + TIMES=n sets the number of runs. Defaults to 100. +END + +desc temp_desc.chomp +task :benchmark do + require 'test/benchmark' + + puts '-'*51, "Benchmark: Haml vs. ERb", '-'*51 + puts "Running benchmark #{ENV['TIMES']} times..." if ENV['TIMES'] + times = ENV['TIMES'].to_i if ENV['TIMES'] + benchmarker = Haml::Benchmarker.new + puts benchmarker.benchmark(times || 100) + puts '-'*51 end -# ----- Default: Testing ------ +# Benchmarking gets screwed up if some other tasks have been +# initialized. +unless ARGV[0] == 'benchmark' -desc 'Default: run unit tests.' -task :default => :test + # ----- Default: Testing ------ -if is_task?('test', 'default') + desc 'Default: run unit tests.' + task :default => :test + require 'rake/testtask' desc 'Test the Haml plugin' Rake::TestTask.new(:test) do |t| t.libs << 'lib' t.pattern = 'test/**/*_test.rb' t.verbose = true end -end -# ----- Packaging ----- + # ----- Packaging ----- -if is_task?('package', 'repackage', 'clobber_package') require 'rake/gempackagetask' - + spec = Gem::Specification.new do |spec| spec.name = 'haml' - spec.summary = 'An elegant, structured XHTML/XML templating engine.' + spec.summary = "An elegant, structured XHTML/XML templating engine.\nComes with Sass, a similar CSS templating engine." spec.version = File.read('VERSION').strip spec.author = 'Hampton Catlin' spec.email = 'haml@googlegroups.com' spec.description = <<-END Haml (HTML Abstraction Markup Language) is a layer on top of XHTML or XML @@ -55,65 +66,46 @@ and allowing Ruby to be embedded with ease. It was originally envisioned as a plugin for Ruby on Rails, but it can function as a stand-alone templating engine. END - readmes = FileList.new('*') { |list| list.exclude(/[a-z]/) }.to_a - spec.executables = ['haml'] + readmes = FileList.new('*') do |list| + list.exclude(/[a-z]/) + list.exclude('TODO') + end.to_a + spec.executables = ['haml', 'html2haml', 'sass'] spec.files = FileList['lib/**/*', 'bin/*', 'test/**/*', 'Rakefile', 'init.rb'].to_a + readmes spec.homepage = 'http://haml.hamptoncatlin.com/' spec.has_rdoc = true spec.extra_rdoc_files = readmes spec.rdoc_options += [ '--title', 'Haml', - '--main', 'REFERENCE', + '--main', 'README', '--exclude', 'lib/haml/buffer.rb', '--line-numbers', '--inline-source' ] spec.test_files = FileList['test/**/*_test.rb'].to_a end - + Rake::GemPackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar_gz = true pkg.need_tar_bz2 = true end -end -# ----- Benchmarking ----- + # ----- Documentation ----- -if is_task?('benchmark') - temp_desc = <<END -Benchmark HAML against ERb. - TIMES=n sets the number of runs. Defaults to 100. -END - - desc temp_desc.chomp - task :benchmark do - require 'test/benchmark' - - puts '-'*51, "Benchmark: Haml vs. ERb", '-'*51 - puts "Running benchmark #{ENV['TIMES']} times..." if ENV['TIMES'] - times = ENV['TIMES'].to_i if ENV['TIMES'] - benchmarker = Haml::Benchmarker.new - puts benchmarker.benchmark(times || 100) - puts '-'*51 - end -end - -# ----- Documentation ----- - -if is_task?('rdoc', 'rerdoc', 'clobber_rdoc', 'rdoc_devel', 'rerdoc_devel', 'clobber_rdoc_devel') require 'rake/rdoctask' - + rdoc_task = Proc.new do |rdoc| - rdoc.title = 'Haml' + rdoc.title = 'Haml/Sass' rdoc.options << '--line-numbers' << '--inline-source' - rdoc.rdoc_files.include('REFERENCE') + rdoc.rdoc_files.include('README') rdoc.rdoc_files.include('lib/**/*.rb') rdoc.rdoc_files.exclude('lib/haml/buffer.rb') + rdoc.rdoc_files.exclude('lib/sass/tree/*') end Rake::RDocTask.new do |rdoc| rdoc_task.call(rdoc) rdoc.rdoc_dir = 'rdoc' @@ -122,50 +114,54 @@ Rake::RDocTask.new(:rdoc_devel) do |rdoc| rdoc_task.call(rdoc) rdoc.rdoc_dir = 'rdoc_devel' rdoc.options << '--all' rdoc.rdoc_files.include('test/*.rb') + + # Get rid of exclusion rules rdoc.rdoc_files = Rake::FileList.new(*rdoc.rdoc_files.to_a) rdoc.rdoc_files.include('lib/haml/buffer.rb') + rdoc.rdoc_files.include('lib/sass/tree/*') end -end -# ----- Coverage ----- + # ----- Coverage ----- -if is_task?('rcov', 'clobber_rcov') unless not_loaded.include? 'rcov/rcovtask' Rcov::RcovTask.new do |t| t.libs << "test" t.test_files = FileList['test/**/*_test.rb'] + t.rcov_opts << '-x' << '"^\/"' if ENV['NON_NATIVE'] t.rcov_opts << "--no-rcovrt" end t.verbose = true end end -end -# ----- Profiling ----- + # ----- Profiling ----- -if is_task?('profile') - temp_desc = <<END -Run a profile of HAML. - TIMES=n sets the number of runs. Defaults to 100. - FILE=n sets the file to profile. Defaults to 'standard'. -END + temp_desc = <<-END + Run a profile of haml. + ENGINE=str sets the engine to be profiled (Haml or Sass). + TIMES=n sets the number of runs. Defaults to 100. + FILE=n sets the file to profile. Defaults to 'standard'. + END desc temp_desc.chomp task :profile do require 'test/profile' + + engine = ENV['ENGINE'] && ENV['ENGINE'].downcase == 'sass' ? Sass : Haml - puts '-'*51, "Profiling Haml::Template", '-'*51 + puts '-'*51, "Profiling #{engine}", '-'*51 args = [] args.push ENV['TIMES'].to_i if ENV['TIMES'] args.push ENV['FILE'] if ENV['FILE'] - profiler = Haml::Profiler.new + profiler = engine::Profiler.new res = profiler.profile(*args) puts res puts '-'*51 end + end