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"
