mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
23 lines
495 B
Ruby
23 lines
495 B
Ruby
require 'temple/filter'
|
|
|
|
module Hamlit
|
|
class ScriptCompiler < Temple::Filter
|
|
def on_haml_script(*exps)
|
|
exps = exps.dup
|
|
variable = result_identifier
|
|
code = exps.shift
|
|
|
|
assign = [:code, "#{variable} = #{code}"]
|
|
result = [:dynamic, variable]
|
|
[:multi, assign, *exps, result]
|
|
end
|
|
|
|
private
|
|
|
|
def result_identifier
|
|
@id_auto_increment ||= -1
|
|
@id_auto_increment += 1
|
|
"_hamlit_compiler#{@id_auto_increment}"
|
|
end
|
|
end
|
|
end
|