右へ1つインデントするツール

Pukiwikiのソースで右1つインデントすると、ソースファイルとして
認識する整形ルールがあるのですが、これが意外と
手作業でやると面倒なので、ソースファイルを
右一つだけインデントするプログラムを作ってみました。

http://nadesi.com/tools/right-indent/EditConv.html

以下、そのソースです。

MXMLのソース

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:TitleWindow x="0" y="0" width="470" height="446" layout="absolute" title="ソース編集">
        <mx:TextArea x="10" y="10" width="430" height="356" id="a_txt" fontSize="12" fontStyle="normal" fontFamily="_typewriter"/>
        <mx:Button label="右一つインデント" width="130" x="10" y="374" click="convIndent()"/>
        <mx:Button x="148" y="374" label="左スペース1つ削除" width="117" click="convIndentLeft()"/>
    </mx:TitleWindow>
    <mx:Script source="EditConv.as"/>
</mx:Application>

上記MXMLから取り込まれるActionScriptファイル

// ActionScript file
// indent
private function convIndent():void
{
    var s:String = a_txt.text;
    s = replaceStr(s, "\r\n", "\n");
    s = replaceStr(s, "\r", "\n");
    var r:String = "";
    var a:Array = s.split("\n");
    var i:int;
    for (i = 0; i < a.length; i++) {
        var line:String = a[i];
        line = replaceStr(line, "\t", "    ");
        r += " " + line + "\n";
    }
    a_txt.text = r + "\n";
}

private function convIndentLeft():void
{
    var r:String = "";
    var s:String = a_txt.text;
    s = replaceStr(s, "\r\n", "\n");
    s = replaceStr(s, "\r", "\n");
    var a:Array = s.split("\n");
    var i:int;
    for (i = 0; i < a.length; i++) {
        var line:String = a[i];
        if (line.substr(0,1) == " ") {
            line = line.substr(1);
        }
        r += line + "\n";
    }
    a_txt.text = r + "\n";
}

private function replaceStr(s:String, a:String, b:String):String
{
    var a_ary:Array  = s.split(a);
    var s_str:String = a_ary.join(b);
    return s_str;
}

はっきり言って、はてなWiki記法の方が記述が楽が・・・。

文字列の置換は、正規表現を使って以下のような書き方もできるそうです。

s = s.replace(/(\r\n|\r)/g, "\n");
      • -