lib/asciidoctor/helpers.rb in asciidoctor-1.5.7.1 vs lib/asciidoctor/helpers.rb in asciidoctor-1.5.8

- old
+ new

@@ -68,25 +68,24 @@ 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 - # HACK Ruby messes up trailing whitespace on UTF-16LE, so take a different route - return ((data.join.force_encoding ::Encoding::UTF_16LE)[1..-1].encode utf8).each_line.map {|line| line.rstrip } + # HACK Ruby messes up trailing whitespace on UTF-16LE, so reencode whole document first + data = data.join + return (((data.force_encoding ::Encoding::UTF_16LE).slice 1, data.length).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}) } + data[0] = (first_line.force_encoding ::Encoding::UTF_16BE).slice 1, first_line.length + 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] + data[0] = (first_line.force_encoding utf8).slice 1, first_line.length end data.map {|line| line.encoding == utf8 ? line.rstrip : (line.force_encoding utf8).rstrip } 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[0] = first_line[3..-1] - end + data[0] = first_line.slice 3, first_line.length if leading_bytes == BOM_BYTES_UTF_8 data.map {|line| line.rstrip } end end # Public: Normalize the String and split into lines to prepare them for parsing @@ -105,22 +104,20 @@ 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 + data = ((data.force_encoding ::Encoding::UTF_16LE).slice 1, data.length).encode utf8 elsif leading_2_bytes == BOM_BYTES_UTF_16BE - data = (data.force_encoding ::Encoding::UTF_16BE)[1..-1].encode utf8 + data = ((data.force_encoding ::Encoding::UTF_16BE).slice 1, data.length).encode utf8 elsif leading_bytes == BOM_BYTES_UTF_8 - data = data.encoding == utf8 ? data[1..-1] : (data.force_encoding utf8)[1..-1] + data = data.encoding == utf8 ? (data.slice 1, data.length) : ((data.force_encoding utf8).slice 1, data.length) 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 + data = data.slice 3, data.length if leading_bytes == BOM_BYTES_UTF_8 end data.each_line.map {|line| line.rstrip } end # Public: Efficiently checks whether the specified String resembles a URI