blob: 4b9b08bca4fd66544d3942d0477c6c66b2d0c14f [file] [log] [blame]
/*
* 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()