Skip to content

Commit

Permalink
Multiline string enhance (#4168)
Browse files Browse the repository at this point in the history
optimise the call to wasTripleQuoted, so that it would only get called once
remove escaping of " for multilines
  • Loading branch information
vzmerr authored Jul 20, 2022
1 parent 0fd4dc4 commit f9660d5
Showing 1 changed file with 8 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,28 +93,19 @@ case class MultilineString(userConfig: () => UserConfiguration)
line: String,
): Option[(Int, Boolean)] = {
var lastTripleQuote = -1
var escaped = false
var tripleQuoteClosed = closedFromPreviousLines
var quoteNum = 0
for (i <- 0 until line.size) {
val char = line(i)
if (char == '"') {
if (!escaped) {
quoteNum = quoteNum + 1
if (quoteNum == 3) {
lastTripleQuote = i
tripleQuoteClosed = !tripleQuoteClosed
quoteNum = 0
}
} else {
escaped = !escaped
quoteNum = quoteNum + 1
if (quoteNum == 3) {
lastTripleQuote = i
tripleQuoteClosed = !tripleQuoteClosed
quoteNum = 0
}
} else if (char == '\\') {
quoteNum = 0
escaped = !escaped
} else {
quoteNum = 0
escaped = false
}
}
if (lastTripleQuote != -1) Some((lastTripleQuote, tripleQuoteClosed))
Expand Down Expand Up @@ -441,18 +432,15 @@ case class MultilineString(userConfig: () => UserConfiguration)
.find(_.nonEmpty)
case (None, "\"") if onlyFourQuotes(splitLines, position) =>
Some(replaceWithSixQuotes(position))
case (None, "\n")
if doubleQuoteNotClosed(splitLines, position) && !wasTripleQuoted(
splitLines,
position,
) =>
Some(fixStringNewline(position, splitLines))
case (None, "\n")
if wasTripleQuoted(
splitLines,
position,
) =>
Some(addTripleQuote(position))
case (None, "\n") if doubleQuoteNotClosed(splitLines, position) =>
Some(fixStringNewline(position, splitLines))

case _ => None
}
}
Expand Down

0 comments on commit f9660d5

Please sign in to comment.