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

Create Hamlit::Compiler

This commit is contained in:
Takashi Kokubun 2015-03-28 17:37:06 +09:00
parent 3ea7748a29
commit 2c9dc63bde
5 changed files with 25 additions and 2 deletions

8
lib/hamlit/compiler.rb Normal file
View file

@ -0,0 +1,8 @@
require 'hamlit/compilers/preserve'
require 'hamlit/filter'
module Hamlit
class Compiler < Hamlit::Filter
include Compilers::Preserve
end
end

View file

@ -0,0 +1,10 @@
module Hamlit
module Compilers
module Preserve
def on_haml_preserve(code)
code = "Hamlit::Helpers.find_and_preserve(#{code})"
[:dynamic, code]
end
end
end
end

View file

@ -1,6 +1,7 @@
require 'temple' require 'temple'
require 'hamlit/attribute_compiler' require 'hamlit/attribute_compiler'
require 'hamlit/attribute_sorter' require 'hamlit/attribute_sorter'
require 'hamlit/compiler'
require 'hamlit/dynamic_formatter' require 'hamlit/dynamic_formatter'
require 'hamlit/doctype_compiler' require 'hamlit/doctype_compiler'
require 'hamlit/filter_compiler' require 'hamlit/filter_compiler'
@ -24,6 +25,7 @@ module Hamlit
use MultilinePreprocessor use MultilinePreprocessor
use Parser use Parser
use Compiler
use DoctypeCompiler use DoctypeCompiler
use AttributeCompiler use AttributeCompiler
use NewAttributeCompier use NewAttributeCompier

View file

@ -18,5 +18,9 @@ module Hamlit
def on_haml_text(exp) def on_haml_text(exp)
[:haml, :text, compile(exp)] [:haml, :text, compile(exp)]
end end
def on_haml_preserve(exp)
[:haml, :preserve, exp]
end
end end
end end

View file

@ -132,8 +132,7 @@ module Hamlit
raise SyntaxError unless scanner.scan(/~/) raise SyntaxError unless scanner.scan(/~/)
code = scan_code(scanner) code = scan_code(scanner)
code = "Hamlit::Helpers.find_and_preserve(#{code})" escape_html([:haml, :preserve, code])
escape_html([:dynamic, code])
end end
def parse_silent_script(scanner) def parse_silent_script(scanner)