| 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 |