mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
48 lines
892 B
Ruby
Executable file
48 lines
892 B
Ruby
Executable file
#!/usr/bin/env ruby
|
|
|
|
require 'bundler/setup'
|
|
require 'hamlit'
|
|
require 'lineprof'
|
|
require 'tempfile'
|
|
require 'thor'
|
|
|
|
class CLI < Thor
|
|
desc 'render HAML', 'Benchmark render'
|
|
def render(file)
|
|
haml = File.read(file)
|
|
compiled = Hamlit::Engine.new.call(haml)
|
|
code = [
|
|
'require "lineprof"',
|
|
'require "hamlit"',
|
|
|
|
'Lineprof.profile(/./) do',
|
|
'100.times do',
|
|
compiled,
|
|
'end',
|
|
'end',
|
|
].join("\n")
|
|
|
|
file = Tempfile.create('compiled')
|
|
file.write(code)
|
|
file.close
|
|
|
|
system("bundle exec ruby #{file.path}")
|
|
end
|
|
|
|
desc 'compile HAML', 'Benchmark compile'
|
|
def compile(file)
|
|
haml = File.read(file)
|
|
Lineprof.profile(/./) do
|
|
100.times { Hamlit::Engine.new.call(haml) }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def method_missing(*args)
|
|
return super if args.length > 1
|
|
render(args.first.to_s)
|
|
end
|
|
end
|
|
|
|
CLI.start
|