[AS3 Coding Tools] Property Disposer

by clockmaker forked from Equal Replacer (A=B) -> (B=A) (diff: 71)
♥34 | Line 119 | Modified 2012-04-19 14:22:55 | MIT License
play

ActionScript3 source code

/**
 * Copyright clockmaker ( http://wonderfl.net/user/clockmaker )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/oGKW
 */

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark">
    <!-- =====================================================
     メンバー変数のプロパティーを空っぽにする整形ツール。
     メモリ対策のための破棄処理を作るときに便利。
     ===================================================== -->
    <fx:Script>
        <![CDATA[
            import jp.progression.commands.Break;

            import mx.controls.*;
            import mx.utils.StringUtil;

            /**
             * 整形メソッド
             */
            private function doArrange():void
            {
                // 改行コードを統一する
                var str:String = orijinal.text;
                str = str.split("\n\r").join("\n").split("\r").join("\n")

                // 変換
                var arr:Array = str.split("\n");
                var out:String = "";
                var nullList:Array = [];
                var disposeList:Array = [];
                for (var i:int = 0; i < arr.length; i++)
                {
                    var str1:String = arr[i].split(";").join("");
                    var splits:Array = str1.split("=");
                    var splits2:Array = splits[0].split("var");
                    if (splits2.length == 1)
                        continue;
                    var splits3:Array = splits2[1].split(":");

                    var nullVal:String = "";
                    var disposeFlag:Boolean = false;
                    if (splits3.length == 1)
                        nullVal = "undefined";
                    else
                    {
                        switch (StringUtil.trim(splits3[1]))
                        {
                            case "Number":
                            case "int":
                            case "uint":
                            {
                                nullVal = "0";
                                break;
                            }
                            case "Boolean":
                            {
                                nullVal = "false";
                                break;
                            }
                            case "Bitmap":
                            case "Shape":
                            case "Sprite":
                            case "MovieClip":
                            {
                                nullVal = "null";
                                disposeFlag = false;
                                break;
                            }
                            default:
                            {
                                nullVal = "null";
                                disposeFlag = true;
                                break;
                            }
                        }
                    }

                    if (disposeFlag)
                        disposeList.push("if(" + StringUtil.trim(splits3[0]) + ") " + StringUtil.trim(splits3[0]) + ".dispose();");
                    nullList.push(StringUtil.trim(splits3[0]) + " = " + nullVal + ";")
                }

                if (useDispose.selected)
                {
                    out += disposeList.join("\n");
                    out += "\n\n";
                }

                out += nullList.join("\n");

                output.text = out;
            }

            private function copy():void
            {
                System.setClipboard(output.text);
                Alert.show("Copied Output Script")
            }
        ]]>
    </fx:Script>

    <fx:Style>
        @namespace s "library://ns.adobe.com/flex/spark";
        s|TextArea {
            fontFamily: Courier;
        }
    </fx:Style>

    <s:Panel title="AS3 Property Disposer"
             width="100%"
             height="100%">
        <s:layout>
            <s:VerticalLayout horizontalAlign="center"
                              paddingBottom="10"
                              paddingLeft="10"
                              paddingRight="10"
                              paddingTop="10"
                              gap="10" />
        </s:layout>
        <s:TextArea id="orijinal"
                    width="100%"
                    height="100%"
                    focusIn="orijinal.selectAll()"
                    text="var hoge : Number  = 1;&#xa;var moja : String  = 'mojamoja';&#xa;var piyo : Boolean = true;&#xa;var fuga;&#xa;private var foo : Number = 1;&#xa;public var bar  : String = 'mojamoja';&#xa;static var qux  : Point  = false;&#xa;const HOGE      : Matrix = new  Matrix();" />
        <s:CheckBox id="useDispose"
                    selected="false"
                    label="use dispose method" />
        <s:Button click="doArrange()"
                  label="Start" />
        <s:TextArea id="output"
                    width="100%"
                    height="100%"
                    focusIn="output.selectAll()" />
        <s:Button click="copy()"
                  label="Copy Clipboard" />
    </s:Panel>
</s:Application>

Forked