mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
Split out doctype compiler
This commit is contained in:
parent
7156d23fc3
commit
7f3188e38c
3 changed files with 22 additions and 7 deletions
17
lib/hamlit/doctype_compiler.rb
Normal file
17
lib/hamlit/doctype_compiler.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
require 'hamlit/concerns/format_normalizable'
|
||||||
|
require 'hamlit/filter'
|
||||||
|
|
||||||
|
module Hamlit
|
||||||
|
class DoctypeCompiler < Hamlit::Filter
|
||||||
|
include Concerns::FormatNormalizable
|
||||||
|
|
||||||
|
def on_haml_doctype(format, type)
|
||||||
|
case type
|
||||||
|
when 'XML'
|
||||||
|
return [:static, "<?xml version='1.0' encoding='utf-8' ?>"]
|
||||||
|
end
|
||||||
|
|
||||||
|
[:html, :doctype, normalize_format(format).to_s]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,6 +1,7 @@
|
||||||
require 'temple'
|
require 'temple'
|
||||||
require 'hamlit/attribute_compiler'
|
require 'hamlit/attribute_compiler'
|
||||||
require 'hamlit/dynamic_formatter'
|
require 'hamlit/dynamic_formatter'
|
||||||
|
require 'hamlit/doctype_compiler'
|
||||||
require 'hamlit/filter_compiler'
|
require 'hamlit/filter_compiler'
|
||||||
require 'hamlit/filter_formatter'
|
require 'hamlit/filter_formatter'
|
||||||
require 'hamlit/html'
|
require 'hamlit/html'
|
||||||
|
@ -16,6 +17,7 @@ module Hamlit
|
||||||
|
|
||||||
use MultilinePreprocessor
|
use MultilinePreprocessor
|
||||||
use Parser
|
use Parser
|
||||||
|
use DoctypeCompiler
|
||||||
use AttributeCompiler
|
use AttributeCompiler
|
||||||
use NewAttributeCompier
|
use NewAttributeCompier
|
||||||
use FilterFormatter
|
use FilterFormatter
|
||||||
|
|
|
@ -2,7 +2,6 @@ require 'strscan'
|
||||||
require 'temple'
|
require 'temple'
|
||||||
require 'hamlit/concerns/balanceable'
|
require 'hamlit/concerns/balanceable'
|
||||||
require 'hamlit/concerns/escapable'
|
require 'hamlit/concerns/escapable'
|
||||||
require 'hamlit/concerns/format_normalizable'
|
|
||||||
require 'hamlit/concerns/indentable'
|
require 'hamlit/concerns/indentable'
|
||||||
require 'hamlit/concerns/line_reader'
|
require 'hamlit/concerns/line_reader'
|
||||||
|
|
||||||
|
@ -10,7 +9,6 @@ module Hamlit
|
||||||
class Parser < Temple::Parser
|
class Parser < Temple::Parser
|
||||||
include Concerns::Balanceable
|
include Concerns::Balanceable
|
||||||
include Concerns::Escapable
|
include Concerns::Escapable
|
||||||
include Concerns::FormatNormalizable
|
|
||||||
include Concerns::Indentable
|
include Concerns::Indentable
|
||||||
include Concerns::LineReader
|
include Concerns::LineReader
|
||||||
|
|
||||||
|
@ -77,14 +75,12 @@ module Hamlit
|
||||||
def parse_doctype(scanner)
|
def parse_doctype(scanner)
|
||||||
raise SyntaxError unless scanner.scan(/!!!/)
|
raise SyntaxError unless scanner.scan(/!!!/)
|
||||||
|
|
||||||
|
type = nil
|
||||||
if scanner.scan(/ +/) && scanner.rest?
|
if scanner.scan(/ +/) && scanner.rest?
|
||||||
case scanner.rest.strip
|
type = scanner.rest.strip
|
||||||
when 'XML'
|
|
||||||
return [:static, "<?xml version='1.0' encoding='utf-8' ?>"]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
[:html, :doctype, normalize_format(options[:format]).to_s]
|
[:haml, :doctype, options[:format], type]
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_tag(scanner)
|
def parse_tag(scanner)
|
||||||
|
|
Loading…
Add table
Reference in a new issue