def initialize data = nil, cursor = nil, opts = {:normalize => false}
if !cursor
@file = @dir = nil
@path = '<stdin>'
@lineno = 1
elsif cursor.is_a? ::String
@file = cursor
@dir, @path = ::File.split @file
@lineno = 1
else
@file = cursor.file
@dir = cursor.dir
@path = cursor.path || '<stdin>'
if @file
unless @dir
@dir = ::File.dirname @file
@dir = nil if @dir == '.'
end
unless cursor.path
@path = ::File.basename @file
end
end
@lineno = cursor.lineno || 1
end
@lines = data ? (prepare_lines data, opts) : []
@source_lines = @lines.dup
@eof = @lines.empty?
@look_ahead = 0
@process_lines = true
@unescape_next_line = false
end