def initialize(data = nil, document = nil, preprocess = false, &block)
data = [] if data.nil?
@lineno = 0
if !preprocess
@lines = data.is_a?(String) ? data.lines.entries : data.dup
@preprocess_source = false
elsif !data.empty?
@document = document
@preprocess_source = true
@include_block = block_given? ? block : nil
normalize_data(data.is_a?(String) ? data.lines.entries : data)
else
@lines = []
@preprocess_source = false
end
@source = @lines.dup
@next_line_preprocessed = false
@unescape_next_line = false
@conditionals_stack = []
@skipping = false
@eof = false
end