gist

ラベル XCode4 の投稿を表示しています。 すべての投稿を表示
ラベル XCode4 の投稿を表示しています。 すべての投稿を表示

2012年1月20日金曜日

XCode4でAppleDoc形式のドキュメントを自動的に作成する

前のエントリーでappledocをインストールしておきます。

プロジェクトの直下に AppledocSetting.plist という名前で設定ファイルを作成します。

AppledocSetting.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>--company-id</key>
        <string>com.luckyandhappy</string>
        <key>--create-docset</key>
        <true/>
        <key>--ignore</key>
        <array>
            <string>ThirdParty</string>
            <string>Libraries</string>
            <string>Frameworks</string>
            <string>Testing</string>
        </array>
        <key>--install-docset</key>
        <true/>
        <key>--output</key>
        <string>/tmp</string>
        <key>--project-company</key>
        <string>Lucky &amp; Happy Company</string>
        <key>--project-name</key>
        <string>SOAP2JSON</string>
        <key>--keep-undocumented-objects</key>
        <true/>
        <key>--keep-undocumented-members</key>
        <true/>
        <key>--warn-undocumented-object</key>
        <false/>
        <key>--warn-undocumented-member</key>
        <false/>
        <key>--warn-empty-description</key>
        <false/>
        <key>--warn-missing-arg</key>
        <false/>
        <key>--warn-unknown-directive</key>
        <true/>
    </dict>
</plist>

--company-id, --project-name, --project-companyは自分の環境に合わせて変更して下さい。

ターゲットを追加します。

スクリプトを追加します。

プロダクトのビルドが実行されるたびに、ドキュメントを更新するには、Product/Edit Schemeを編集します。

ドキュメント化するソースコードが多い場合、ビルドするたびにスクリプトが実行されるので重くなるかもしれません。そんなときは最後の手順をやめて、ターゲットをドキュメントとプロダクトで別々にビルドできるようにしておいたほうが良いかも。

2012年1月19日木曜日

XCode4でAppleDocを使ってみる

AppleDocは、Apple公式リファレンス風のリファレンスを作成してくれるドキュメント生成ツールです。

これはカッコいい。インストールも簡単にできるようになりました。

インストールはgitでappledocのソースコードを取得して、付属のシェルスクリプトを実行するだけです。

$ git clone git://github.com/tomaz/appledoc.git
Cloning into appledoc...
remote: Counting objects: 6017, done.
remote: Compressing objects: 100% (1628/1628), done.
remote: Total 6017 (delta 4504), reused 5830 (delta 4345)
Receiving objects: 100% (6017/6017), 2.61 MiB | 196 KiB/s, done.
Resolving deltas: 100% (4504/4504), done.
$ sudo sh install-appledoc.sh -b /usr/local/bin -t ~/Library/Application\ Support/appledoc
Password:
Building...
=== BUILD NATIVE TARGET appledoc OF PROJECT appledoc WITH CONFIGURATION Release ===
Check dependencies

...

** BUILD SUCCEEDED **

Installing binary to /usr/local/bin
Copying templates to /Users/inouetomoyuki/Library/Application Support/appledoc

$ appledoc --version
appledoc version: 2.0.5 (build 752)

$

前のエントリーで書いたコードにAppleDoc用のコメントを追加してみます。

LHParser.h

//
//  LHParser.h
//  LibXML2Test
//
//  Created by 井上 智敬 on 12/01/05.
//  Copyright (c) 2012年 Lucky and Happy Company. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <libxml/tree.h>
#import "NSMutableArray+StackAdditions.h"

/** LHParserクラスは、libxmlライブラリを使用してSOAP形式の文字列をJSON形式に変換するクラスです。
 */
@interface LHParser : NSObject {
    NSDictionary *_openers;
    NSDictionary *_closures;
    NSMutableArray *_closuresStack;
    NSDictionary *_charactersFoundTable;
    BOOL _isCharactersFound;
    
    xmlParserCtxtPtr _ctxt;
    NSMutableString *_json;
}
/** パースを開始します。
 */
-(void)parse;

/** パースが終了すると呼び出されます。
 */
-(void)didParse;

/** 開始タグを検出すると呼び出されます。
 
 @param localname 開始タグ名
 @param type SOAPスキーマでの型名。http://www.w3.org/2001/XMLSchema で定義されています。
 */
-(void)startElement:(NSString*)localname type:(NSString*)type;

/** 終了タグを検出すると呼び出されます。
 
 @param localname 終了タグ名
 */
-(void)endElement:(NSString*)localname;

/** パーサーが文字列を検出すると呼び出されます。
 
 @param characters 検出した文字列
 */
-(void)foundCharacter:(NSString*)characters;

@end


static void startElementSAX(void *context,
                            const xmlChar *localname,
                            const xmlChar *prefix,
                            const xmlChar *URI,
                            int nb_namespaces,
                            const xmlChar **namespaces,
                            int nb_attributes,
                            int nb_defaulted,
                            const xmlChar **atrributes);

static void endElementSAX(void *context,
                          const xmlChar *localname,
                          const xmlChar *prefix,
                          const xmlChar *URI);

static void charactersFoundSAX(void *context,
                               const xmlChar *characters,
                               int lenght);



ターミナルでappledocを実行します。


$ appledoc --project-name LibXML2Test \
> --project-company Lucky\ And\ Happy\ Company \
> --company-id com.luckyandhappy \
> --create-html --output ./Documents \
> .
appledoc version: 2.0.5 (build 752)

$

完了したらXCodeに戻って、こんな感じでクイックヘルプが出ていればOK。

オーガナイザを起動して、Documentationタブを選択すると、新しいドキュメントが増えています。

詳しいコメントの書き方は公式サイト

2012年1月5日木曜日

XCode4でlibxml2を使えるようにする

libxml2は、XMLを扱うための機能が盛り沢山の高速ライブラリです。XMLをダウンロードしながらパースできたりします。時代はJSONですが。

XCode4でlibxml2ライブラリを使う準備です。

1. libxml2ライブラリを追加する

[TARGET]を選択し、上部タブの[Summary]を選択します。(この画面、なんていう名前なんでしょうか。)

[Linked Frameworks and Libraries]の[+]ボタンをクリックします。

表示されたダイアログでlibxml2.dylibを選択し、[Add]ボタンをクリックします。

libxml2.dylibが追加されます。

2. Header Search Pathsを設定する

[TARGET]の上部タブ[Build Settings]を選択します。

検索ボックスで[Header Search Paths]と入力して、表示された[Header Search Paths]をダブルクリックします。表示されたダイアログの[+]ボタンをクリックします。

入力欄に

${SDKROOT}/usr/include/libxml2
と入力して[Done]ボタンをクリックします。

以上で、準備完了です。