require 'whimsy/asf/config'

task :server => 'views/pages.js.rb' do
  ENV['RACK_ENV']='development'
  require 'wunderbar/listen'
end

file 'views/pages.js.rb' => FileList['views/pages/*.js.rb'] do
  File.open('views/pages.js.rb', 'w') do |pages|
    # define a dummy superclass
    class React
    end

    # evaluate each page in a module, and output a 'require' statement for each
    Dir.chdir(File.expand_path('../views', __FILE__)) do
      Dir['pages/*.js.rb'].each do |page|
        eval "module Pages; #{File.read page}; end"
        pages.puts "require_relative #{page.sub(/\.js\.rb$/, '').inspect}"
      end
    end

    # output a list of page class names
    pages.print "\nPages = [\n  "
    pages.print Pages.constants.map(&:to_s).map(&:inspect).join(",\n  ")
    pages.puts "\n]"
  end
end
