2012-02-08 5 views
2

実装ファイル(.m)には30個のメソッドがあります。どのように私は彼らの説明(すべて)を自動的に.hファイルに入れることができますか?すべてのメソッドを自動的に.hファイルに入れます

+0

すべてのメソッドを.hに入れてください。すべての方法を取ってプライベートカテゴリに入れるスクリプトを作成する方が良いかもしれません – wattson12

答えて

2

正規表現を適切に行うのは難しい継ぎ目が、あなたはawkのでそれを行うことができます。

https://gist.github.com/1771131

#!/usr/bin/env awk -f 
# print class and instance methods declarations from implementation 
# Usage: ./printmethods.awk class.m or awk -f printmethods.awk class.m 

/^[[:space:]]*@implementation/ { 
    implementation = 1; 
} 

/^[[:space:]]*@end/ { 
    implementation = 0; 
} 

/^[[:space:]]*[\-\+]/ { 
    if(implementation) { 
    method = 1; 
    collect = ""; 
    } 
} 

/[^[:space:]]/ { 
    if(implementation && method) { 
    p = index($0, "{"); 
    if(p == 0) { 
     if(collect == "") 
     collect = $0 
     else 
     collect = collect $0 "\n"; 
    } else { 
     method = 0; 
     # trim white space and "{" from line end 
     gsub("[\{[:space:]]*$", "", $0); 
     collect = collect $0; 
     # trim white space from start 
     gsub("^[[:space:]]*", "", collect); 
     print collect ";" 
    } 
    } 
} 
+0

私のために働いていない、構文エラーがあると言います – LightNight

+0

私はコピー/貼り付けを試みましたそれはうまく動作します。どのようにそれを実行するのですか?あなたはファイルに入れて、ターミナルからそれを走らせるべきです。 –

+0

私はエラーを吸う持つ: 'awkは:ソース1行目のソースファイルprintmethods.awkで構文エラーが コンテキストが \tです>>> {\ <<< RTF1 \ ANSI \ ansicpg1251 \ cocoartf1038 \ cocoasubrtf350 のawk:ソース行で違法な文を2ソースファイルprintmethods.awk awk:ソース行2での不正なステートメントprintmethods.awk \t 2が欠けている} ' – LightNight

0

すべてのメソッド定義を抽出するコード(正規表現を使用して検出する)を作成し、hファイルと "\; \ n"に追加しました。

+1

問題はそのようなプログラムを作ることです – LightNight

0

プログラム($ 5 MacのApp Storeで)Accessorizerは、特にこれらのために意図されてXcodeの不愉快で面倒な仕事の問題。プロトタイプだけでなく、プロパティの合成、アクセサ、入れ子などを生成することができます。

警告:私の経験では、ちょっと厄介で荒いです。たとえば、ある関数が複数行のコメントの中にあることに気付かず、そのために望ましくないプロトタイプを提供するかもしれません。しかし、それらの癖を念頭に置いていても、5ドル以上の時間を節約できます。

ウェブサイト:http://www.kevincallahan.org/software/accessorizer.html