1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00

Merge ScriptCompiler into Compiler

This commit is contained in:
Takashi Kokubun 2015-03-28 17:56:00 +09:00
parent 2f7857c03b
commit 338195f64a
5 changed files with 32 additions and 30 deletions

View file

@ -1,10 +1,14 @@
require 'hamlit/compilers/doctype'
require 'hamlit/compilers/preserve'
require 'hamlit/compilers/script'
require 'hamlit/concerns/escapable'
require 'hamlit/filter'
module Hamlit
class Compiler < Hamlit::Filter
include Compilers::Doctype
include Compilers::Preserve
include Compilers::Script
include Concerns::Escapable
end
end

View file

@ -0,0 +1,26 @@
require 'hamlit/filter'
require 'hamlit/concerns/escapable'
module Hamlit
module Compilers
module Script
def on_haml_script(*exps)
exps = exps.dup
variable = result_identifier
code = exps.shift
assign = [:code, "#{variable} = #{code}"]
result = escape_html([:dynamic, variable])
[:multi, assign, *exps.map { |exp| compile(exp) }, result]
end
private
def result_identifier
@id_auto_increment ||= -1
@id_auto_increment += 1
"_hamlit_compiler#{@id_auto_increment}"
end
end
end
end

View file

@ -10,7 +10,6 @@ require 'hamlit/html/ugly'
require 'hamlit/multiline'
require 'hamlit/new_attribute_compiler'
require 'hamlit/parser'
require 'hamlit/script_compiler'
require 'hamlit/text_compiler'
module Hamlit
@ -30,7 +29,6 @@ module Hamlit
use AttributeSorter
use FilterFormatter
use FilterCompiler
use ScriptCompiler
use TextCompiler
use DynamicFormatter
use :Html, -> { create(html_compiler) }

View file

@ -1,26 +0,0 @@
require 'hamlit/filter'
require 'hamlit/concerns/escapable'
module Hamlit
class ScriptCompiler < Hamlit::Filter
include Concerns::Escapable
def on_haml_script(*exps)
exps = exps.dup
variable = result_identifier
code = exps.shift
assign = [:code, "#{variable} = #{code}"]
result = escape_html([:dynamic, variable])
[:multi, assign, *exps.map { |exp| compile(exp) }, result]
end
private
def result_identifier
@id_auto_increment ||= -1
@id_auto_increment += 1
"_hamlit_compiler#{@id_auto_increment}"
end
end
end

View file

@ -1,5 +1,5 @@
describe Hamlit::ScriptCompiler do
describe '#call' do
describe Hamlit::Compiler do
describe 'script' do
it 'does not alter single-line script' do
assert_compile(
[:multi,