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/10/06 23:29:33 UTC

[14/17] git commit: [flex-asjs] [refs/heads/develop] - parse styles as strings

parse styles as strings


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

Branch: refs/heads/develop
Commit: b8ef431cf7884dbf37a7a8ba6b21a20d1e466720
Parents: 43b8981
Author: Alex Harui <ah...@apache.org>
Authored: Mon Oct 6 13:15:25 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Oct 6 13:15:25 2014 -0700

----------------------------------------------------------------------
 .../src/org/apache/flex/core/IValuesImpl.as     | 11 +++++++
 .../org/apache/flex/core/SimpleCSSValuesImpl.as | 34 ++++++++++++++++++++
 .../org/apache/flex/core/SimpleValuesImpl.as    | 17 +++++++++-
 .../FlexJSUI/src/org/apache/flex/core/UIBase.as |  6 ++--
 .../src/org/apache/flex/core/UIButtonBase.as    |  4 +--
 5 files changed, 67 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b8ef431c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IValuesImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IValuesImpl.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IValuesImpl.as
index e643a6e..693e43e 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IValuesImpl.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IValuesImpl.as
@@ -108,5 +108,16 @@ package org.apache.flex.core
          */
         function convertColor(value:Object):uint;
 
+        /**
+         *  Converts an HTML-like style format into an object.
+         *
+         *  @param value A string, such as "color:red;fontSize:10px".
+         * 
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        function parseStyles(value:String):Object;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b8ef431c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleCSSValuesImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleCSSValuesImpl.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleCSSValuesImpl.as
index 103e732..85681da 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleCSSValuesImpl.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleCSSValuesImpl.as
@@ -471,6 +471,40 @@ package org.apache.flex.core
         }
         
         /**
+         *  @copy org.apache.flex.core.IValuesImpl#parseStyles()
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function parseStyles(styles:String):Object
+        {
+            var obj:Object = {};
+            var parts:Array = styles.split(";");
+            for each (var part:String in parts)
+            {
+                var pieces:Array = part.split(":");
+                var value:String = pieces[1];
+                if (value == "null")
+                    obj[pieces[0]] = null;
+                else if (value == "true")
+                    obj[pieces[0]] = true;
+                else if (value == "false")
+                    obj[pieces[0]] = false;
+                else
+                {
+                    var n:Number = Number(value);
+                    if (isNaN(n))
+                        obj[pieces[0]] = value;
+                    else
+                        obj[pieces[0]] = n;
+                }
+            }
+            return obj;
+        }
+        
+        /**
          *  A map of inheriting styles 
          *  
          *  @langversion 3.0

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b8ef431c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleValuesImpl.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleValuesImpl.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleValuesImpl.as
index 0861d68..780a0e7 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleValuesImpl.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleValuesImpl.as
@@ -148,5 +148,20 @@ package org.apache.flex.core
                 return uint(stringValue.substr(1));
             return uint(stringValue);
         }
-	}
+        
+        /**
+         *  @copy org.apache.flex.core.IValuesImpl#parseStyles()
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function parseStyles(value:String):Object
+        {
+            value = value.replace(/;/g, ",");
+            return JSON.parse("{" + value + "}");
+        }
+
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b8ef431c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIBase.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIBase.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIBase.as
index de1816e..98a7c86 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIBase.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIBase.as
@@ -49,7 +49,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public class UIBase extends Sprite implements IStrand, IEventDispatcher, IParentIUIBase, IStyleableObject, IChild
+	public class UIBase extends Sprite implements IStrandWithModel, IEventDispatcher, IParentIUIBase, IStyleableObject, IChild
 	{
         /**
          *  Constructor.
@@ -460,7 +460,9 @@ package org.apache.flex.core
             if (_styles != value)
             {
                 if (value is String)
-                    _styles = JSON.parse("{" + value + "}");                
+                {
+                    _styles = ValuesManager.valuesImpl.parseStyles(value as String);
+                }
                 else
                     _styles = value;
                 dispatchEvent(new org.apache.flex.events.Event("stylesChanged"));

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b8ef431c/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
index 255b91f..713c37f 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/UIButtonBase.as
@@ -57,7 +57,7 @@ package org.apache.flex.core
      *  @playerversion AIR 2.6
      *  @productversion FlexJS 0.0
      */
-	public class UIButtonBase extends SimpleButton implements IStrand, IEventDispatcher, IUIBase, IStyleableObject
+	public class UIButtonBase extends SimpleButton implements IStrandWithModel, IEventDispatcher, IUIBase, IStyleableObject
 	{
         /**
          *  Constructor.
@@ -550,7 +550,7 @@ package org.apache.flex.core
         public function set style(value:Object):void
         {
             if (value is String)
-                _styles = JSON.parse("{" + value + "}");                
+                _styles = ValuesManager.valuesImpl.parseStyles(value as String);
             else
                 _styles = value;
             dispatchEvent(new org.apache.flex.events.Event("stylesChanged"));