Hatena::Grouprubyist

bongoleのRubyを楽しむ日記 このページをアンテナに追加 RSSフィード

Rubyを楽しむ日記

2006-06-05

[][][]GEDCOM Parser 00:04 GEDCOM Parser - bongoleのRubyを楽しむ日記 を含むブックマーク

今日は調子がいいので、さぼっていたRuby Quizの続きを書こう。

3問目。

GEDCOM(GEnealogical Data COMmunication)フォーマットという構造化されたテキストXMLに変換しようという問題。

GEDCOMフォーマットサンプルは下のような感じ

0 @I1@ INDI
1 NAME Jamis Gordon /Buck/
2 SURN Buck
2 GIVN Jamis Gordon
1 SEX M
...

各行は

LEVEL TAG-OR-ID [DATA]

という構成になっていて、LEVELは注目してる行の階層の深さを表している。

TAG-OR-IDはそのままでタグIDが入る。タグとは英大文字3文字から4文字から成りその後に続くデータの型を表す。

IDは@で囲まれた文字列でファイル内でかぶらないユニークな文字列が入り、その後に続くデータがサブツリーの型を表す。

まぁ、毎度のことながら言葉で説明してもわからんのでXMLで上のGEDCOMを変換すると下のような感じになる。

<gedcom>
    <indi id="@I1@">
        <name>
            Jamis Gordon /Buck/
            <surn>Buck</surn>
            <givn>Jamis Gordon</givn>
        </name>
        <sex>M</sex>
        ...
    </indi>
    ...
</gedcom>

まぁ一目瞭然ですな。

ようするにこんな感じになるように変換しろってことです。

了解。把握した。

ちなみに、でかいGEDCOMフォーマットファイルここにあるらしいのでテストするのに使おう。

続く