shohaku.core.lang
クラス ValueOf

java.lang.Object
  拡張shohaku.core.lang.ValueOf

public final class ValueOf
extends java.lang.Object

文字列を基本的なデータ型とその集合に変換する機能を提供します。
機能を最小限にまとめた、基本的なデータ構造を記述する簡易言語です。

またデータ型を文字列に変換する機能も提供します。これによりデータの永続化も可能です。

構文例:以下はリストの要素に、数値、リスト、マップ、リストを入れ子にするセット、が定義されています。
[ 98741123L, [12G, 1234.67800G], {1234='火', 1234.56='炎'}, (`文`,`字`, ['春','夏','秋','冬']) ]

実行例:実行は以下のように簡単です。
Map map = (Map) ValueOf.decode("{1='火', 2='炎', 3='焔'}");

以下に文法の概要を一覧します。
文法の詳細に関しては、対応する各データ型の関数を参照してください。

文法概要:
1. 数値 [-][0|0x|0b][0-9A-F.+-e][u|U|s|S|i|I|l|L|f|F|d|D|h|H|g|G] 例: 123U, -0x10FFL, 1-E4, 82385920.3242G
2. 文字列 'string' 例: '春夏秋冬', '\u6625の桜'
3. 文字 `char` 例: 'あ', '\u6625'
4. 論理 true|false 例: true, false
5. Null null 例: null
6. 日付 /yyyy-mm-dd[T| ]hh:mi:ss.zzz[+|-]00:00[l|L|d|D|g|G]/ 例: /2007-05-23T09:51:29.345+09:00/, /2007-05-23 09:51:29/, /2007-05-23/
7. リスト [ element, ... ] 例: [ 12345.678D, /2007-05-23/, '春夏秋冬', `夏` ]
8. セット ( element, ... ) 例: ( 12345.678D, /2007-05-23/, '春夏秋冬', `夏` )
9. マップ { kay=value, ... } 例: { 0=12345.678D, 1=/2007-05-23/, 2='春夏秋冬', 3=`夏` }


構文にマクロ関数と変数を追加した機能もオプションとして提供します。これにより複雑なデータ生成への対応も可能です。

構文例:以下はリストの要素に、マクロ関数 'max' とその引数に変数 'num' を渡し、次の要素に変数 'foo' を指定しています。
[ $max(0, #num#), #foo# ]

実行例:実行は以下のように簡単です(説明のためのソースです)。
Map context = { num=1, foo="火" }
Map macros = { max= new Closure() {
  public Object evaluate(Object p) {
    final List args = (List) p;
    return Math.max(args.get(0).intValue(), args.get(1).intValue());
  }
}
List list = (List) ValueOf.macro("[ $max(0, #num#), #foo# ]", macros, context);
out: list ==> [1, "火"]


以下にマクロ関数と変数の文法概要を一覧します。
文法概要:
1. マクロ関数 $[_:a-zA-Z0-9]+(element, ...) 例: $indexOf(#str#, `a`), $String:concat('春', '冬')
2. 変数 #[^#]+# 例: #name#, #a:0.Z#


コンストラクタの概要
ValueOf()
           
 
メソッドの概要
static java.lang.Object decode(java.lang.String src)
          データを生成して返却します。
static java.math.BigDecimal decodeBigDecimal(java.lang.String src)
          文字列を BigDecimal に変換します。
static java.math.BigInteger decodeBigInteger(java.lang.String src)
          拡張規則で文字列を BigInteger に変換します。
static java.lang.Boolean decodeBoolean(java.lang.String src)
          拡張規則で文字列を Boolean に変換します。
static java.lang.Byte decodeByte(java.lang.String src)
          拡張規則で文字列を Byte に変換します。
static java.lang.Character decodeCharacter(java.lang.String src)
          Unicode escapes の文字表現を文字型へ変換して返却します。
static java.lang.Object decodeDateTime(java.lang.String src)
          文字列を日付オブジェクトに変換して返却します。
static java.lang.Double decodeDouble(java.lang.String src)
          文字列を Double に変換します。
static java.lang.Float decodeFloat(java.lang.String src)
          文字列を Float に変換します。
static java.lang.Integer decodeInteger(java.lang.String src)
          拡張規則で文字列を Integer に変換します。
static java.util.List decodeList(java.lang.String src)
          リストを生成して返却します。
static java.lang.Long decodeLong(java.lang.String src)
          拡張規則で文字列を Long に変換します。
static java.util.Map decodeMap(java.lang.String src)
          マップを生成して返却します。
static java.lang.Object decodeNull(java.lang.String src)
          Java と同等の規則で文字列を Null に変換します。
static java.lang.Number decodeNumber(java.lang.String src)
          拡張規則で文字列を数値オブジェクトに変換します。
static java.util.Set decodeSet(java.lang.String src)
          セットを生成して返却します。
static java.lang.Short decodeShort(java.lang.String src)
          拡張規則で文字列を Short に変換します。
static java.lang.String decodeString(java.lang.String src)
          Unicode escapes の文字表現を文字列型へ変換して返却します。
static java.lang.String encode(java.lang.Object src)
          オブジェクトから文字列を生成して返却します。
static java.lang.String encodeBigDecimal(java.math.BigDecimal src)
          拡張規則で BigDecimal を文字列に変換します。
static java.lang.String encodeBigInteger(java.math.BigInteger src)
          拡張規則で BigInteger を文字列に変換します。
static java.lang.String encodeBoolean(java.lang.Boolean src)
          Boolean を文字列に変換します。
static java.lang.String encodeByte(java.lang.Byte src)
          拡張規則で Byte を文字列に変換します。
static java.lang.String encodeCharacter(java.lang.Character src)
          文字を Unicode escapes の文字列表現へ変換して返却します。
static java.lang.String encodeDateTime(java.util.Calendar cal)
          カレンダーの情報を日付時刻文字列に変換します。
static java.lang.String encodeDateTime(java.util.Date date)
          日付オブジェクトの情報を日付時刻文字列に変換します。
static java.lang.String encodeDateTime(java.lang.Long millis)
          1970-01-01 からのミリ秒の情報を日付時刻文字列に変換します。
static java.lang.String encodeDouble(java.lang.Double src)
          拡張規則で Double を文字列に変換します。
static java.lang.String encodeFloat(java.lang.Float src)
          拡張規則で Float を文字列に変換します。
static java.lang.String encodeInteger(java.lang.Integer src)
          拡張規則で Integer を文字列に変換します。
static java.lang.String encodeList(java.util.List src)
          リストを文字列表現へ変換して返却します。
static java.lang.String encodeLong(java.lang.Long src)
          拡張規則で Long を文字列に変換します。
static java.lang.String encodeMap(java.util.Map src)
          マップを文字列表現へ変換して返却します。
static java.lang.String encodeNull()
          Null を示す文字列に変換します。
static java.lang.String encodeNumber(java.lang.Number src)
          拡張規則で Number を文字列に変換します。
static java.lang.String encodeSet(java.util.Set src)
          セットを文字列表現へ変換して返却します。
static java.lang.String encodeShort(java.lang.Short src)
          拡張規則で Short を文字列に変換します。
static java.lang.String encodeString(java.lang.String src)
          文字列を Unicode escapes の文字表現へ変換して返却します。
static java.lang.Object macro(java.lang.String src, java.util.Map macros, java.util.Map context)
          データを生成して返却します、マクロ関数と変数を利用可能としています。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ValueOf

public ValueOf()
メソッドの詳細

decode

public static java.lang.Object decode(java.lang.String src)
データを生成して返却します。
文字列が定義するデータ型は構文から自動で解析します。

パラメータ:
src - 生成元の文字列
戻り値:
生成されたデータ
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeBigDecimal

public static java.math.BigDecimal decodeBigDecimal(java.lang.String src)
文字列を BigDecimal に変換します。
接尾辞([g|G])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeBigInteger

public static java.math.BigInteger decodeBigInteger(java.lang.String src)
拡張規則で文字列を BigInteger に変換します。
10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n), 接尾辞([h|H])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeBoolean

public static java.lang.Boolean decodeBoolean(java.lang.String src)
拡張規則で文字列を Boolean に変換します。
小文字の true と false の表記法のみを有効とします。

パラメータ:
src - 生成元の文字列
戻り値:
Boolean オブジェクト

decodeByte

public static java.lang.Byte decodeByte(java.lang.String src)
拡張規則で文字列を Byte に変換します。
10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n), 接尾辞([u|U])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeCharacter

public static java.lang.Character decodeCharacter(java.lang.String src)
Unicode escapes の文字表現を文字型へ変換して返却します。

パラメータ:
src - Unicode escapes 形式の文字列
戻り値:
デコードされた文字
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeDateTime

public static java.lang.Object decodeDateTime(java.lang.String src)
文字列を日付オブジェクトに変換して返却します。
有効な書式は 'yyyy-mm-dd[T| ]hh:mi:ss.zzz[+|-]hh:mi[l|L|g|G|d|D]' です。
日付と時刻の両方または片方の指定が可能です。またミリ秒とタイムゾーン、型接尾辞は省略可能です。
型接尾辞 'l' or 'L' を指定すると日付の結果は、グリニッジ標準日時(1970-01-01)からのミリ秒を示す Long 型で返却されます。
型接尾辞 'g' or 'G' を指定すると結果は、グレゴリオカレンダー型で返却されます。
型接尾辞 'd' or 'D' を指定すると結果は、日付オブジェクトで返却されます。
省略時は、日付オブジェクトで返却されます。

有効な書式例:
"2007-05-23T09:51:29.345+09:00"
"2007-05-23 09:51:29.345-09:00L"
"2007-05-23 09:51:29"
"2007-05-23 +05:30"
"2007-05-23"
"09:51:29.345+09:00"
"09:51:29 +09:00L"

パラメータ:
src - 生成元の文字列
戻り値:
日付オブジェクト
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeDouble

public static java.lang.Double decodeDouble(java.lang.String src)
文字列を Double に変換します。
接尾辞([d|D])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeFloat

public static java.lang.Float decodeFloat(java.lang.String src)
文字列を Float に変換します。
接尾辞([f|F])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeInteger

public static java.lang.Integer decodeInteger(java.lang.String src)
拡張規則で文字列を Integer に変換します。
10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n), 接尾辞([i|I])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeList

public static java.util.List decodeList(java.lang.String src)
リストを生成して返却します。
文字列は [ element, element, ... ] の構文として解析します。
返却される List は変更不可のリストに装飾されます。
またリストを入れ子に定義することも可能です。

パラメータ:
src - 生成元の文字列
戻り値:
リスト
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeLong

public static java.lang.Long decodeLong(java.lang.String src)
拡張規則で文字列を Long に変換します。
10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n), 接尾辞([l|L])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeMap

public static java.util.Map decodeMap(java.lang.String src)
マップを生成して返却します。
文字列は { kay=value, kay=value, ... } の構文として解析します。
返却される Map は格納順序を保存しており、変更不可のマップに装飾されます。
またマップを入れ子に定義することも可能です。

パラメータ:
src - 生成元の文字列
戻り値:
マップ
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeNull

public static java.lang.Object decodeNull(java.lang.String src)
Java と同等の規則で文字列を Null に変換します。
小文字の null の表記法のみを有効とします。

パラメータ:
src - 生成元の文字列
戻り値:
null

decodeNumber

public static java.lang.Number decodeNumber(java.lang.String src)
拡張規則で文字列を数値オブジェクトに変換します。
整数に対しては、10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n)の表記法をサポートします。
また, 型指定子として接尾辞([u|U|s|S|i|I|l|L|f|F|d|D|h|H|g|G])の表記法をサポートします。

型指定子の表記規則:
  1. u or U = Byte
  2. s or S = Short
  3. i or I = Integer
  4. l or L = Long
  5. f or F = Float
  6. d or D = Double
  7. h or H = BigInteger
  8. g or G = BigDecimal
  9. 接尾辞が省略された整数型 = Integer
 10. 接尾辞が省略された浮動小数点型 = Double

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeSet

public static java.util.Set decodeSet(java.lang.String src)
セットを生成して返却します。
文字列は ( element, element, ... ) の構文として解析します。
返却される Set は格納順序を保存しており、変更不可のセットに装飾されます。
またセットを入れ子に定義することも可能です。

パラメータ:
src - 生成元の文字列
戻り値:
セット
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

decodeShort

public static java.lang.Short decodeShort(java.lang.String src)
拡張規則で文字列を Short に変換します。
10進数,16進数([0x|0X]n),又は8進数([0]n),2進数([0b|0B]n), 接尾辞([s|S])の表記法をサポートします。

パラメータ:
src - 生成元の文字列
戻り値:
数値オブジェクト

decodeString

public static java.lang.String decodeString(java.lang.String src)
Unicode escapes の文字表現を文字列型へ変換して返却します。

パラメータ:
src - Unicode escapes 形式の文字列
戻り値:
デコードされた文字列
例外:
java.lang.IllegalArgumentException - 構文が不正の場合

encode

public static java.lang.String encode(java.lang.Object src)
オブジェクトから文字列を生成して返却します。

パラメータ:
src - 生成元のオブジェクト
戻り値:
生成された文字列
例外:
java.lang.IllegalArgumentException - データが不正の場合

encodeBigDecimal

public static java.lang.String encodeBigDecimal(java.math.BigDecimal src)
拡張規則で BigDecimal を文字列に変換します。
数値文字列に接尾辞 'G' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeBigInteger

public static java.lang.String encodeBigInteger(java.math.BigInteger src)
拡張規則で BigInteger を文字列に変換します。
十進表記の数値文字列に接尾辞 'H' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeBoolean

public static java.lang.String encodeBoolean(java.lang.Boolean src)
Boolean を文字列に変換します。

パラメータ:
src - Boolean オブジェクト
戻り値:
文字列表現

encodeByte

public static java.lang.String encodeByte(java.lang.Byte src)
拡張規則で Byte を文字列に変換します。
十進表記の数値文字列に接尾辞 'U' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeCharacter

public static java.lang.String encodeCharacter(java.lang.Character src)
文字を Unicode escapes の文字列表現へ変換して返却します。

パラメータ:
src - 変換元の文字
戻り値:
エンコードされた文字列

encodeDateTime

public static java.lang.String encodeDateTime(java.util.Calendar cal)
カレンダーの情報を日付時刻文字列に変換します。

パラメータ:
cal -
戻り値:
日付時刻文字列

encodeDateTime

public static java.lang.String encodeDateTime(java.util.Date date)
日付オブジェクトの情報を日付時刻文字列に変換します。

パラメータ:
date -
戻り値:
日付時刻文字列

encodeDateTime

public static java.lang.String encodeDateTime(java.lang.Long millis)
1970-01-01 からのミリ秒の情報を日付時刻文字列に変換します。

パラメータ:
millis - 1970-01-01 からのミリ秒
戻り値:
日付時刻文字列

encodeDouble

public static java.lang.String encodeDouble(java.lang.Double src)
拡張規則で Double を文字列に変換します。
数値文字列に接尾辞 'D' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeFloat

public static java.lang.String encodeFloat(java.lang.Float src)
拡張規則で Float を文字列に変換します。
数値文字列に接尾辞 'F' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeInteger

public static java.lang.String encodeInteger(java.lang.Integer src)
拡張規則で Integer を文字列に変換します。
十進表記の数値文字列に接尾辞 'i' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeList

public static java.lang.String encodeList(java.util.List src)
リストを文字列表現へ変換して返却します。

パラメータ:
src - リスト
戻り値:
リストの文字列表現

encodeLong

public static java.lang.String encodeLong(java.lang.Long src)
拡張規則で Long を文字列に変換します。
十進表記の数値文字列に接尾辞 'L' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeMap

public static java.lang.String encodeMap(java.util.Map src)
マップを文字列表現へ変換して返却します。

パラメータ:
src - マップ
戻り値:
マップの文字列表現

encodeNull

public static java.lang.String encodeNull()
Null を示す文字列に変換します。

戻り値:
文字列表現

encodeNumber

public static java.lang.String encodeNumber(java.lang.Number src)
拡張規則で Number を文字列に変換します。
数値文字列に接尾辞を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeSet

public static java.lang.String encodeSet(java.util.Set src)
セットを文字列表現へ変換して返却します。

パラメータ:
src - セット
戻り値:
セットの文字列表現

encodeShort

public static java.lang.String encodeShort(java.lang.Short src)
拡張規則で Short を文字列に変換します。
十進表記の数値文字列に接尾辞 'S' を付加します。

パラメータ:
src - 数値オブジェクト
戻り値:
文字列表現

encodeString

public static java.lang.String encodeString(java.lang.String src)
文字列を Unicode escapes の文字表現へ変換して返却します。

パラメータ:
src - 変換元の文字列
戻り値:
エンコードされた文字列

macro

public static java.lang.Object macro(java.lang.String src,
                                     java.util.Map macros,
                                     java.util.Map context)
データを生成して返却します、マクロ関数と変数を利用可能としています。
文字列が定義するデータ型は構文から自動で解析します。

パラメータ:
src - 生成元の文字列
macros - マクロ名とマクロのマップ、構造は Map<String, Closure> である必要があります。
context - 変数のマップ、構造は Map<String, Object> である必要があります。
戻り値:
生成されたデータ
例外:
java.lang.IllegalArgumentException - 構文が不正の場合