class Html2haml::Exec::HTML2Haml

The `html2haml` executable.

Public Class Methods

new(args) click to toggle source

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

Calls superclass method Html2haml::Exec::Generic::new
# File lib/html2haml/exec.rb, line 189
def initialize(args)
  super
  @module_opts = {}
end

Public Instance Methods

process_result() click to toggle source

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

Calls superclass method Html2haml::Exec::Generic#process_result
# File lib/html2haml/exec.rb, line 233
def process_result
  super

  require 'html2haml/html'

  input = @options[:input]
  output = @options[:output]

  @module_opts[:erb] ||= input.respond_to?(:path) && input.path =~ /\.(rhtml|erb)$/
  @module_opts[:erb] &&= @options[:no_erb] != false

  output.write(HTML.new(input, @module_opts).render)
rescue ::Haml::Error => e
  raise "#{e.is_a?(::Haml::SyntaxError) ? "Syntax error" : "Error"} on line " +
    "#{get_line e}: #{e.message}"
rescue LoadError => err
  handle_load_error(err)
end
set_opts(opts) click to toggle source

Tells optparse how to parse the arguments.

@param opts [OptionParser]

Calls superclass method Html2haml::Exec::Generic#set_opts
# File lib/html2haml/exec.rb, line 197
      def set_opts(opts)
        opts.banner = <<END
Usage: html2haml [options] [INPUT] [OUTPUT]

Description: Transforms an HTML file into corresponding Haml code.

Options:
END

        opts.on('-e', '--erb', 'Parse ERB tags.') do
          @module_opts[:erb] = true
        end

        opts.on('--no-erb', "Don't parse ERB tags.") do
          @options[:no_erb] = true
        end

        opts.on("--html-attributes", "Use HTML style attributes instead of Ruby hash style.") do
          @module_opts[:html_style_attributes] = true
        end

        opts.on("--ruby19-attributes", "Use Ruby 1.9-style attributes when possible.") do
          @module_opts[:ruby19_style_attributes] = true
        end

        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

        super
      end