def self.normalize_lines_array data
return [] if data.empty?
leading_bytes = (first_line = data[0])[0..2].bytes.to_a
if COERCE_ENCODING
utf8 = ::Encoding::UTF_8
if (leading_2_bytes = leading_bytes[0..1]) == BOM_BYTES_UTF_16LE
return ((data.join.force_encoding ::Encoding::UTF_16LE)[1..-1].encode utf8).lines.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[0..2] == 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