Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[vividus] Add expression to capitalize string fully #1760

Merged
merged 1 commit into from
Jul 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions docs/modules/commons/pages/expressions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ Converts an input string to upper case.

=== `capitalize`

[WARNING]
Deprecated, will be removed in VIVIDUS 0.4.0 use <<_capitilizeFirstWord>> instead

Capitalizes an input string, changing the first character to title case. No other characters are changed.

[source, subs="+quotes"]
Expand All @@ -97,8 +100,68 @@ Capitalizes an input string, changing the first character to title case. No othe
|`ABc`
|===

=== `capitalizeFirstWord`

Capitalizes an input string, changing the first character to title case. No other characters are changed.

[source, subs="+quotes"]
----
#{capitalizeFirstWord(*$input*)}
----

* *`$input`* - any string to be capitalized

.Examples of the expressions capitalizing strings
|===
|Expression |Result

|`#{capitalizeFirstWord(aBc)}`
|`ABc`
|===

=== `capitalizeWords`

Capitalizes all the whitespace separated words in the input string. Only the first character of each word is changed.

[source, subs="+quotes"]
----
#{capitalizeWords(*$input*)}
----

* *`$input`* - any string to be capitalized

.Examples of the expressions capitalizing words in the string
|===
|Expression |Result

|`#{capitalizeWords(aBc dEf)}`
|`ABc DEf`
|===

=== `capitalizeWordsFully`

Converts all the whitespace separated words in a String into capitalized words, that is each word is made up of a titlecase character and then a series of lowercase characters.

[source, subs="+quotes"]
----
#{capitalizeWordsFully(*$input*)}
----

* *`$input`* - any string to be capitalized

.Examples of the expressions capitalizing strings
|===
|Expression |Result

|`#{capitalizeWordsFully(aBc dEf)}`
|`Abc Def`
|===

=== `uncapitalize`

[WARNING]
Deprecated, will be removed in VIVIDUS 0.4.0 use <<_uncapitilizeFirstWord>> instead

Uncapitalizes an input string, changing the first character to lower case. No other characters are changed.

[source, subs="+quotes"]
Expand All @@ -116,6 +179,44 @@ Uncapitalizes an input string, changing the first character to lower case. No ot
|`aBc`
|===

=== `uncapitalizeFirstWord`

Uncapitalizes an input string, changing the first character to title case. No other characters are changed.

[source, subs="+quotes"]
----
#{uncapitalizeFirstWord(*$input*)}
----

* *`$input`* - any string to be capitalized

.Examples of the expressions capitalizing strings
|===
|Expression |Result

|`#{uncapitalizeFirstWord(ABc)}`
|`aBc`
|===

=== `uncapitalizeWords`

Uncapitalizes all the whitespace separated words in the input string. Only the first character of each word is changed.

[source, subs="+quotes"]
----
#{uncapitalizeWords(*$input*)}
----

* *`$input`* - any string to be capitalized

.Examples of the expressions capitalizing words in the string
|===
|Expression |Result

|`#{uncapitalizeWords(ABc DEf)}`
|`aBc eEf`
|===

=== `trim`

Trims an input string (removes control characters (chars with code less than or equal to 32) from both ends).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,15 @@ TG9yZCBEYWdvbiB3aWxsIHdlbGNvbWUgeW91ciBzb3VsIGluIE9ibGl2aW9uIQ==
Mg==
1986-04-26T01:23:40+04:00
`

Scenario: Verify capitlizing/uncapitalizing expressions
Then `#{<expression>}` is = `<expected>`
Examples:
|expression |expected |
|capitalize(aBc) |ABc |
|capitalizeFirstWord(aBc) |ABc |
|capitalizeWords(aBc dEf) |ABc DEf |
|capitalizeWordsFully(aBc dEf)|Abc Def |
|uncapitalize(ABc) |aBc |
|uncapitalizeFirstWord(ABc) |aBc |
|uncapitalizeWords(ABc DEf) |aBc dEf |
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@

import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.WordUtils;
import org.vividus.util.ILocationProvider;
import org.vividus.util.ResourceUtils;

Expand All @@ -59,21 +60,27 @@ public Faker load(Locale locale)
public StringsExpressionProcessor(ILocationProvider locationProvider)
{
super(List.of(
new UnaryExpressionProcessor("trim", StringUtils::trim),
new UnaryExpressionProcessor("toLowerCase", StringUtils::lowerCase),
new UnaryExpressionProcessor("toUpperCase", StringUtils::upperCase),
new UnaryExpressionProcessor("capitalize", StringUtils::capitalize),
new UnaryExpressionProcessor("uncapitalize", StringUtils::uncapitalize),
new UnaryExpressionProcessor("generate", input -> generate(locationProvider.getLocale(), input)),
new UnaryExpressionProcessor("generateLocalized", generateLocalized()),
new UnaryExpressionProcessor("loadResource", ResourceUtils::loadResource),
new UnaryExpressionProcessor("resourceToBase64", input -> Base64.getEncoder()
new UnaryExpressionProcessor("trim", StringUtils::trim),
new UnaryExpressionProcessor("toLowerCase", StringUtils::lowerCase),
new UnaryExpressionProcessor("toUpperCase", StringUtils::upperCase),
new UnaryExpressionProcessor("capitalize", StringUtils::capitalize),
new UnaryExpressionProcessor("capitalizeFirstWord", StringUtils::capitalize),
new UnaryExpressionProcessor("capitalizeWords", WordUtils::capitalize),
new UnaryExpressionProcessor("capitalizeWordsFully", WordUtils::capitalizeFully),
new UnaryExpressionProcessor("uncapitalize", StringUtils::uncapitalize),
new UnaryExpressionProcessor("uncapitalizeFirstWord", StringUtils::uncapitalize),
new UnaryExpressionProcessor("uncapitalizeWords", WordUtils::uncapitalize),
new UnaryExpressionProcessor("generate", input -> generate(locationProvider.getLocale(),
input)),
new UnaryExpressionProcessor("generateLocalized", generateLocalized()),
new UnaryExpressionProcessor("loadResource", ResourceUtils::loadResource),
new UnaryExpressionProcessor("resourceToBase64", input -> Base64.getEncoder()
.encodeToString(ResourceUtils.loadResourceAsByteArray(input))),
new UnaryExpressionProcessor("decodeFromBase64", input -> new String(Base64.getDecoder()
new UnaryExpressionProcessor("decodeFromBase64", input -> new String(Base64.getDecoder()
.decode(input.getBytes(UTF_8)), UTF_8)),
new UnaryExpressionProcessor("encodeToBase64", input -> encodeToBase64(input.getBytes(UTF_8))),
new UnaryExpressionProcessor("anyOf", StringsExpressionProcessor::anyOf),
new UnaryExpressionProcessor("toBase64Gzip", StringsExpressionProcessor::toBase64Gzip)
new UnaryExpressionProcessor("encodeToBase64", input -> encodeToBase64(input.getBytes(UTF_8))),
new UnaryExpressionProcessor("anyOf", StringsExpressionProcessor::anyOf),
new UnaryExpressionProcessor("toBase64Gzip", StringsExpressionProcessor::toBase64Gzip)
));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,12 @@ static Stream<Arguments> expressionSource()
arguments("toLowerCase(aBc)", "abc"),
arguments("toUpperCase(aBc)", "ABC"),
arguments("capitalize(aBc)", "ABc"),
arguments("capitalizeFirstWord(aBc)", "ABc"),
arguments("capitalizeWords(aBc dEf)", "ABc DEf"),
arguments("capitalizeWordsFully(aBc dEf)", "Abc Def"),
arguments("uncapitalize(ABc)", "aBc"),
arguments("uncapitalizeFirstWord(ABc)", "aBc"),
arguments("uncapitalizeWords(ABc DEf)", "aBc dEf"),
arguments("generateLocalized(regexify '[Ы]{5}', ru)", "ЫЫЫЫЫ"),
arguments("generateLocalized(number.number_between '1000','1000', es-MX)", "1000"),
arguments("loadResource(/org/vividus/bdd/expressions/resource.txt)", BIG_DATA),
Expand Down