class Middleman::Builder

def self.file(name, *args, &block)

def self.file(name, *args, &block)
  if (args[0] === args[1])
    args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
                     .gsub("#{File.basename(Middleman::Base.public)}/", "")
  end
  super(name, *args, &block)
end

def self.init!

def self.init!
  glob! File.basename(Middleman::Base.public), []
  glob! File.basename(Middleman::Base.views),  Middleman::Base.supported_formats
end

def self.source_root; Dir.pwd; end

Define source and desintation
def self.source_root; Dir.pwd; end

def self.template(name, *args, &block)

Override template to ask middleman for the correct extension to output
def self.template(name, *args, &block)
  return if args[0].include?('layout')
  args.first.split('/').each do |part|
    return if part[0,1] == '_'
  end
  if (args[0] === args[1])
    args[1] = args[0].gsub("#{File.basename(Middleman::Base.views)}/", "")
                     .gsub("#{File.basename(Middleman::Base.public)}/", "")
    if File.extname(args[1]) != ".js"
      args[1] = args[1].gsub!(File.extname(args[1]), "") if File.basename(args[1]).split('.').length > 2
    end
  end
  super(name, *args, &block)
end

def after_run

def after_run
end

def after_run

def after_run
  pre_yui_after_run
  
  compressor = ::YUI::JavaScriptCompressor.new(:munge => true)
  Dir[File.join(Middleman::Base.build_dir, Middleman::Base.js_dir, "**", "*.js")].each do |path|
    lines = IO.readlines(path)
    if lines.length > 1
      compressed_js = compressor.compress(lines.join($/))
      File.open(path, 'w') { |f| f.write(compressed_js) }
      say "<%= color('#{"[COMPRESSED]".rjust(12)}', :yellow) %>  " + path.gsub(Middleman::Base.build_dir+"/", '')
    end
  end
end

def after_run

def after_run
  pre_smush_after_run
  smush_dir = File.join(Middleman::Base.build_dir, Middleman::Base.images_dir)
  
  # Read cache
  cache_file = File.join(Middleman::Base.root, ".smush-cache")
  cache_data = if File.exists?(cache_file)
    Marshal.restore(File.read(cache_file))
  else
    {}
  end
  
  ::Smusher.class_eval do
    images_in_folder(smush_dir).each do |file|
      original_file_size = size(file)
      return if original_file_size.zero?
      return if cache_data[file] && cache_data[file] == original_file_size
      with_logging(file, true) do
        write_optimized_data(file)
        cache_data[file] = size(file) # Add or update cache
        File.open(cache_file, "w") { |f| f.write Marshal.dump(cache_data) } # Write cache
        say "<%= color('#{"[SMUSHED]".rjust(12)}', :yellow) %>  " + file.gsub(Middleman::Base.build_dir+"/", '')
      end
    end
  end
end

def destination_root; File.join(Dir.pwd, Middleman::Base.build_dir); end

def destination_root; File.join(Dir.pwd, Middleman::Base.build_dir); end