[AS3 Coding Tools] Property Disposer
forked from Equal Replacer (A=B) -> (B=A) (diff: 71)
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;
var moja : String = 'mojamoja';
var piyo : Boolean = true;
var fuga;
private var foo : Number = 1;
public var bar : String = 'mojamoja';
static var qux : Point = false;
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>