module Rails2AssetPipeline::JammitConverter

Public Class Methods

convert() click to toggle source
# File lib/rails2_asset_pipeline/jammit_converter.rb, line 7
def self.convert
  move_to_app
  cleanup_scss
  convert_javascript_packs
  convert_stylesheet_packs
end

Private Class Methods

cleanup_scss() click to toggle source
# File lib/rails2_asset_pipeline/jammit_converter.rb, line 20
def self.cleanup_scss
  stylesheets = Dir["app/assets/stylesheets/**/*"].select{|f| File.file?(f) and f =~ /\.s?css$/ }

  # cleanup import of .scss
  stylesheets.each do |file|
    content = File.read(file)
    rex = /^(@import ['"].*).scss(['"]);/
    if content =~ rex
      File.open(file, 'w'){|f| f.write content.gsub(rex, "\\1\\2;") }
    end
  end

  # cleanup .scss -> .css.scss
  stylesheets.each do |file|
    sh "mv #{file} #{file.sub(".scss", ".css.scss")}" if file =~ /\.scss$/ and not file =~ /\.css\.scss$/
  end
end
convert_javascript_packs() click to toggle source
# File lib/rails2_asset_pipeline/jammit_converter.rb, line 38
def self.convert_javascript_packs
  # convert javascript packs
  jammit["javascripts"].each do |pack, assets|
    File.open("app/assets/javascripts/#{pack}.js", "w") do |f|
      assets.each do |file|
        fuzzy = /[\/\*]*\*(.js)?$/
        f.puts "//= #{file =~ fuzzy ? "require_tree ./" : "require "}#{file.sub("public/javascripts/", "").sub(".js","").sub(fuzzy,"")}"
      end
    end
  end
end
convert_stylesheet_packs() click to toggle source
# File lib/rails2_asset_pipeline/jammit_converter.rb, line 50
def self.convert_stylesheet_packs
  jammit["stylesheets"].each do |pack, assets|
    File.open("app/assets/stylesheets/#{pack}.css", "w") do |f|
      f.puts "/*"
      assets.each do |file|
        f.puts " *= require #{file.sub("public/stylesheets/", "").sub(/.s?css$/,"")}"
      end
      f.puts " */"
    end
  end
end
jammit() click to toggle source
# File lib/rails2_asset_pipeline/jammit_converter.rb, line 16
def self.jammit
  @jammit ||= YAML.load_file("config/assets.yml")
end
move_to_app() click to toggle source

TODO only move .js/.css/.scss, no images

# File lib/rails2_asset_pipeline/jammit_converter.rb, line 63
def self.move_to_app
  sh "mkdir app/assets" unless File.exist?("app/assets")
  folders = ["javascripts", "stylesheets"]
  folders.each do |folder|
    target = "app/assets/#{folder}"
    raise "Remove #{target} before proceeding, I'm not merging!" if File.exist?(target)
  end
  folders.each{|f| sh "mv public/#{f} app/assets/#{f}" }
end