module ActionView module Helpers module AssetTagHelper require 'jsminlib' def compress_css(source) source.gsub!(/\s+/, " ") # collapse space source.gsub!(/\/\*(.*?)\*\/ /, "") # remove comments - caution, might want to remove this if using css hacks source.gsub!(/\} /, "}\n") # add line breaks source.gsub!(/\n$/, "") # remove last break source.gsub!(/ \{ /, " {") # trim inside brackets source.gsub!(/; \}/, "}") # trim inside brackets source end def get_file_contents(filename) contents = File.read(filename) if filename =~ /\.js$/ JSMin.minimize(contents) elsif filename =~ /\.css$/ compress_css(contents) end end def join_asset_file_contents(paths) paths.collect { |path| get_file_contents(File.join(ASSETS_DIR, path.split("?").first)) }.join("\n\n") end end end end