1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00
haml--haml/bin/lineprof
2015-11-14 03:26:55 +09:00

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