このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

Xion/Javaのオブジェクトモデル

ショー君案にわずかに手を入れた。

  • 方針:手を抜く。
構文要素 Javaで既存の型 Xionで導入する型 導入方法
object HashMap XionObject 継承
array ArrayList XionArray 継承
string String XionString ラップ
number(小数点なし) BigInteger XionInteger 継承
number(小数点あり) BigDecimal XionDecimal 継承
trueとfalse (boolean) Boolean - -
null 値null - -
  • Xion* 型は、String getTagName()によりタグ名を返す。タグがなければnullを返す。
  • Xion* 型は、String toString()により、Xion形式の文字列表現を返す。タグがあれば、それもエンコードされる。例えば "date \"2006-06-10\""
  • XionString型は、String value()により文字列を返す。これはtoString()とは異なり、タグや引用符などは含まない。

考慮点:

  • getTagName()はDOMのメソッド名を借りたが、しがらみを捨てて(Beansの習慣も破って)tag()とかはどうか?
  • XionString型だけではなくて、すべてのXion*型が、value()により、対応するJava既存型の値を返してはどうか? 必須じゃないけど、気持ちいいような、どうでもいいような。

使い方はこんな感じだろう。


InputStream input;
// inputをセット

XionLoader loader = new XionLoader();
Object obj;
try {
obj = loader.load(input);
} catch (IOException ioe) {
// あれま
} catch (XionParseException xpe) {
// おやま
}
// ここでロード成功
// objに何が入ったかな?

事前にobjの型がわからないので、ロードした後で型を調べて場合分けとかしなきゃならない -- ヤダけどしょうがないでしょう。