You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/11/22 01:31:57 UTC
[3/7] git commit: [flex-falcon] [refs/heads/develop] - fix binding
destination functions
fix binding destination functions
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/0d2c3f30
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/0d2c3f30
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/0d2c3f30
Branch: refs/heads/develop
Commit: 0d2c3f305891586de3bbebb30495e1e56c2360fb
Parents: 75b555a
Author: Alex Harui <ah...@apache.org>
Authored: Mon Nov 17 17:08:31 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 21 14:58:15 2014 -0800
----------------------------------------------------------------------
.../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 31 ++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/0d2c3f30/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 7c59b1d..08b113e 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -489,7 +489,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
if (destNode != null)
{
StringBuilder sb = new StringBuilder();
- sb.append(asEmitter.stringifyNode(destNode));
+ sb.append(generateSetterFunction(destNode));
writeNewline(sb.toString() + ASEmitterTokens.COMMA.getToken());
}
else
@@ -531,7 +531,34 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
writeNewline("null" + ASEmitterTokens.SQUARE_CLOSE.getToken() + ASEmitterTokens.SEMICOLON.getToken());
}
- private void encodeWatcher(WatcherInfoBase watcherInfoBase)
+ private String generateSetterFunction(IExpressionNode destNode) {
+ IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
+ .getASEmitter();
+ String body = asEmitter.stringifyNode(destNode);
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("function (value) { ");
+ int lastGet = body.lastIndexOf("get_");
+ int lastDot = body.lastIndexOf(".");
+ if (lastDot == lastGet - 1)
+ {
+ String object = body.substring(0, lastDot);
+ String getter = body.substring(lastDot);
+ String setter = getter.replace("get_", "set_");
+ setter = setter.replace("()", "(value)");
+ body = object + setter;
+ sb.append(body);
+ }
+ else
+ {
+ sb.append(body);
+ sb.append(" = value;");
+ }
+ sb.append(";}");
+ return sb.toString();
+ }
+
+ private void encodeWatcher(WatcherInfoBase watcherInfoBase)
{
IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
.getASEmitter();