ショー君案にわずかに手を入れた。
- 方針:手を抜く。
構文要素 | 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の型がわからないので、ロードした後で型を調べて場合分けとかしなきゃならない -- ヤダけどしょうがないでしょう。