1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00
haml--haml/lib/hamlit/parsers/whitespace.rb
2015-03-29 21:24:10 +09:00

38 lines
884 B
Ruby

require 'set'
# Hamlit::Parsers::Whitespace cares about "whitespace removal",
# which is achieved by '<' or '>' after html tag.
module Hamlit
module Parsers
module Whitespace
def parse_whitespace_removal(scanner)
if scanner.match?(/</)
inner_removal = parse_inner_removal(scanner)
parse_outer_removal(scanner)
else
parse_outer_removal(scanner)
inner_removal = parse_inner_removal(scanner)
end
inner_removal
end
private
def reset_outer_removal
@outer_removal = Set.new
end
def parse_inner_removal(scanner)
scanner.scan(/</)
end
def parse_outer_removal(scanner)
if scanner.scan(/>/)
@outer_removal.add(@current_indent)
else
@outer_removal.delete(@current_indent)
end
end
end
end
end