class Haml::Exec::Haml

The ‘haml` executable.

def initialize(args)

Parameters:
  • args (Array) -- The command-line arguments
def initialize(args)
  super
  @name = "Haml"
  @options[:requires] = []
  @options[:load_paths] = []
end

def process_result

and runs the Haml compiler appropriately.
Processes the options set by the command-line arguments,
def process_result
  super
  input = @options[:input]
  output = @options[:output]
  template = input.read()
  input.close() if input.is_a? File
  begin
    engine = ::Haml::Engine.new(template, @options[:for_engine])
    if @options[:check_syntax]
      puts "Syntax OK"
      return
    end
    @options[:load_paths].each {|p| $LOAD_PATH << p}
    @options[:requires].each {|f| require f}
    if @options[:debug]
      puts engine.precompiled
      puts '=' * 100
    end
    result = engine.to_html
  rescue Exception => e
    raise e if @options[:trace]
    case e
    when ::Haml::SyntaxError; raise "Syntax error on line #{get_line e}: #{e.message}"
    when ::Haml::Error;       raise "Haml error on line #{get_line e}: #{e.message}"
    else raise "Exception on line #{get_line e}: #{e.message}\n  Use --trace for backtrace."
    end
  end
  output.write(result)
  output.close() if output.is_a? File
end

def set_opts(opts)

Parameters:
  • opts (OptionParser) --
def set_opts(opts)
  super
  opts.on('-t', '--style NAME',
          'Output style. Can be indented (default) or ugly.') do |name|
    @options[:for_engine][:ugly] = true if name.to_sym == :ugly
  end
  opts.on('-f', '--format NAME',
          'Output format. Can be xhtml (default), html4, or html5.') do |name|
    @options[:for_engine][:format] = name.to_sym
  end
  opts.on('-e', '--escape-html',
          'Escape HTML characters (like ampersands and angle brackets) by default.') do
    @options[:for_engine][:escape_html] = true
  end
  opts.on('-r', '--require FILE', "Same as 'ruby -r'.") do |file|
    @options[:requires] << file
  end
  opts.on('-I', '--load-path PATH', "Same as 'ruby -I'.") do |path|
    @options[:load_paths] << path
  end
  opts.on('--debug', "Print out the precompiled Ruby source.") do
    @options[:debug] = true
  end
end