def process_value(val)
ret = val =~ /^\$/ ? val : '#' + val ret.gsub /\s*\;$/, ''
end
def printfl(str)
print str $stdout.flush
end
namespace :meta_reports do
desc "export both color variables and the colors sass files" task :export_colors => [:export_color_variables, :export_colors_only] desc "export the color variables file" task :export_color_variables => :environment do FileUtils.mkdir_p "app/assets/stylesheets/lib" File.open("app/assets/stylesheets/lib/metareports_color_variables.scss", "w") do |f| printfl "\tVariables: " MetaReports::Color::COLORS.each do |klass, value| printfl "." klass = klass.to_s if value.is_a? Array count = -1 value.each_with_index do |val, i| f.puts "$#{klass}_#{i}: #{process_value(val.split.first)};" end else f.puts "$#{klass}: #{process_value(value.split.first)};" end end puts " Done" end end desc "export the colors file" task :export_colors_only => :environment do File.open("app/assets/stylesheets/lib/metareports_colors.scss", "w") do |f| f.puts "@import 'metareports_color_variables.scss';" print "\tCSS classes: " MetaReports::Color::COLORS.each do |klass, color| printfl "." #for now, colors are simply row colors #css_klass = klass.to_s.gsub(/___/,' ').gsub(/__/,'#').gsub(/_/,'.').gsub(/--/,':') if color.is_a? Array len = color.length color.each_with_index do |val, i| f.puts "tr.#{klass}:nth-child(#{len}n+#{i}) { background: $#{klass}_#{i}; }" end elsif color.to_s =~ /^\s*\$/ f.puts "tr.#{klass} { background: #{color}; }" else f.puts "tr.#{klass} { background: $#{klass}; }" end end puts " Done" end end
end