From aea371bcd38e58b77bdf55be772a185fa1bb6276 Mon Sep 17 00:00:00 2001 From: Aaruni Kaushik Date: Thu, 8 Feb 2024 14:58:07 +0100 Subject: [PATCH] Deal with lowercasefirst once at the beginning --- src/PrettyPrinting.jl | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/PrettyPrinting.jl b/src/PrettyPrinting.jl index 7223f11c12..71833ce409 100644 --- a/src/PrettyPrinting.jl +++ b/src/PrettyPrinting.jl @@ -1596,17 +1596,19 @@ function _write_line(io::IOCustom, str::AbstractString) _graphemes = Base.Unicode.graphemes(str) firstlen = min(spaceleft, length(_graphemes)) # make an iterator over valid indices - firstiter = Base.Iterators.take(_graphemes, firstlen) + if io.lowercasefirst + firstiter = Base.Iterators.take(_graphemes, firstlen) + firstiter = join(firstiter) + firstiter = Base.Unicode.graphemes(lowercasefirst(firstiter)) + io.lowercasefirst = false + else + firstiter = Base.Iterators.take(_graphemes, firstlen) + io.lowercasefirst = false + end restiter = Base.Iterators.drop(_graphemes, firstlen) firststr = join(firstiter) if length(firstiter) == textwidth(firststr) - if io.lowercasefirst - written += write(io.io, lowercasefirst(firststr)) - io.lowercasefirst = false - else - written += write(io.io, firststr) - io.lowercasefirst = false - end + written += write(io.io, firststr) io.printed += textwidth(firststr) else #firstline is wider than number of graphemes @@ -1620,24 +1622,14 @@ function _write_line(io::IOCustom, str::AbstractString) break end end - if io.lowercasefirst - written += write(io.io, lowercasefirst(printstr)) - else - written += write(io.io, printstr) - end + written += write(io.io, printstr) io.printed += textwidth(printstr) #the spillover string written += write(io.io, "\n") written += write_indent(io) printstr = join(collect(firstiter)[j:end]) - if io.lowercasefirst - written += write(io.io, lowercasefirst(printstr)) - io.lowercasefirst = false - else - written += write(io.io, printstr) - io.lowercasefirst = false - end + written += write(io.io, printstr) io.printed += textwidth(printstr) end it = Iterators.partition(1:length(restiter), c - ind > 0 ? c - ind : c)