これのおさらいです。
前回までのおさらい
意図しない挙動の例
{
TOAUTO('000123') // => 123
--
TOAUTO('.') // => 0.000000
}
使わなければ良いだけの話ですが、「はろーYAYAわーるど」などのテンプレートゴーストにはミドルウェアレベルで組み込まれています。具体的には、イベントのReferenceがTOAUTOを経由した状態でreference配列に格納されています。つまり、Reference0に"."が入っている場合でも、reference[0]を参照すると"0.000000"となってしまいます。
対策
最大の問題はTOAUTOの変換が「不可逆」であるという点です。"123"という値がreference[0]で参照出来ても、本当に送られてきた文字列が"123"だったのか"0123"だったのか"000123"だったのか判断のしようがありません。
なので不可逆な変換のみ無効とする関数TOAUTOEXを新たに定義しました。
{
TOAUTOEX('000123') // => 000123
--
TOAUTOEX('.') // => .
--
TOAUTOEX('1') + TOAUTOEX('1') // => 2
}
TOAUTOEX
{
_v = _argv[0]
if TOSTR(TOAUTO(_v)) == _v {
TOAUTO(_v)
retrun
}
_v
}
yaya_shiori3.dicの414行目のTOAUTOをこのTOAUTOEXに置き換えることでreference参照の不具合を回避できます。