# File lib/asciidoctor/helpers.rb, line 102
  def self.normalize_lines_from_string data
    return [] if data.nil_or_empty?

    if COERCE_ENCODING
      utf8 = ::Encoding::UTF_8
      # NOTE if data encoding is UTF-*, we only need 0..1
      leading_bytes = data[0..2].bytes.to_a
      if (leading_2_bytes = leading_bytes[0..1]) == BOM_BYTES_UTF_16LE
        data = (data.force_encoding ::Encoding::UTF_16LE)[1..-1].encode utf8
      elsif leading_2_bytes == BOM_BYTES_UTF_16BE
        data = (data.force_encoding ::Encoding::UTF_16BE)[1..-1].encode utf8
      elsif leading_bytes[0..2] == BOM_BYTES_UTF_8
        data = data.encoding == utf8 ? data[1..-1] : (data.force_encoding utf8)[1..-1]
      else
        data = data.force_encoding utf8 unless data.encoding == utf8
      end
    else
      # Ruby 1.8 has no built-in re-encoding, so no point in removing the UTF-16 BOMs
      if data[0..2].bytes.to_a == BOM_BYTES_UTF_8
        data = data[3..-1]
      end
    end
    data.each_line.map {|line| line.rstrip }
  end