Class | Haml::Exec::Haml |
In: |
lib/haml/exec.rb
|
Parent: | HamlSass |
The `haml` executable.
@param args [Array<String>] The command-line arguments
# File lib/haml/exec.rb, line 277 277: def initialize(args) 278: super 279: @name = "Haml" 280: @options[:requires] = [] 281: @options[:load_paths] = [] 282: end
Processes the options set by the command-line arguments, and runs the Haml compiler appropriately.
# File lib/haml/exec.rb, line 320 320: def process_result 321: super 322: input = @options[:input] 323: output = @options[:output] 324: 325: template = input.read() 326: input.close() if input.is_a? File 327: 328: begin 329: engine = ::Haml::Engine.new(template, @options[:for_engine]) 330: if @options[:check_syntax] 331: puts "Syntax OK" 332: return 333: end 334: 335: @options[:load_paths].each {|p| $LOAD_PATH << p} 336: @options[:requires].each {|f| require f} 337: 338: if @options[:debug] 339: puts engine.precompiled 340: puts '=' * 100 341: end 342: 343: result = engine.to_html 344: rescue Exception => e 345: raise e if @options[:trace] 346: 347: case e 348: when ::Haml::SyntaxError; raise "Syntax error on line #{get_line e}: #{e.message}" 349: when ::Haml::Error; raise "Haml error on line #{get_line e}: #{e.message}" 350: else raise "Exception on line #{get_line e}: #{e.message}\n Use --trace for backtrace." 351: end 352: end 353: 354: output.write(result) 355: output.close() if output.is_a? File 356: end
Tells optparse how to parse the arguments.
@param opts [OptionParser]
# File lib/haml/exec.rb, line 287 287: def set_opts(opts) 288: super 289: 290: opts.on('-t', '--style NAME', 291: 'Output style. Can be indented (default) or ugly.') do |name| 292: @options[:for_engine][:ugly] = true if name.to_sym == :ugly 293: end 294: 295: opts.on('-f', '--format NAME', 296: 'Output format. Can be xhtml (default), html4, or html5.') do |name| 297: @options[:for_engine][:format] = name.to_sym 298: end 299: 300: opts.on('-e', '--escape-html', 301: 'Escape HTML characters (like ampersands and angle brackets) by default.') do 302: @options[:for_engine][:escape_html] = true 303: end 304: 305: opts.on('-r', '--require FILE', "Same as 'ruby -r'.") do |file| 306: @options[:requires] << file 307: end 308: 309: opts.on('-I', '--load-path PATH', "Same as 'ruby -I'.") do |path| 310: @options[:load_paths] << path 311: end 312: 313: opts.on('--debug', "Print out the precompiled Ruby source.") do 314: @options[:debug] = true 315: end 316: end