mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 03:23:29 +03:00
lib.strings: init toSentenceCase
This commit is contained in:
parent
ddd8141b21
commit
b109863c25
3 changed files with 46 additions and 1 deletions
|
@ -109,7 +109,7 @@ let
|
||||||
isStorePath isStringLike
|
isStorePath isStringLike
|
||||||
isValidPosixName toShellVar toShellVars trim trimWith
|
isValidPosixName toShellVar toShellVars trim trimWith
|
||||||
escapeRegex escapeURL escapeXML replaceChars lowerChars
|
escapeRegex escapeURL escapeXML replaceChars lowerChars
|
||||||
upperChars toLower toUpper addContextFrom splitString
|
upperChars toLower toUpper toSentenceCase addContextFrom splitString
|
||||||
removePrefix removeSuffix versionOlder versionAtLeast
|
removePrefix removeSuffix versionOlder versionAtLeast
|
||||||
getName getVersion match split
|
getName getVersion match split
|
||||||
cmakeOptionType cmakeBool cmakeFeature
|
cmakeOptionType cmakeBool cmakeFeature
|
||||||
|
|
|
@ -1424,6 +1424,42 @@ rec {
|
||||||
*/
|
*/
|
||||||
toUpper = replaceStrings lowerChars upperChars;
|
toUpper = replaceStrings lowerChars upperChars;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts the first character of a string `s` to upper-case.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
`str`
|
||||||
|
: The string to convert to sentence case.
|
||||||
|
|
||||||
|
# Type
|
||||||
|
|
||||||
|
```
|
||||||
|
toSentenceCase :: string -> string
|
||||||
|
```
|
||||||
|
|
||||||
|
# Examples
|
||||||
|
:::{.example}
|
||||||
|
## `lib.strings.toSentenceCase` usage example
|
||||||
|
|
||||||
|
```nix
|
||||||
|
toSentenceCase "home"
|
||||||
|
=> "Home"
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
*/
|
||||||
|
toSentenceCase = str:
|
||||||
|
lib.throwIfNot (isString str)
|
||||||
|
"toSentenceCase does only accepts string values, but got ${typeOf str}"
|
||||||
|
(
|
||||||
|
let
|
||||||
|
firstChar = substring 0 1 str;
|
||||||
|
rest = substring 1 (stringLength str) str;
|
||||||
|
in
|
||||||
|
addContextFrom str (toUpper firstChar + toLower rest)
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Appends string context from string like object `src` to `target`.
|
Appends string context from string like object `src` to `target`.
|
||||||
|
|
||||||
|
|
|
@ -678,6 +678,15 @@ runTests {
|
||||||
("%20%3F%26%3D%23%2B%25%21%3C%3E%23%22%7B%7D%7C%5C%5E%5B%5D%60%09%3A%2F%40%24%27%28%29%2A%2C%3B" == strings.escapeURL " ?&=#+%!<>#\"{}|\\^[]`\t:/@$'()*,;")
|
("%20%3F%26%3D%23%2B%25%21%3C%3E%23%22%7B%7D%7C%5C%5E%5B%5D%60%09%3A%2F%40%24%27%28%29%2A%2C%3B" == strings.escapeURL " ?&=#+%!<>#\"{}|\\^[]`\t:/@$'()*,;")
|
||||||
];
|
];
|
||||||
|
|
||||||
|
testToSentenceCase = {
|
||||||
|
expr = strings.toSentenceCase "hello world";
|
||||||
|
expected = "Hello world";
|
||||||
|
};
|
||||||
|
|
||||||
|
testToSentenceCasePath = testingThrow (
|
||||||
|
strings.toSentenceCase ./.
|
||||||
|
);
|
||||||
|
|
||||||
testToInt = testAllTrue [
|
testToInt = testAllTrue [
|
||||||
# Naive
|
# Naive
|
||||||
(123 == toInt "123")
|
(123 == toInt "123")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue