This is an automated email from the ASF dual-hosted git repository.
git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/groovy-dev-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 8912238 2025/12/01 10:25:08: Generated dev website from
groovy-website@a1c9a4f
8912238 is described below
commit 8912238502e361c212b015eda81ab589d9d3493a
Author: jenkins <[email protected]>
AuthorDate: Mon Dec 1 10:25:08 2025 +0000
2025/12/01 10:25:08: Generated dev website from groovy-website@a1c9a4f
---
blog/fruity-eclipse-grouping.html | 64 +++++++++++++++++++++------------------
blog/index.html | 2 +-
2 files changed, 36 insertions(+), 30 deletions(-)
diff --git a/blog/fruity-eclipse-grouping.html
b/blog/fruity-eclipse-grouping.html
index f446247..606d6a1 100644
--- a/blog/fruity-eclipse-grouping.html
+++ b/blog/fruity-eclipse-grouping.html
@@ -59,7 +59,13 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Grouping Fruity Collections</a></li><li><a
href='#_grouping_eclipse_collections_fruit_salad' class='anchor-link'>Grouping
Eclipse Collections Fruit Salad</a></li><li><a
href='#_grouping_jdk_collections_fruit_salad' class='anchor-link'>Grouping JDK
Collections Fruit Salad</ [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3'><ul
class='nav-sidebar'><li><a href='./'>Blog index</a></li><li class='active'><a
href='#doc'>Grouping Fruity Collections</a></li><li><a
href='#_grouping_eclipse_collections_fruit_salad' class='anchor-link'>Grouping
Eclipse Collections Fruit Salad</a></li><li><a
href='#_grouping_jdk_collections_fruit_salad' class='anchor-link'>Grouping JDK
Collections Fruit Salad</ [...]
+<a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><img style="border-radius:50%;height:48px;width:auto"
src="img/paulk-asert.png" alt="Paul King"></a>
+<div style="display:grid;align-items:center;margin:0.1ex;padding:0ex">
+ <div><a href="https://github.com/paulk-asert/" target="_blank" rel="noopener
noreferrer"><span>Paul King</span></a></div>
+ <div><small><i>PMC Member</i></small></div>
+</div>
+ </div><br/><span>Published: 2025-12-01 10:45AM</span></p><hr/><div
id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Two previous blog posts have been inspired by the use of emojis in
combination
@@ -82,11 +88,11 @@ and is one of the examples carried over into the
aforementioned Groovy blog post
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert
Fruit.ALL.groupBy(Fruit::getColor) ==
- Multimaps.mutable.list.empty()
- .withKeyMultiValues(RED, Fruit.of('🍎'), Fruit.of('🍒'))
- .withKeyMultiValues(ORANGE, Fruit.of('🍑'), Fruit.of('🍊'))
- .withKeyMultiValues(YELLOW, Fruit.of('🍌'))
- .withKeyMultiValues(MAGENTA, Fruit.of('🍇'))</code></pre>
+ Multimaps.mutable.list.empty()
+ .withKeyMultiValues(RED, Fruit.of('🍎'), Fruit.of('🍒'))
+ .withKeyMultiValues(ORANGE, Fruit.of('🍑'), Fruit.of('🍊'))
+ .withKeyMultiValues(YELLOW, Fruit.of('🍌'))
+ .withKeyMultiValues(MAGENTA, Fruit.of('🍇'))</code></pre>
</div>
</div>
<div class="paragraph">
@@ -140,12 +146,12 @@ Here is how we can explore the relationship between fruit
and colors with these
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert
Fruit.ALL.groupByEach(Fruit::getColors) ==
- Multimaps.mutable.list.empty()
- .withKeyMultiValues(GREEN, Fruit.of('🍎'), Fruit.of('🍌'),
Fruit.of('🍇'))
- .withKeyMultiValues(RED, Fruit.of('🍎'), Fruit.of('🍒'))
- .withKeyMultiValues(ORANGE, Fruit.of('🍑'), Fruit.of('🍊'))
- .withKeyMultiValues(YELLOW, Fruit.of('🍌'))
- .withKeyMultiValues(MAGENTA, Fruit.of('🍇'))</code></pre>
+ Multimaps.mutable.list.empty()
+ .withKeyMultiValues(GREEN, Fruit.of('🍎'), Fruit.of('🍌'), Fruit.of('🍇'))
+ .withKeyMultiValues(RED, Fruit.of('🍎'), Fruit.of('🍒'))
+ .withKeyMultiValues(ORANGE, Fruit.of('🍑'), Fruit.of('🍊'))
+ .withKeyMultiValues(YELLOW, Fruit.of('🍌'))
+ .withKeyMultiValues(MAGENTA, Fruit.of('🍇'))</code></pre>
</div>
</div>
<div class="paragraph">
@@ -169,11 +175,11 @@ Collections but just using normal JDK lists and maps:</p>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">var expected = [
- (GREEN) : [Fruit.of('🍎'), Fruit.of('🍌'), Fruit.of('🍇')],
- (RED) : [Fruit.of('🍎'), Fruit.of('🍒')],
- (ORANGE) : [Fruit.of('🍑'), Fruit.of('🍊')],
- (YELLOW) : [Fruit.of('🍌')],
- (MAGENTA) : [Fruit.of('🍇')]
+ (GREEN) : [Fruit.of('🍎'), Fruit.of('🍌'), Fruit.of('🍇')],
+ (RED) : [Fruit.of('🍎'), Fruit.of('🍒')],
+ (ORANGE) : [Fruit.of('🍑'), Fruit.of('🍊')],
+ (YELLOW) : [Fruit.of('🍌')],
+ (MAGENTA) : [Fruit.of('🍇')]
]</code></pre>
</div>
</div>
@@ -189,9 +195,9 @@ in combination with <code>collectMany</code>
(<em>flatMap</em>) and <code>collec
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert expected ==
Fruit.values()
- .collectMany(f -> f.colors.collect{ c -> [c, f] })
- .groupBy{ c, f -> c }
- .collectEntries{ k, v -> [k, v*.get(1)] }</code></pre>
+ .collectMany(f -> f.colors.collect{ c -> [c, f] })
+ .groupBy{ c, f -> c }
+ .collectEntries{ k, v -> [k, v*.get(1)] }</code></pre>
</div>
</div>
<div class="paragraph">
@@ -258,11 +264,11 @@ representation for our fruit rather than the enum used in
previous examples:</p>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">assert
Fruit.values().groupByMany(Fruit::getEmoji, Fruit::getColors) == [
- (GREEN) : ['🍎', '🍌', '🍇'],
- (RED) : ['🍎', '🍒'],
- (ORANGE) : ['🍑', '🍊'],
- (YELLOW) : ['🍌'],
- (MAGENTA) : ['🍇']
+ (GREEN) : ['🍎', '🍌', '🍇'],
+ (RED) : ['🍎', '🍒'],
+ (ORANGE) : ['🍑', '🍊'],
+ (YELLOW) : ['🍌'],
+ (MAGENTA) : ['🍇']
]</code></pre>
</div>
</div>
@@ -277,10 +283,10 @@ domain, e.g. <code>Person</code> to some desired value,
e.g. a String <code>name
<div class="content">
<pre class="prettyprint highlight"><code data-lang="groovy">var vowels =
'AEIOU'.toSet()
var vowelsOf = { String word -> word.toSet().intersect(vowels) }
-assert Fruit.values().groupByMany(Fruit::getEmoji, fruit ->
vowelsOf(fruit.name())) == [
- A: ['🍎', '🍑', '🍌', '🍊', '🍇'],
- E: ['🍎', '🍑', '🍒', '🍊', '🍇'],
- O: ['🍊']
+assert Fruit.values().groupByMany(Fruit::getEmoji, f -> vowelsOf(f.name()))
== [
+ A: ['🍎', '🍑', '🍌', '🍊', '🍇'],
+ E: ['🍎', '🍑', '🍒', '🍊', '🍇'],
+ O: ['🍊']
]</code></pre>
</div>
</div>
diff --git a/blog/index.html b/blog/index.html
index 821da61..7981b09 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -59,7 +59,7 @@
</ul>
</div>
</div>
- </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul
class='nav-sidebar list'><li class='active'><a
href='/blog/'>Blogs</a></li><li><a href='fruity-eclipse-grouping'>Grouping
Fruity Collections</a></li><li><a href='groovy-ai'>Exploring AI with
Groovy™</a></li><li><a href='embabel-agentic-patterns'>Groovy™,
Embabel, and Agentic Design Patterns</a></li><li><a
href='wayang-tensorflow'>Usi [...]
+ </div><div id='content' class='page-1'><div
class='row'><div class='row-fluid'><div class='col-lg-3' id='blog-index'><ul
class='nav-sidebar list'><li class='active'><a
href='/blog/'>Blogs</a></li><li><a href='fruity-eclipse-grouping'>Grouping
Fruity Collections</a></li><li><a href='groovy-ai'>Exploring AI with
Groovy™</a></li><li><a href='embabel-agentic-patterns'>Groovy™,
Embabel, and Agentic Design Patterns</a></li><li><a
href='wayang-tensorflow'>Usi [...]
<div class='row'>
<div class='colset-3-footer'>
<div class='col-1'>