class Haml::Exec::HamlSass

specific to the ‘haml` and `sass` executables.
An abstrac class that encapsulates the code

def initialize(args)

Parameters:
  • args (Array) -- The command-line arguments
def initialize(args)
  super
  @options[:for_engine] = {}
end

def process_result

so they can run their respective programs.
This is meant to be overridden by subclasses

and requires the appropriate file.
In particular, sets `@options[:for_engine][:filename]` to the input filename
Processes the options set by the command-line arguments.
def process_result
  super
  @options[:for_engine][:filename] = @options[:filename] if @options[:filename]
  require File.dirname(__FILE__) + "/../#{@name.downcase}"
end

def set_opts(opts)

Parameters:
  • opts (OptionParser) --
def set_opts(opts)
  opts.banner = <<END
 #{@name.downcase} [options] [INPUT] [OUTPUT]
ption:
 the #{@name} engine to parse the specified template
outputs the result to the specified file.
s:
  opts.on('--rails RAILS_DIR', "Install Haml and Sass from the Gem to a Rails project") do |dir|
    original_dir = dir
    env = File.join(dir, "config", "environment.rb")
    if File.exists?(File.join(dir, "Gemfile"))
      puts("haml --rails isn't needed for Rails 3 or greater.",
        "Add 'gem \"haml\"' to your Gemfile instead.", "",
        "haml --rails will no longer work in the next version of #{@name}.", "")
    elsif File.exists?(env) && File.open(env) {|env| env.grep(/config\.gem/)}
      puts("haml --rails isn't needed for Rails 2.1 or greater.",
        "Add 'gem \"haml\"' to config/environment.rb instead.", "",
        "haml --rails will no longer work in the next version of #{@name}.", "")
    end
    dir = File.join(dir, 'vendor', 'plugins')
    unless File.exists?(dir)
      puts "Directory #{dir} doesn't exist"
      exit 1
    end
    dir = File.join(dir, 'haml')
    if File.exists?(dir)
      print "Directory #{dir} already exists, overwrite [y/N]? "
      exit 2 if gets !~ /y/i
      FileUtils.rm_rf(dir)
    end
    begin
      Dir.mkdir(dir)
    rescue SystemCallError
      puts "Cannot create #{dir}"
      exit 1
    end
    File.open(File.join(dir, 'init.rb'), 'w') do |file|
      file << File.read(File.dirname(__FILE__) + "/../../init.rb")
    end
    puts "Haml plugin added to #{original_dir}"
    exit
  end
  opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
    require 'stringio'
    @options[:check_syntax] = true
    @options[:output] = StringIO.new
  end
  super
end