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

    leading_bytes = data.unpack 'C3'
    if COERCE_ENCODING
      utf8 = ::Encoding::UTF_8
      if (leading_2_bytes = leading_bytes.slice 0, 2) == 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 == 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 leading_bytes == BOM_BYTES_UTF_8
        data = data[3..-1]
      end
    end
    data.each_line.map {|line| line.rstrip }
  end