Repository: flex-asjs
Updated Branches:
  refs/heads/develop 31188469f -> 55732623f


Add XML.plus()


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/55732623
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/55732623
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/55732623

Branch: refs/heads/develop
Commit: 55732623fcad6b19ffedb59d0bd556fc31760738
Parents: 3118846
Author: Harbs <[email protected]>
Authored: Thu May 12 14:36:34 2016 +0300
Committer: Harbs <[email protected]>
Committed: Thu May 12 14:36:34 2016 +0300

----------------------------------------------------------------------
 frameworks/projects/XML/src/main/flex/XML.as    |  8 ++++
 .../projects/XML/src/main/flex/XMLList.as       | 45 ++++++++++++++++++++
 manualtests/XMLTest/build.xml                   |  4 +-
 3 files changed, 55 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/55732623/frameworks/projects/XML/src/main/flex/XML.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/XML/src/main/flex/XML.as 
b/frameworks/projects/XML/src/main/flex/XML.as
index 8f721f8..9c45b5c 100644
--- a/frameworks/projects/XML/src/main/flex/XML.as
+++ b/frameworks/projects/XML/src/main/flex/XML.as
@@ -1381,6 +1381,14 @@ package
                        return _parent;
                }
                
+               COMPILE::JS
+               public function plus(rightHand:*):*
+               {
+                       var list:XMLList = new XMLList();
+                       list.appendChild(this);
+                       return list.plus(rightHand);
+               }
+
                /**
                 * Inserts the provided child object into the XML element 
before any existing XML properties for that element.
                 * @param value

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/55732623/frameworks/projects/XML/src/main/flex/XMLList.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/XML/src/main/flex/XMLList.as 
b/frameworks/projects/XML/src/main/flex/XMLList.as
index f71ec67..7518b95 100644
--- a/frameworks/projects/XML/src/main/flex/XMLList.as
+++ b/frameworks/projects/XML/src/main/flex/XMLList.as
@@ -540,6 +540,51 @@ package
                        }
                        return retVal;
                }
+
+               COMPILE::JS
+               public function plus(rightHand:*):*
+               {
+                       /*
+                               Semantics
+                               The production AdditiveExpression : 
AdditiveExpression + MultiplicativeExpression is evaluated as follows:
+                               
+                               1. Let a be the result of evalutating 
AdditiveExpression
+                               2. Let left = GetValue(a)
+                               3. Let m be the result of evaluating 
MultiplicativeExpression
+                               4. Let right = GetValue(m)
+                               5. If (Type(left) ∈ {XML, XMLList}) and 
(Type(right) ∈ {XML, XMLList})
+                                 a. Let list be a new XMLList
+                                 b. Call the [[Append]] method of list with 
argument x
+                                 c. Call the [[Append]] method of list with 
argument y
+                                 d. Return list
+                               6. Let pLeft = ToPrimitive(left)
+                               7. Let pRight = ToPrimitive(right)
+                               8. If Type(pLeft) is String or Type(pRight) is 
String
+                                 a. Return the result of concatenating 
ToString(pLeft) and ToString(pRight)
+                               9. Else
+                                 a. Apply the addition operation to 
ToNumber(pLeft) and ToNumber(pRight) and return the result. See ECMAScript 
Edition 3, section 11.6.3 for details.
+                       */
+                       if(rightHand is XML || rightHand is XMLList)
+                       {
+                               var list:XMLList = new XMLList();
+                               list.concat(this);
+                               list.concat(rightHand);
+                               if(rightHand is XML)
+                                       list.targetObject = rightHand;
+                               else{
+                                       list.targetObject = 
rightHand.targetObject;
+                                       list.targetProperty = 
rightHand.targetProperty;
+                               }
+                               return list;
+                       }
+                       if(rightHand is String)
+                               return this.toString() + rightHand;
+                       if(rightHand === NaN)
+                               return NaN;
+                       if(isNaN(Number( this.toString() )) || isNaN(Number( 
rightHand.toString() )))
+                               return this.toString() + rightHand.toString();
+                       return Number(this.toString()) + rightHand;
+               }
                
                /**
                 * If a name parameter is provided, lists all the children of 
the XMLList object that contain processing instructions with that name.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/55732623/manualtests/XMLTest/build.xml
----------------------------------------------------------------------
diff --git a/manualtests/XMLTest/build.xml b/manualtests/XMLTest/build.xml
index 5f352b6..41b9792 100644
--- a/manualtests/XMLTest/build.xml
+++ b/manualtests/XMLTest/build.xml
@@ -43,10 +43,10 @@
     property="FALCONJX_HOME"
     value="${env.FALCONJX_HOME}"/>
     
-    <available file="${FLEXJS_HOME}/../flex-falcon/compiler.jx/lib/jsc.jar"
+    <available file="${FLEXJS_HOME}/../flex-falcon/compiler-jx/lib/jsc.jar"
     type="file"
     property="FALCONJX_HOME"
-    value="${FLEXJS_HOME}/../flex-falcon/compiler.jx"/>
+    value="${FLEXJS_HOME}/../flex-falcon/compiler-jx"/>
     
     <available file="${env.GOOG_HOME}/closure/goog/base.js"
     type="file"

Reply via email to