def initialize(source, options = {})
@encoding = nil
@parse_meta = true
@chardet = true
options.each {|name, value| instance_variable_set("@#{name}", value) }
@raw_stream = open_stream(source)
@NUM_BYTES_META = 512
@NUM_BYTES_CHARDET = 256
@NUM_BYTES_BUFFER = 1024
@DEFAULT_ENCODING = 'windows-1252'
if @encoding.nil? or not HTML5.is_valid_encoding(@encoding)
@char_encoding = detect_encoding
else
@char_encoding = @encoding
end
@buffer = @raw_stream.read(@NUM_BYTES_BUFFER) || ''
if @char_encoding == 'windows-1252'
@win1252 = true
elsif @char_encoding != 'utf-8'
require 'iconv'
begin
@buffer << @raw_stream.read unless @raw_stream.eof?
@buffer = Iconv.iconv('utf-8', @char_encoding, @buffer).first
rescue
@win1252 = true
end
end
@queue = []
@errors = []
@tell = 0
@line = @col = 0
@line_lengths = []
end