From 9545fe93dfe68974ca4bf2f9e6310216fc914e15 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Mon, 21 May 2018 15:05:13 -0700 Subject: Fix camel case subsititution --- shared/src/main/scala/caseFormats.scala | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'shared/src/main/scala') diff --git a/shared/src/main/scala/caseFormats.scala b/shared/src/main/scala/caseFormats.scala index 909e357..f4cc871 100644 --- a/shared/src/main/scala/caseFormats.scala +++ b/shared/src/main/scala/caseFormats.scala @@ -15,7 +15,12 @@ trait KebabCase { self: DerivedFormats => object FieldNaming { @inline final private def isLower(ch: Char): Boolean = - ((ch & 0x20) != 0) || (ch == '_') + ((ch & 0x20) != 0) && (ch != '_') + @inline final private def isUpper(ch: Char): Boolean = + ((ch & 0x20) == 0) && (ch != '_') + + @inline final private def toLower(ch: Char): Char = + if (ch == '_') '_' else (ch | 0x20).toChar @inline final def substituteCamel(paramName: String, substitute: Char) = { val length = paramName.length @@ -23,21 +28,14 @@ object FieldNaming { var i = 0 while (i < length) { val cur = paramName(i) - val lower = isLower(cur) - if (lower) { - builder.append(cur) - } else { - builder.append((cur ^ 0x20).toChar) - } - if (lower && i + 1 < length) { + builder.append(toLower(cur)) + if (isLower(cur) && (i + 1 < length)) { val next = paramName(i + 1) - if (!isLower(next)) { + if (isUpper(next)) { builder.append(substitute) - builder.append((next ^ 0x20).toChar) - } else { - builder.append(next) + builder.append(toLower(next)) + i += 1 } - i += 1 } i += 1 } -- cgit v1.2.3