class Hamlit::CLI

Public Instance Methods

compile(file) click to toggle source
# File lib/hamlit/cli.rb, line 17
def compile(file)
  print_code generate_code(file)
end
parse(file) click to toggle source
# File lib/hamlit/cli.rb, line 27
def parse(file)
  pp generate_ast(file)
end
render(file) click to toggle source
# File lib/hamlit/cli.rb, line 9
def render(file)
  process_load_options
  code = generate_code(file)
  puts eval(code)
end
temple(file) click to toggle source
# File lib/hamlit/cli.rb, line 22
def temple(file)
  pp generate_temple(file)
end
version() click to toggle source
# File lib/hamlit/cli.rb, line 32
def version
  puts Hamlit::VERSION
end

Private Instance Methods

engine_options() click to toggle source
# File lib/hamlit/cli.rb, line 81
def engine_options
  Hamlit::Engine.options
end
generate_ast(file) click to toggle source
# File lib/hamlit/cli.rb, line 71
def generate_ast(file)
  template = File.read(file)
  Hamlit::Parser.new(engine_options).call(template)
end
generate_code(file) click to toggle source
# File lib/hamlit/cli.rb, line 50
def generate_code(file)
  template = File.read(file)
  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
generate_temple(file) click to toggle source
# File lib/hamlit/cli.rb, line 76
def generate_temple(file)
  ast = generate_ast(file)
  Hamlit::Compiler.new(engine_options).call(ast)
end
method_missing(*args) click to toggle source

Flexible default_task, compatible with haml's CLI

Calls superclass method
# File lib/hamlit/cli.rb, line 86
def method_missing(*args)
  return super(*args) if args.length > 1
  render(args.first.to_s)
end
pp(arg) click to toggle source

Enable colored pretty printing only for development environment.

Calls superclass method
# File lib/hamlit/cli.rb, line 99
def pp(arg)
  require 'pry'
  Pry::ColorPrinter.pp(arg)
rescue LoadError
  require 'pp'
  super(arg)
end
print_code(code) click to toggle source
process_load_options() click to toggle source
# File lib/hamlit/cli.rb, line 38
def process_load_options
  if options[:load_path]
    options[:load_path].split(':').each do |dir|
      $LOAD_PATH.unshift(dir) unless $LOAD_PATH.include?(dir)
    end
  end

  if options[:require]
    require options[:require]
  end
end