lib/less-rails.rb in less-rails-1.0.0 vs lib/less-rails.rb in less-rails-2.0.0

- old
+ new

@@ -1,73 +1,2 @@ -require 'less' +require "less/rails" -module Less - module Plugin - extend self - - attr_reader :options - - # Set default options - @options = { - :css_location => "#{RAILS_ROOT}/public/stylesheets", - :template_location => "#{RAILS_ROOT}/app/stylesheets", - :update => :when_changed, # Available are: :never, :when_changed and :always - :compress => false # Removes newlines from generated CSS - } - - # Accessor for setting options from e.g. an initializer - def options=(opts) - @options.merge!(opts) - end - - # Updates all stylesheets in the template_location and - # create corresponding files in the css_location. - def update_stylesheets - return if options[:update] == :never - - # Recursively loop through the directory specified in template_location. - Dir.glob(File.join(options[:template_location], '**', '*.less')).each do |stylesheet| - # Update the current stylesheet if update is not :when_changed OR when the - # less-file is newer than the css-file. - update_stylesheet(stylesheet) if options[:update] != :when_changed || stylesheet_needs_update?(stylesheet) - end - end - - private - - # Update a single stylesheet. - def update_stylesheet(stylesheet) - relative_path = relative_path(stylesheet) - - # Remove the old generated stylesheet - File.unlink(File.join(options[:css_location], relative_path + ".css")) if File.exist?(File.join(options[:css_location], relative_path + ".css")) - - # Generate the new stylesheet - Less::Command.new({:source => stylesheet, :destination => File.join(options[:css_location], relative_path + ".css"), :compress => options[:compress]}).run! - end - - # Check if the specified stylesheet is in need of an update. - def stylesheet_needs_update?(stylesheet) - relative_path = relative_path(stylesheet) - - return true unless File.exist?(File.join(options[:css_location], relative_path + ".css")) - return File.ctime(stylesheet) > File.ctime(File.join(options[:css_location], relative_path + ".css")) - end - - # Returns the relative path for the given stylesheet - def relative_path(stylesheet) - stylesheet.sub(options[:template_location] + '/', '').sub('.less', '') - end - end -end - -# Add a before_filter that triggers the update_stylesheets method -# before every call to a controller. -module ActionController - class Base - alias_method :less_old_process, :process - def process(*args) - Less::Plugin.update_stylesheets - less_old_process(*args) - end - end -end \ No newline at end of file