def self.normalize_lines_array data
return data if data.empty?
leading_bytes = (first_line = data[0]).unpack 'C3'
if COERCE_ENCODING
utf8 = ::Encoding::UTF_8
if (leading_2_bytes = leading_bytes.slice 0, 2) == BOM_BYTES_UTF_16LE
return ((data.join.force_encoding ::Encoding::UTF_16LE)[1..-1].encode utf8).each_line.map {|line| line.rstrip }
elsif leading_2_bytes == BOM_BYTES_UTF_16BE
data[0] = (first_line.force_encoding ::Encoding::UTF_16BE)[1..-1]
return data.map {|line| %(#{((line.force_encoding ::Encoding::UTF_16BE).encode utf8).rstrip}) }
elsif leading_bytes == BOM_BYTES_UTF_8
data[0] = (first_line.force_encoding utf8)[1..-1]
end
data.map {|line| line.encoding == utf8 ? line.rstrip : (line.force_encoding utf8).rstrip }
else
if leading_bytes == BOM_BYTES_UTF_8
data[0] = first_line[3..-1]
end
data.map {|line| line.rstrip }
end
end