You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/09/03 01:44:47 UTC

[groovy] branch GROOVY-7919 created (now 163cc15fbf)

This is an automated email from the ASF dual-hosted git repository.

emilles pushed a change to branch GROOVY-7919
in repository https://gitbox.apache.org/repos/asf/groovy.git


      at 163cc15fbf GROOVY-7919: add `isCase(Iterable,Object)` for `in` and `!in` support

This branch includes the following new commits:

     new 163cc15fbf GROOVY-7919: add `isCase(Iterable,Object)` for `in` and `!in` support

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[groovy] 01/01: GROOVY-7919: add `isCase(Iterable,Object)` for `in` and `!in` support

Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch GROOVY-7919
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 163cc15fbfc7a333bbf942c23d84be166660a859
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Sep 2 20:44:31 2022 -0500

    GROOVY-7919: add `isCase(Iterable,Object)` for `in` and `!in` support
---
 .../groovy/runtime/DefaultGroovyMethods.java       | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 8af9eb325d..f2f407f577 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -1198,6 +1198,34 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
         return caseValue.contains(switchValue);
     }
 
+    /**
+     * 'Case' implementation for iterable types which tests if the 'switch'
+     * operand is contained in any of the 'case' values.
+     * For example:
+     * <pre class="groovyTestCase">Iterable it = {[1,3,5].iterator()}
+     * switch( 3 ) {
+     *   case it:
+     *     assert true
+     *     break
+     *   default:
+     *     assert false
+     * }
+     *
+     * //GROOVY-7919
+     * assert 1 in it
+     * assert 2 !in it
+     * </pre>
+     *
+     * @param caseValue   the case value
+     * @param switchValue the switch value
+     * @return true if the caseValue is deemed to contain the switchValue
+     * @see #contains(Iterable,Object)
+     * @since 5.0.0
+     */
+    public static boolean isCase(Iterable caseValue, Object switchValue) {
+        return contains(caseValue, switchValue);
+    }
+
     /**
      * 'Case' implementation for maps which tests the groovy truth
      * value obtained using the 'switch' operand as key.