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

aharui pushed a commit to branch webservice
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/webservice by this push:
     new 54e9152  SortOn actually always returns an Array
54e9152 is described below

commit 54e9152fdb8fb92556904a583e824450884d0acd
Author: Alex Harui <[email protected]>
AuthorDate: Fri Oct 4 15:30:46 2019 -0700

    SortOn actually always returns an Array
---
 .../main/royale/org/apache/royale/utils/Language.as   | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git 
a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
 
b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
index d502aef..edb7404 100644
--- 
a/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
+++ 
b/frameworks/projects/Language/src/main/royale/org/apache/royale/utils/Language.as
@@ -368,7 +368,7 @@ package org.apache.royale.utils
          * @param names
          * @param opt
          */
-        public static function sortOn(arr:Array, names:Object, opt:Object = 
0):void
+        public static function sortOn(arr:Array, names:Object, opt:Object = 
0):Array
         {
             if (names is Array)
             {
@@ -390,6 +390,11 @@ package org.apache.royale.utils
                 opt2 = /*opt as int*/ (int(opt) == opt) ? int(opt) : 0;
             }
             muler = (Array.DESCENDING & opt2) > 0 ? -1 : 1;
+            var orig:Array;               
+            if (opt2 & Array.RETURNINDEXEDARRAY)
+            {
+                orig = arr.slice();                
+            }
             if (opt2 & Array.NUMERIC)
             {
                 arr.sort(compareNumber);
@@ -400,6 +405,18 @@ package org.apache.royale.utils
             {
                 arr.sort(compareString);
             }
+            if (opt2 & Array.RETURNINDEXEDARRAY)
+            {
+                var retArr:Array = [];
+                var n:int = arr.length;
+                for (var i:int = 0; i < n; i++)
+                {
+                    var item:Object = orig[i];
+                    retArr.push(arr.indexOf(item));
+                }
+                return retArr;
+            }
+            return arr;
         }
         
         private static function compareStringCaseinsensitive(a:Object, 
b:Object):int

Reply via email to