From a04e6de047e195a41732d1f3e46ec7b5fd23f9ea Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 28 Feb 2017 22:01:27 +0300 Subject: [PATCH] Add groupingBy and eachCount sample. --- js/js.libraries/src/core/generated/_ArraysJs.kt | 2 ++ js/js.libraries/src/core/generated/_CollectionsJs.kt | 2 ++ js/js.libraries/src/core/generated/_SequencesJs.kt | 2 ++ js/js.libraries/src/core/generated/_StringsJs.kt | 2 ++ libraries/stdlib/common/src/generated/_Arrays.kt | 2 ++ .../stdlib/common/src/generated/_Collections.kt | 2 ++ libraries/stdlib/common/src/generated/_Sequences.kt | 2 ++ libraries/stdlib/common/src/generated/_Strings.kt | 2 ++ .../samples/test/samples/collections/collections.kt | 12 ++++++++++++ libraries/stdlib/src/generated/_Arrays.kt | 2 ++ libraries/stdlib/src/generated/_Collections.kt | 2 ++ libraries/stdlib/src/generated/_Sequences.kt | 2 ++ libraries/stdlib/src/generated/_Strings.kt | 2 ++ libraries/stdlib/src/kotlin/collections/Grouping.kt | 4 ++++ .../tools/kotlin-stdlib-gen/src/templates/Mapping.kt | 2 ++ 15 files changed, 42 insertions(+) diff --git a/js/js.libraries/src/core/generated/_ArraysJs.kt b/js/js.libraries/src/core/generated/_ArraysJs.kt index c533ef6e7e0..5dd5395b8a1 100644 --- a/js/js.libraries/src/core/generated/_ArraysJs.kt +++ b/js/js.libraries/src/core/generated/_ArraysJs.kt @@ -7635,6 +7635,8 @@ public inline fun >> CharArray.groupBy /** * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/js/js.libraries/src/core/generated/_CollectionsJs.kt b/js/js.libraries/src/core/generated/_CollectionsJs.kt index 191fb76e87a..88ebedc4259 100644 --- a/js/js.libraries/src/core/generated/_CollectionsJs.kt +++ b/js/js.libraries/src/core/generated/_CollectionsJs.kt @@ -1183,6 +1183,8 @@ public inline fun >> Iterable.gr /** * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/js/js.libraries/src/core/generated/_SequencesJs.kt b/js/js.libraries/src/core/generated/_SequencesJs.kt index 4cde2fc23bb..67823eca9e2 100644 --- a/js/js.libraries/src/core/generated/_SequencesJs.kt +++ b/js/js.libraries/src/core/generated/_SequencesJs.kt @@ -648,6 +648,8 @@ public inline fun >> Sequence.gr /** * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/js/js.libraries/src/core/generated/_StringsJs.kt b/js/js.libraries/src/core/generated/_StringsJs.kt index 7621ed85cb0..657387e433e 100644 --- a/js/js.libraries/src/core/generated/_StringsJs.kt +++ b/js/js.libraries/src/core/generated/_StringsJs.kt @@ -705,6 +705,8 @@ public inline fun >> CharSequence.grou /** * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each character. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping { diff --git a/libraries/stdlib/common/src/generated/_Arrays.kt b/libraries/stdlib/common/src/generated/_Arrays.kt index 6fa3abbacf3..4e1441150c5 100644 --- a/libraries/stdlib/common/src/generated/_Arrays.kt +++ b/libraries/stdlib/common/src/generated/_Arrays.kt @@ -4448,6 +4448,8 @@ public header inline fun >> CharArray. /** * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public header inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping diff --git a/libraries/stdlib/common/src/generated/_Collections.kt b/libraries/stdlib/common/src/generated/_Collections.kt index 0dbc386418b..7f0ef0c4118 100644 --- a/libraries/stdlib/common/src/generated/_Collections.kt +++ b/libraries/stdlib/common/src/generated/_Collections.kt @@ -590,6 +590,8 @@ public header inline fun >> Iterabl /** * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public header inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping diff --git a/libraries/stdlib/common/src/generated/_Sequences.kt b/libraries/stdlib/common/src/generated/_Sequences.kt index 7d9eb821910..2e1791d78d9 100644 --- a/libraries/stdlib/common/src/generated/_Sequences.kt +++ b/libraries/stdlib/common/src/generated/_Sequences.kt @@ -362,6 +362,8 @@ public header inline fun >> Sequenc /** * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public header inline fun Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping diff --git a/libraries/stdlib/common/src/generated/_Strings.kt b/libraries/stdlib/common/src/generated/_Strings.kt index e39e4a16239..d9c01c0a404 100644 --- a/libraries/stdlib/common/src/generated/_Strings.kt +++ b/libraries/stdlib/common/src/generated/_Strings.kt @@ -425,6 +425,8 @@ public header inline fun >> CharSequen /** * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each character. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public header inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping diff --git a/libraries/stdlib/samples/test/samples/collections/collections.kt b/libraries/stdlib/samples/test/samples/collections/collections.kt index 5da4791d185..358778c23a9 100644 --- a/libraries/stdlib/samples/test/samples/collections/collections.kt +++ b/libraries/stdlib/samples/test/samples/collections/collections.kt @@ -59,6 +59,18 @@ class Collections { // same content as in namesByTeam map, but the map is mutable assertTrue(mutableNamesByTeam == namesByTeam) } + + @Sample + fun groupingByEachCount() { + val words = "one two three four five six seven eight nine ten".split(' ') + val frequenciesByFirstChar = words.groupingBy { it.first() }.eachCount() + println("Counting first letters:") + assertPrints(frequenciesByFirstChar, "{o=1, t=3, f=2, s=2, e=1, n=1}") + + val moreWords = "eleven twelve".split(' ') + val moreFrequencies = moreWords.groupingBy { it.first() }.eachCountTo(frequenciesByFirstChar.toMutableMap()) + assertPrints(moreFrequencies, "{o=1, t=4, f=2, s=2, e=2, n=1}") + } } } \ No newline at end of file diff --git a/libraries/stdlib/src/generated/_Arrays.kt b/libraries/stdlib/src/generated/_Arrays.kt index 970ddeb1666..1cc0e84208e 100644 --- a/libraries/stdlib/src/generated/_Arrays.kt +++ b/libraries/stdlib/src/generated/_Arrays.kt @@ -7716,6 +7716,8 @@ public inline fun >> CharArray.groupBy /** * Creates a [Grouping] source from an array to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Array.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/libraries/stdlib/src/generated/_Collections.kt b/libraries/stdlib/src/generated/_Collections.kt index cd5e9f200a6..880545c6748 100644 --- a/libraries/stdlib/src/generated/_Collections.kt +++ b/libraries/stdlib/src/generated/_Collections.kt @@ -1193,6 +1193,8 @@ public inline fun >> Iterable.gr /** * Creates a [Grouping] source from a collection to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Iterable.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/libraries/stdlib/src/generated/_Sequences.kt b/libraries/stdlib/src/generated/_Sequences.kt index 002cf109359..97f4a34cdee 100644 --- a/libraries/stdlib/src/generated/_Sequences.kt +++ b/libraries/stdlib/src/generated/_Sequences.kt @@ -666,6 +666,8 @@ public inline fun >> Sequence.gr /** * Creates a [Grouping] source from a sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each element. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun Sequence.groupingBy(crossinline keySelector: (T) -> K): Grouping { diff --git a/libraries/stdlib/src/generated/_Strings.kt b/libraries/stdlib/src/generated/_Strings.kt index 354a0e3439b..06152dee391 100644 --- a/libraries/stdlib/src/generated/_Strings.kt +++ b/libraries/stdlib/src/generated/_Strings.kt @@ -713,6 +713,8 @@ public inline fun >> CharSequence.grou /** * Creates a [Grouping] source from a char sequence to be used later with one of group-and-fold operations * using the specified [keySelector] function to extract a key from each character. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public inline fun CharSequence.groupingBy(crossinline keySelector: (Char) -> K): Grouping { diff --git a/libraries/stdlib/src/kotlin/collections/Grouping.kt b/libraries/stdlib/src/kotlin/collections/Grouping.kt index 58c14824646..b7234f4cd97 100644 --- a/libraries/stdlib/src/kotlin/collections/Grouping.kt +++ b/libraries/stdlib/src/kotlin/collections/Grouping.kt @@ -224,6 +224,8 @@ public inline fun > Grouping.reduceTo * Groups elements from the [Grouping] source by key and counts elements in each group. * * @return a [Map] associating the key of each group with the count of elements in the group. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") @JvmVersion @@ -241,6 +243,8 @@ public fun Grouping.eachCount(): Map = * that value is used as an initial value of the counter for that group. * * @return the [destination] map associating the key of each group with the count of elements in the group. + * + * @sample samples.collections.Collections.Transformations.groupingByEachCount */ @SinceKotlin("1.1") public fun > Grouping.eachCountTo(destination: M): M = diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Mapping.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Mapping.kt index 5f8ca750d0e..f8084f2f932 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Mapping.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Mapping.kt @@ -402,6 +402,8 @@ fun mapping(): List { """ Creates a [Grouping] source from ${f.collection.prefixWithArticle()} to be used later with one of group-and-fold operations using the specified [keySelector] function to extract a key from each ${f.element}. + + @sample samples.collections.Collections.Transformations.groupingByEachCount """ }