| /* |
| * Copyright 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package androidx.compose.ui.text |
| |
| import androidx.compose.ui.text.intl.Locale |
| import androidx.compose.ui.text.intl.LocaleList |
| import androidx.compose.ui.text.intl.PlatformLocale |
| import androidx.compose.ui.text.platform.ActualStringDelegate |
| |
| /** |
| * Interface for providing platform dependent string related operations. |
| */ |
| internal interface PlatformStringDelegate { |
| /** |
| * Implementation must return uppercase transformed String. |
| * |
| * @param string an input string |
| * @param locale a locale object |
| * @return a transformed string |
| */ |
| fun toUpperCase(string: String, locale: PlatformLocale): String |
| |
| /** |
| * Implementation must return lowercase transformed String. |
| * |
| * @param string an input string |
| * @param locale a locale object |
| * @return a transformed string |
| */ |
| fun toLowerCase(string: String, locale: PlatformLocale): String |
| |
| /** |
| * Implementation must return capitalized String. |
| * |
| * @param string an input string |
| * @param locale a locale object |
| * @return a transformed string |
| */ |
| fun capitalize(string: String, locale: PlatformLocale): String |
| |
| /** |
| * Implementation must return decapitalized String. |
| * |
| * @param string an input string |
| * @param locale a locale object |
| * @return a transformed string |
| */ |
| fun decapitalize(string: String, locale: PlatformLocale): String |
| } |
| |
| /** |
| * Returns uppercase transformed String. |
| * |
| * @param locale a locale object |
| * @return a transformed text |
| */ |
| fun String.toUpperCase(locale: Locale): String = |
| stringDelegate.toUpperCase(this, locale.platformLocale) |
| |
| /** |
| * Returns lowercase transformed String. |
| * |
| * @param locale a locale object |
| * @return a transformed text |
| */ |
| fun String.toLowerCase(locale: Locale): String = |
| stringDelegate.toLowerCase(this, locale.platformLocale) |
| /** |
| * Returns capitalized String. |
| * |
| * @param locale a locale object |
| * @return a transformed text |
| */ |
| fun String.capitalize(locale: Locale): String = |
| stringDelegate.capitalize(this, locale.platformLocale) |
| /** |
| * Returns decapitalized String. |
| * |
| * @param locale a locale object |
| * @return a transformed text |
| */ |
| fun String.decapitalize(locale: Locale): String = |
| stringDelegate.decapitalize(this, locale.platformLocale) |
| |
| /** |
| * Returns uppercase transformed String. |
| * |
| * @param localeList a locale list object. If empty locale list object is passed, use current locale |
| * instead. |
| * @return a transformed text |
| */ |
| fun String.toUpperCase(localeList: LocaleList): String = |
| if (localeList.isEmpty()) toUpperCase(Locale.current) else toUpperCase(localeList[0]) |
| |
| /** |
| * Returns lowercase transformed String. |
| * |
| * @param localeList a locale list object. If empty locale list object is passed, use current locale |
| * instead. |
| * @return a transformed text |
| */ |
| fun String.toLowerCase(localeList: LocaleList): String = |
| if (localeList.isEmpty()) toLowerCase(Locale.current) else toLowerCase(localeList[0]) |
| |
| /** |
| * Returns capitalized String. |
| * |
| * @param localeList a locale list object. If empty locale list object is passed, use current locale |
| * instead. |
| * @return a transformed text |
| */ |
| fun String.capitalize(localeList: LocaleList): String = |
| if (localeList.isEmpty()) capitalize(Locale.current) else capitalize(localeList[0]) |
| |
| /** |
| * Returns decapitalized String. |
| * |
| * @param localeList a locale list object. If empty locale list object is passed, use current locale |
| * instead. |
| */ |
| fun String.decapitalize(localeList: LocaleList): String = |
| if (localeList.isEmpty()) decapitalize(Locale.current) else decapitalize(localeList[0]) |
| |
| private val stringDelegate = ActualStringDelegate() |