Parsing microformats in JavaScript

Firefox 3 では、microformat を管理、パースするための新しい API が導入されました。この記事では、microformat からデータを取得する“力仕事”を処理する、一般的な microformat をパースするための API について研究します。この API は主に、新しい microformat を実装する際に利用されることを意図したものです。

メソッド

dateTimeGetter()

特に、microformat ノードから日付を取得します。テキストを取得した後、ISO 8601 形式の日付に正規化します。

normalizedDate = Microformats.parser.dateTimeGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

正規化された日付を含む文字列。

defaultGetter()

microformat のパターンを使って、与えられた microformat プロパティのための適切なテキストを決定します。これには、abbrimgaltareaalt、値の抜粋、などの判断が含まれます。

propertyValue = Microformats.parser.defaultGetter(propnode, parentnode, datatype);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
<tt>datatype</tt>
innerHTML() を使って検索を行う場合は「HTML」、innerText() を使って行う場合は「text」です。デフォルトは「text」です。
戻り値

プロパティの値を含む文字列。

emailGetter()

特に、microformat ノードからメールアドレスを取得します。件名が指定されていた場合や、mailto: 接頭辞が付いていた場合、それらは削除されます。

email = Microformats.parser.emailGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

メールアドレスを含む文字列。

HTMLGetter()

特定の DOM ノー炉からすべての HTML を取得します。

html = Microformats.parser.HTMLGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

文字列と HTML を取得するために呼び出すことができる関数を含むオブジェクト。

註: これは HTML を文字列として返す代わりに、HTML を取得するなどの処理を行うために呼び出すことができる、いくつかの関数を伴ったオブジェクトを返します。

戻り値のオブジェクトに対して呼び出せる関数は以下のものです。

string = html.toString();

innerText() を使って、文字列を返します。

string = html.toHTML();

innerHTML() を使って、ノードの HTML を返します。

string = html.replace(a, b);

HTML 内に出現した <tt>a</tt> をすべて <tt>b</tt> に置き換えた文字列を返します。

string = html.match(a);

HTML に対して、指定したマッチング操作を実施し、結果を返します。

iso8601FromDate

JavaScript の Date オブジェクトを ISO 8601 形式の日付に変換します。

isoDate = Microformats.parser.iso8601FromDate(date, punctuation)
引数
<tt>date</tt>
変換を行う JavaScript Date オブジェクト。
<tt>punctuation</tt>
日付に「-」や「/」が含まれる場合は true とします。
戻り値

ISO 8601 形式の日付が含まれる文字列。

textGetter()

特定の DOM ノードから、すべてのタグを含む、すべてのテキストを取得します。これは内部的に defaultGetter() を呼び出しています。

text = Microformats.parser.textGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

指定された microformat ノードから取得された、タグを含む、すべてのテキストを含む文字列。

telGetter()

特に、microformat ノードから電話番号を取得します。これは、電話番号が「value」をそのサブプロパティのいずれかの名前として使っている一方で、「value」が 値の抜粋 にも使われている、ということを処理します。

tel = Microformats.parser.telGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

電話番号を含む文字列。

uriGetter()

特に、microformat ノードから URI を取得します。これは、hrefimgobject、あるいは area を検索して、完全な形式の URI を取得することで行われます。

uri = Microformats.parser.uriGetter(propnode, parentnode);
引数
<tt>propnode</tt>
チェックを行う DOM ノード。
<tt>parentnode</tt>
プロパティの親ノード。そのプロパティがサブプロパティの場合、この値は親プロパティノードとなります。そうでなければ、この値は microformat ノードです。
戻り値

完全な形式の URI を含む文字列。

関連記事

Using microformats, Describing microformats in JavaScript

ドキュメントのタグと貢献者

 このページの貢献者: Mgjbot, Kohei
 最終更新者: Mgjbot,