Class: Haml::Exec::Haml

### Home Classes Methods

### In Files

- lib/haml/exec.rb

### Parent

Haml::Exec::Generic

### Methods

- ::new
- #process_result
- #set_opts

### Class/Module Index

Quicksearch

- Haml
- Haml::Buffer
- Haml::Compiler
- Haml::Engine
- Haml::Error
- Haml::ErubisTemplateHandler
- Haml::Exec
- Haml::Exec::Generic
- Haml::Exec::Haml
- Haml::Filters
- Haml::Filters::Base
- Haml::Filters::Cdata
- Haml::Filters::Css
- Haml::Filters::Erb
- Haml::Filters::Escaped
- Haml::Filters::Javascript
- Haml::Filters::Plain
- Haml::Filters::PrecompiledTiltFilter
- Haml::Filters::Preserve
- Haml::Filters::Ruby
- Haml::Filters::SassRailsTemplate
- Haml::Filters::ScssRailsTemplate
- Haml::Filters::TiltFilter
- Haml::Helpers
- Haml::Helpers::ActionViewExtensions
- Haml::Helpers::ErrorReturn
- Haml::Helpers::XssMods
- Haml::Options
- Haml::Parser
- Haml::Parser::Line
- Haml::Parser::ParseNode
- Haml::Plugin
- Haml::Railtie
- Haml::SafeErubisTemplate
- Haml::SyntaxError
- Haml::Template
- Haml::Util
- Haml::Util::StaticConditionalContext
- ActionView
- ActionView::Base
- ActionView::Helpers
- ActionView::Helpers::CaptureHelper
- ActionView::Helpers::FormHelper
- ActionView::Helpers::FormTagHelper
- ActionView::Helpers::HamlSupport
- ActionView::Helpers::InstanceTag
- ActionView::Helpers::TagHelper
- ActionView::Helpers::Tags
- ActionView::Helpers::Tags::TextArea
- ActionView::Helpers::TextHelper
- Object

No matching classes.

# Haml::Exec::Haml

The `haml` executable.

### Public Class Methods

new(args) click to toggle source

@param args [Array<String>] The command-line arguments

    # File lib/haml/exec.rb, line 187
    def initialize(args)
      super
      @options[:for_engine] = {}
      @options[:requires] = []
      @options[:load_paths] = []
    end

### Public Instance Methods

process_result() click to toggle source

Processes the options set by the command-line arguments, and runs the Haml compiler appropriately.

    # File lib/haml/exec.rb, line 283
    def process_result
      super
      @options[:for_engine][:filename] = @options[:filename]
      input = @options[:input]
      output = @options[:output]

      template = input.read()
      input.close() if input.is_a? File

      @options[:load_paths].each {|p| $LOAD_PATH << p}
      @options[:requires].each {|f| require f}

      begin

        engine = ::Haml::Engine.new(template, @options[:for_engine])
        if @options[:check_syntax]
          puts "Syntax OK"
          return
        end

        if @options[:parse]
          pp engine.parser.root
          return
        end

        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}"
        end
      end

      output.write(result)
      output.close() if output.is_a? File
    end

set_opts(opts) click to toggle source

Tells optparse how to parse the arguments.

@param opts [OptionParser]

    # File lib/haml/exec.rb, line 197
    def set_opts(opts)
      super

      opts.banner = Usage: haml [options] [INPUT] [OUTPUT]Description:  Converts Haml files to HTML.Options:

      opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
        require 'stringio'
        @options[:check_syntax] = true
        @options[:output] = StringIO.new
      end

      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 html5 (default), xhtml, or html4.') 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('--no-escape-attrs',
              "Don't escape HTML characters (like ampersands and angle brackets) in attributes.") do
        @options[:for_engine][:escape_attrs] = false
      end

      opts.on('-q', '--double-quote-attributes',
              'Set attribute wrapper to double-quotes (default is single).') do
        @options[:for_engine][:attr_wrapper] = '"'
      end

      opts.on('--cdata',
              'Always add CDATA sections to javascript and css blocks.') do
        @options[:for_engine][:cdata] = true
      end

      opts.on('--autoclose LIST',
              'Comma separated list of elements to be automatically self-closed.') do |list|
        @options[:for_engine][:autoclose] = list.split(',')
      end

      opts.on('--suppress-eval',
              'Don\t evaluate Ruby scripts.') do
        @options[:for_engine][:suppress_eval] = 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

      unless RUBY_VERSION < "1.9"
        opts.on('-E ex[:in]', 'Specify the default external and internal character encodings.') do |encoding|
          external, internal = encoding.split(':')
          Encoding.default_external = external if external && !external.empty?
          Encoding.default_internal = internal if internal && !internal.empty?
        end
      end

      opts.on('-d', '--debug', "Print out the precompiled Ruby source.") do
        @options[:debug] = true
      end

      opts.on('-p', '--parse', "Print out Haml parse tree.") do
        @options[:parse] = true
      end

    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.