diff --git a/lib/hamlit/cli.rb b/lib/hamlit/cli.rb index 3c049e50..a1d99f35 100644 --- a/lib/hamlit/cli.rb +++ b/lib/hamlit/cli.rb @@ -10,6 +10,7 @@ module Hamlit end desc 'compile HAML', 'Show compile result' + option :actionview, type: :boolean, default: false, aliases: %w[-a] def compile(file) print_code generate_code(file) end @@ -23,7 +24,23 @@ module Hamlit def generate_code(file) template = File.read(file) - Hamlit::Engine.new.call(template) + if options[:actionview] + require 'action_view' + require 'action_view/base' + require 'hamlit/rails_template' + handler = Hamlit::RailsTemplate.new + template = ActionView::Template.new(template, 'inline template', handler, { locals: [] }) + code = handler.call(template) + source = <<-end_src + def _inline_template___2144273726781623612_70327218547300(local_assigns, output_buffer) + _old_virtual_path, @virtual_path = @virtual_path, nil;_old_output_buffer = @output_buffer;;#{code} + ensure + @virtual_path, @output_buffer = _old_virtual_path, _old_output_buffer + end + end_src + else + Hamlit::Engine.new.call(template) + end end def generate_ast(file)