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:
parent
2f7857c03b
commit
338195f64a
5 changed files with 32 additions and 30 deletions
|
@ -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
|
||||
|
|
26
lib/hamlit/compilers/script.rb
Normal file
26
lib/hamlit/compilers/script.rb
Normal 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
|
|
@ -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) }
|
||||
|
|
|
@ -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
|
|
@ -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,
|
Loading…
Add table
Reference in a new issue