bpriver_heat 0.5.1
bpriver_heat: ^0.5.1 copied to clipboard
this package is bpriver_heat library.
bpriver_heat #
構文 #
Example - a🅱️c #
a, b, c, はそれぞれ 指定子(Specifier)という.
また 下記の Index 以外の指定子を Identifier という.
Example - 1:2:3 #
1, 2, 3, も同様に指定子である.
0以上の整数の指定子は Index という.
Example - a:1:b #
:(colon), は Delimiter であり指定子と指定子の区切りを表す.
また一つの heat 文に Identifier と Index は混在してもよい.
Example - a🅱️c: #
heat 文の末尾に :, があっても無くてもよい.
Example - aaa #
1つの指定子しか存在しなくても有効な heat 文である.
Example - 0 #
上記と同様に 1つの Index であっても有効な heat 文である.
Example - 01:002:0003 #
0 から始まる上記のような表記は Index として有効である.
それぞれ 01 -> 1, 002 -> 2, 0003 -> 3, として解釈される.
Example - (空文字) #
空文字も有効な heat 文である.
heat は内部で 指定子のリストを所持するが その時 空のリストとして処理される.
Example - '1':2:'abc' #
'1', は 「1」という値の Identifier として解釈される.
single quotation で指定子の開始と終了を囲むことで その囲まれた部分を必ず Identifeir として読み込む.
'abc' は元から Identifier として解釈されるが このような書き方も有効で abc という Identifier として解釈される.
2, は通常通り Index である.
Example - a'b:a'b'c #
a', は 「a'」という Identifier として解釈される.
a'b'c も同様に 「a'b'c」という Identifier として解釈される.
Example - 'a:b':c'' #
未定義
Example - a:b:c #
, で :, をエスケープできる.
a:b, は a:b という Identifier として解釈される.
Example - a🅱️c:d:e:f:g🅰️b:c:d: ... 以下略 #
指定子の数に制限はない.
また途中で同じ名前の指定子が存在しても問題ない
意味 #
当たり前だが heat に対応するには受け取ったときの処理を別途実装する必要がある.
Example - a🅱️c #
このような場合下記のような木構造のデータ(yaml)の要素にアクセスし それに紐づけられた値を取得することを意味する.
a, b, c, というように key をたどっていく.
a:
b:
c: xxx
d:
結果 xxx を取得する.
冒頭でも説明したように探索して取得する処理を別途実装する必要がある.
しかし yaml は yaml library で YamlMap 型として取得でき この heat library の Heat.getFromMap() で Map 型を処理する method がある.
しかしこの method は1度の呼び出しで一階層分しか処理しないので この例の場合 c までたどり着くには3回繰り返す処理を別途実装する必要がある.
Example - 0:1:0 #
Index の場合 key ではなく何番目(0から始まる)にあるかでたどっていく.
a:
b:
bb:
c: xxx
a が0番目 bb が1番目, c が0番目, といった具合である.
Example - b:4 #
a: xxx
b: ['A', 'B', 'C', 'D', 'E']
c: ['a', 'b', 'c', 'd', 'e']
Identifier は key が存在しない List のようなものをたどることはできない.
しかし Index はそれが可能である.
この例の場合 E, を取得する.