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

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

commit 16f0b2a3d6e566eeddb770f28d5b693dbf149d1a
Author: Alex Harui <aha...@apache.org>
AuthorDate: Fri Feb 23 16:54:23 2018 -0800

    get api lists from both swf and js.  swf-only shows up as red, js-only as 
green, if available on both platforms, is black or anchor-visited color
---
 examples/royale/ASDoc/build.xml                    |  10 +-
 .../royale/ASDoc/src/main/royale/ASDocClassData.as |  52 ++++++
 .../ASDoc/src/main/royale/ASDocClassEvents.as      |  11 ++
 .../ASDoc/src/main/royale/ASDocMainView.mxml       |   7 +
 .../ASDoc/src/main/royale/EventDetailRenderer.mxml |   4 +
 .../src/main/royale/EventSummaryRenderer.mxml      |   4 +
 .../src/main/royale/MethodDetailRenderer.mxml      |   4 +
 .../src/main/royale/MethodSummaryRenderer.mxml     |   4 +
 .../src/main/royale/PropertyDetailRenderer.mxml    |   5 +
 .../ASDoc/src/main/royale/SummaryRenderer.mxml     |   7 +
 .../ASDoc/src/main/royale/models/ASDocModel.as     | 197 ++++++++++++++++++---
 11 files changed, 281 insertions(+), 24 deletions(-)

diff --git a/examples/royale/ASDoc/build.xml b/examples/royale/ASDoc/build.xml
index c8178b1..19692a8 100644
--- a/examples/royale/ASDoc/build.xml
+++ b/examples/royale/ASDoc/build.xml
@@ -33,14 +33,20 @@
         <os family="windows" />
     </condition>
     <property name="config.path" 
value="${basedir}/src/main/config/asdoc-js-config.xml"/>
+    <property name="windows_swf_config" 
location="${basedir}/src/main/config/asdoc-swf-config.xml" />
+    <condition property="config.swf.path" value="${windows_swf_config}">
+        <os family="windows" />
+    </condition>
+    <property name="config.swf.path" 
value="${basedir}/src/main/config/asdoc-swf-config.xml"/>
 
     <include file="${basedir}/../../build_example.xml" />
     
     <target name="main" depends="build_example.compile" description="Clean 
build of ${example}">
-        <available file="${basedir}/bin-debug/classes.json"
+        <available file="${basedir}/bin-debug/classes.swf.json"
         type="file"
         property="json.exists"/>
         <antcall target="json" />
+        <antcall target="json.swf" />
     </target>
     
     <target name="clean">
@@ -97,7 +103,7 @@
             <arg 
value="-external-library-path=${env.AIR_HOME}/frameworks/libs/air/airglobal.swc"
 />
             <arg 
value="-external-library-path+=${ROYALE_HOME}/js/libs/google_maps.swc" />
             <arg value="+frameworks_dir=${ROYALE_HOME}/frameworks" />
-            <arg value="-load-config=${config.path}" />
+            <arg value="-load-config=${config.swf.path}" />
             <arg value="-debug=true" />
             <arg value="-output=${basedir}/bin-debug" />
             <arg value="-window-title=Apache Royale API Reference" />
diff --git a/examples/royale/ASDoc/src/main/royale/ASDocClassData.as 
b/examples/royale/ASDoc/src/main/royale/ASDocClassData.as
new file mode 100644
index 0000000..a91daab
--- /dev/null
+++ b/examples/royale/ASDoc/src/main/royale/ASDocClassData.as
@@ -0,0 +1,52 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package
+{
+public class ASDocClassData
+{
+    public function ASDocClassData(name:String, platform:String)
+    {
+        _label = name;
+        _platforms.push(platform);
+    }
+    
+    private var _label:String;
+    [Bindable("__NoChangeEvent__")]
+    public function get label():String
+    {
+        return _label;
+    }
+    public function set label(__v__:String):void
+    {
+        _label = __v__;
+    }
+
+    private var _platforms:Array = [];
+    [Bindable("__NoChangeEvent__")]
+    public function get platforms():Array
+    {
+        return _platforms;
+    }
+    public function set platforms(__v__:Array):void
+    {
+        _platforms = __v__;
+    }
+    
+}
+}
diff --git a/examples/royale/ASDoc/src/main/royale/ASDocClassEvents.as 
b/examples/royale/ASDoc/src/main/royale/ASDocClassEvents.as
index d7b2726..3b6632b 100644
--- a/examples/royale/ASDoc/src/main/royale/ASDocClassEvents.as
+++ b/examples/royale/ASDoc/src/main/royale/ASDocClassEvents.as
@@ -111,5 +111,16 @@ public class ASDocClassEvents
         _ownerhref = __v__;
     }
 
+    private var _platforms:Array;
+    [Bindable("__NoChangeEvent__")]
+    public function get platforms():Array
+    {
+        return _platforms;
+    }
+    public function set platforms(__v__:Array):void
+    {
+        _platforms = __v__;
+    }
+
 }
 }
diff --git a/examples/royale/ASDoc/src/main/royale/ASDocMainView.mxml 
b/examples/royale/ASDoc/src/main/royale/ASDocMainView.mxml
index 8ec6394..f560e45 100644
--- a/examples/royale/ASDoc/src/main/royale/ASDocMainView.mxml
+++ b/examples/royale/ASDoc/src/main/royale/ASDocMainView.mxml
@@ -347,6 +347,13 @@ limitations under the License.
                width: 300px;
         }
         
+        .swfonly {
+            color: #f00;
+        }
+        
+        .jsonly {
+            color: #0f0;
+        }
        </fx:Style>
        <fx:Declarations>
                <fx:Component className="AltBGRenderer">
diff --git a/examples/royale/ASDoc/src/main/royale/EventDetailRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/EventDetailRenderer.mxml
index d471f11..d109c31 100644
--- a/examples/royale/ASDoc/src/main/royale/EventDetailRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/EventDetailRenderer.mxml
@@ -37,6 +37,10 @@ limitations under the License.
                                // set up anchor link target
                                target.element.id = obj.qname;
                                }
+                if (obj.platforms[0] == "swf")
+                    target.className += " swfonly";
+                if (obj.platforms[0] == "js")
+                    target.className += " jsonly";
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/EventSummaryRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/EventSummaryRenderer.mxml
index 9b07571..10e254c 100644
--- a/examples/royale/ASDoc/src/main/royale/EventSummaryRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/EventSummaryRenderer.mxml
@@ -50,6 +50,10 @@ limitations under the License.
                        {
                                super.data = value;
                                qname.href = "#!" + obj.ownerhref + "/" + 
obj.qname;
+                if (obj.platforms[0] == "swf")
+                    qname.className += " swfonly";
+                if (obj.platforms[0] == "js")
+                    qname.className += " jsonly";
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/MethodDetailRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/MethodDetailRenderer.mxml
index c02abfb..cdce333 100644
--- a/examples/royale/ASDoc/src/main/royale/MethodDetailRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/MethodDetailRenderer.mxml
@@ -36,6 +36,10 @@ limitations under the License.
                                // set up anchor link target
                                target.element.id = obj.qname;
                                }
+                if (obj.platforms[0] == "swf")
+                    target.className += " swfonly";
+                if (obj.platforms[0] == "js")
+                    target.className += " jsonly";
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/MethodSummaryRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/MethodSummaryRenderer.mxml
index 6f1790c..3f0d6d4 100644
--- a/examples/royale/ASDoc/src/main/royale/MethodSummaryRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/MethodSummaryRenderer.mxml
@@ -56,6 +56,10 @@ limitations under the License.
                                else
                                        typeGroup.removeElement(link);
                                qname.href = "#!" + obj.ownerhref + "/" + 
obj.qname;
+                if (obj.platforms[0] == "swf")
+                    qname.className += " swfonly";
+                if (obj.platforms[0] == "js")
+                    qname.className += " jsonly";
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/PropertyDetailRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/PropertyDetailRenderer.mxml
index ce6dc68..1e157e7 100644
--- a/examples/royale/ASDoc/src/main/royale/PropertyDetailRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/PropertyDetailRenderer.mxml
@@ -36,6 +36,11 @@ limitations under the License.
                                // set up anchor link target
                                target.element.id = obj.qname;
                                }
+                if (obj.platforms[0] == "swf")
+                    target.className += " swfonly";
+                if (obj.platforms[0] == "js")
+                    target.className += " jsonly";
+
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/SummaryRenderer.mxml 
b/examples/royale/ASDoc/src/main/royale/SummaryRenderer.mxml
index 974e664..c99d127 100644
--- a/examples/royale/ASDoc/src/main/royale/SummaryRenderer.mxml
+++ b/examples/royale/ASDoc/src/main/royale/SummaryRenderer.mxml
@@ -56,6 +56,13 @@ limitations under the License.
                                else
                                        typeGroup.removeElement(link);
                                qname.href = "#!" + obj.ownerhref + "/" + 
obj.qname;
+                if (obj.platforms.length == 1)
+                {
+                    if (obj.platforms[0] == "swf")
+                        qname.className += " swfonly";
+                    if (obj.platforms[0] == "js")
+                        qname.className += " jsonly";
+                }
                        }
                        
             [Bindable("dataChange")]
diff --git a/examples/royale/ASDoc/src/main/royale/models/ASDocModel.as 
b/examples/royale/ASDoc/src/main/royale/models/ASDocModel.as
index 4e6a818..c7bcc71 100644
--- a/examples/royale/ASDoc/src/main/royale/models/ASDocModel.as
+++ b/examples/royale/ASDoc/src/main/royale/models/ASDocModel.as
@@ -47,6 +47,17 @@ package models
         
         private var tagNameMap:Object;
         
+        private var _platforms:Array = ["js", "swf"];
+        
+        public function get platforms():Array
+        {
+            return _platforms;
+        }
+        public function set platforms(value:Array):void
+        {
+            _platforms = value;
+        }
+        
         private var _knownTags:Array;
         
         [Bindable("packageListChanged")]
@@ -55,14 +66,20 @@ package models
             return _knownTags;
         }
         
+        private var platformList:Array;
+        private var currentPlatform:String;
+        
         private function configCompleteHandler(event:Event):void
         {
             app.service.removeEventListener("complete", configCompleteHandler);
             var config:Object = JSON.parse(app.service.data);
             tagNameMap = config["tagNames"];
             
+            platformList = platforms.slice();
+            currentPlatform = platformList.shift();
+            var middle:String = "." + currentPlatform;
             app.service.addEventListener("complete", tagsCompleteHandler);
-            app.service.url = "tags.json";
+            app.service.url = "tags" + middle + ".json";
             app.service.send();
         }
         
@@ -70,11 +87,37 @@ package models
         {
             app.service.removeEventListener("complete", tagsCompleteHandler);
             var config:Object = JSON.parse(app.service.data);
-            _knownTags = config["tags"];
-            
-            app.service.addEventListener("complete", completeHandler);
-            app.service.url = "classlist.json";
-            app.service.send();
+            if (!_knownTags)
+                _knownTags = config["tags"];
+            else
+            {
+                var arr:Array = config["tags"];
+                var n:int = arr.length;
+                for (var i:int = 0; i < n; i++)
+                {
+                    var tag:String = arr[i];
+                    if (_knownTags.indexOf(tag) == -1)
+                        _knownTags.push(tag);
+                }
+            }
+            var middle:String;
+            if (platformList.length)
+            {
+                currentPlatform = platformList.shift();
+                middle = "." + currentPlatform;
+                app.service.addEventListener("complete", tagsCompleteHandler);
+                app.service.url = "tags" + middle + ".json";
+                app.service.send();                                
+            }
+            else
+            {
+                platformList = platforms.slice();
+                currentPlatform = platformList.shift();
+                middle = "." + currentPlatform;
+                app.service.addEventListener("complete", completeHandler);
+                app.service.url = "classlist" + middle + ".json";
+                app.service.send();                
+            }
         }
         
         private var masterData:Object;
@@ -84,18 +127,55 @@ package models
                return masterData["classnames"];
         }
         
+        /**
+         * @royaleignorecoercion ASDocClassData 
+         */
         private function completeHandler(event:Event):void
         {
             app.service.removeEventListener("complete", completeHandler);
-            masterData = JSON.parse(app.service.data);
-            filterPackageList();
+            if (!masterData)
+                masterData = { "classnames": [], "data": [] };
+            var allNames:Array = allClasses;
+            var moreData:Object = JSON.parse(app.service.data);
+            var arr:Array = moreData["classnames"];
+            var n:int = arr.length;
+            var item:ASDocClassData;
+            for (var i:int = 0; i < n; i++)
+            {
+                var cname:String = arr[i];
+                var j:int = allNames.indexOf(cname);
+                if (j != -1)
+                {
+                   item = masterData["data"][i] as ASDocClassData;
+                   item.platforms.push(currentPlatform);
+                }
+                else
+                {
+                    item = new ASDocClassData(cname, currentPlatform);
+                    masterData["data"].push(item);
+                    masterData["classnames"].push(cname);
+                }
+            }
+            if (platformList.length)
+            {
+                currentPlatform = platformList.shift();
+                var middle:String = "." + currentPlatform;
+                app.service.addEventListener("complete", completeHandler);
+                app.service.url = "classlist" + middle + ".json";
+                app.service.send();
+            }
+            else
+            {
+                filterPackageList();
+            }
         }
         
         private function filterPackageList():void
         {
             var packages:Object = {};
-            for each (var qname:String in masterData["classnames"])
+            for each (var cdata:ASDocClassData in masterData.data)
             {
+                var qname:String = cdata.label;
                 var packageName:String;
                 var c:int = qname.lastIndexOf(".")
                 if (c == -1)
@@ -186,6 +266,8 @@ package models
                 _currentClass = value;
                 var packageData:Object = allPackages[_currentPackage];
                 dispatchEvent(new Event("currentClassChanged"));
+                platformList = platforms.slice();
+                currentPlatform = platformList.shift();
                 app.service.addEventListener("complete", completeClassHandler);
                 app.service.url = computeFileName(_currentPackage + "." + 
_currentClass);
                 app.service.send();
@@ -201,6 +283,8 @@ package models
         
         /**
          * @royaleignorecoercion ASDocClass 
+         * @royaleignorecoercion ASDocClassMembers
+         * @royaleignorecoercion ASDocClassFunction
          */
         private function completeClassHandler(event:Event):void
         {
@@ -218,16 +302,36 @@ package models
                 _attributesMap = {};
                 _attributes = null;
             }
-            else
+            // track base classes if primary platform
+            // don't list base classes for other platforms
+            // because they might be duplicates or different
+            // class hierarchy.
+            else if (currentPlatform == platforms[0])
                 _baseClassList.push(data.qname);
             for each (var m:ASDocClassFunction in data.members)
             {
+                if (!m.platforms)
+                    m.platforms = [];
+                m.platforms.push(currentPlatform);
                 m.shortDescription = makeShortDescription(m.description);
                 if (m.type == "method")
                 {
                     if (m.qname == _currentPackage + "." + _currentClass)
                     {
-                        _constructorList.push(m);
+                        var foundMatch:Boolean = false;
+                        var n:int = _constructorList.length;
+                        for (var i:int; i < n; i++)
+                        {
+                            var q:ASDocClassMembers = _constructorList[i] as 
ASDocClassMembers;
+                            var mm:ASDocClassMembers = m as ASDocClassMembers
+                            if (q.params.length == mm.params.length)
+                            {
+                                foundMatch = true;
+                                break;
+                            }
+                        }
+                        if (!foundMatch)
+                            _constructorList.push(m);
                     }
                     else if (m.qname != data.qname)
                         addIfNeededAndMakeAttributes(_publicMethods, m);
@@ -252,6 +356,9 @@ package models
             }
             for each (var e:ASDocClassEvents in data.events)
             {
+                if (!e.platforms)
+                    e.platforms = [];
+                e.platforms.push(currentPlatform);
                 e.shortDescription = makeShortDescription(e.description);
                 addIfNeededAndMakeAttributes(_publicEvents, e);
                 if (masterData["classnames"].indexOf(e.type) != -1)
@@ -292,10 +399,20 @@ package models
             }
             else
             {
-                _publicMethods.sortOn("qname");
-                _publicEvents.sortOn("qname");
-                _publicProperties.sortOn("qname");
-                dispatchEvent(new Event("currentDataChanged"));
+                if (platformList.length)
+                {
+                    currentPlatform = platformList.shift();
+                    app.service.addEventListener("complete", 
completeClassHandler);
+                    app.service.url = computeFileName(_currentPackage + "." + 
_currentClass);
+                    app.service.send();                    
+                }
+                else
+                {
+                    _publicMethods.sortOn("qname");
+                    _publicEvents.sortOn("qname");
+                    _publicProperties.sortOn("qname");
+                    dispatchEvent(new Event("currentDataChanged"));
+                }
             }
         }
         
@@ -307,6 +424,9 @@ package models
                        var obj:ASDocClassEvents = arr[i];
                        if (obj.qname == data.qname)
                        {
+                    var platform:String = data.platforms[0];
+                    if (obj.platforms.indexOf(platform) == -1)
+                        obj.platforms.push(platform);
                                // if no description and the base definition 
has one
                                // then use base description
                                if (obj.description == "" && data.description 
!= "")
@@ -405,7 +525,7 @@ package models
                
         private function computeFileName(input:String):String
         {
-            return input.replace(new RegExp("\\.", "g"), "/") + ".json";     
+            return input.replace(new RegExp("\\.", "g"), "/")  + "." + 
currentPlatform + ".json";     
         }
         
         private function makeShortDescription(input:String):String
@@ -435,16 +555,35 @@ package models
                 _attributesMap = {};
                 _attributes = null;
             }
-            else
+            // track base classes if primary platform
+            // don't list base classes for other platforms
+            // because they might be duplicates or different
+            // class hierarchy.
+            else if (currentPlatform == platforms[0])
                 _baseClassList.push(data.qname);
             for each (var m:ASDocClassMembers in data.members)
             {
+                if (!m.platforms)
+                    m.platforms = [];
+                m.platforms.push(currentPlatform);
                 m.shortDescription = makeShortDescription(m.description);
                 if (m.type == "method")
                 {
                     if (m.qname == _currentPackage + "." + _currentClass)
                     {
-                        _constructorList.push(m);
+                        var foundMatch:Boolean = false;
+                        var n:int = _constructorList.length;
+                        for (var i:int; i < n; i++)
+                        {
+                            var q:ASDocClassMembers = _constructorList[i] as 
ASDocClassMembers;
+                            if (q.params.length == m.params.length)
+                            {
+                                foundMatch = true;
+                                break;
+                            }
+                        }
+                        if (!foundMatch)
+                            _constructorList.push(m);
                     }
                     else if (m.qname != data.qname)
                         addIfNeededAndMakeAttributes(_publicMethods, m);
@@ -457,6 +596,9 @@ package models
             }
             for each (var e:ASDocClassEvents in data.events)
             {
+                if (!e.platforms)
+                    e.platforms = [];
+                e.platforms.push(currentPlatform);
                 e.shortDescription = makeShortDescription(e.description);
                 addIfNeededAndMakeAttributes(_publicEvents, e);
                 if (masterData["classnames"].indexOf(e.type) != -1)
@@ -492,10 +634,20 @@ package models
             }
             else
             {
-                _publicMethods.sortOn("qname");
-                _publicEvents.sortOn("qname");
-                _publicProperties.sortOn("qname");
-                dispatchEvent(new Event("currentDataChanged"));
+                if (platformList.length)
+                {
+                    currentPlatform = platformList.shift();
+                    app.service.addEventListener("complete", 
completeInterfaceHandler);
+                    app.service.url = computeFileName(_currentPackage + "." + 
_currentClass);
+                    app.service.send();                                        
+                }
+                else
+                {
+                    _publicMethods.sortOn("qname");
+                    _publicEvents.sortOn("qname");
+                    _publicProperties.sortOn("qname");
+                    dispatchEvent(new Event("currentDataChanged"));
+                }
             }
         }
         
@@ -676,3 +828,4 @@ package models
         }
        }
 }
+

-- 
To stop receiving notification emails like this one, please contact
aha...@apache.org.

Reply via email to