diff --git a/CHANGES.md b/CHANGES.md index f30ab5c..6e8d5b6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,10 +11,14 @@ ## develop +## 2024.2.1 + +- [ADD] `#kvc_list_string{}` のデフォルト値もチェックするようにする + - @voluntas + ## 2024.2.0 - [ADD] `#kvc_list_string{}` に lowercase を追加する - - true にすると lowercase で返す - @voluntas diff --git a/src/kvconf.app.src b/src/kvconf.app.src index 25b3bd0..80fd0ff 100644 --- a/src/kvconf.app.src +++ b/src/kvconf.app.src @@ -1,6 +1,6 @@ {application, kvconf, [{description, "kvconf"}, - {vsn, "2024.2.0"}, + {vsn, "2024.2.1"}, {registered, []}, {applications, [kernel, stdlib]}, {env, []}, diff --git a/src/kvconf_validate.erl b/src/kvconf_validate.erl index 6b90c4d..410de85 100644 --- a/src/kvconf_validate.erl +++ b/src/kvconf_validate.erl @@ -291,6 +291,20 @@ validate_string(_Value) -> invalid_value. +%% is_list/1 チェックは default 用 +validate_list_string(Value, _) when is_list(Value) -> + %% 全部バイナリかどうかを確認する + F = fun(V) when is_binary(V) -> + true; + (_) -> + false + end, + case lists:all(F, Value) of + true -> + {ok, Value}; + false -> + invalid_value + end; validate_list_string(Value, true) when is_binary(Value) -> validate_list_string(list_to_binary(string:to_lower(binary_to_list(Value))), false); validate_list_string(Value, false) when is_binary(Value) -> @@ -628,6 +642,10 @@ validate_one_test() -> validate_list_string_test() -> + %% デフォルト + ?assertEqual({ok, [~"x-abc-efg", ~"x-y-z"]}, + validate_list_string([~"x-abc-efg", ~"x-y-z"], true)), + ?assertEqual({ok, [~"x-abc-efg", ~"x-y-z"]}, validate_list_string(~"X-ABC-EFG, X-Y-Z", true)), @@ -642,6 +660,10 @@ validate_list_string_test() -> ?assertEqual({ok, [~"a", ~"b"]}, validate_list_string(~" a, , , b ", false)), + %% デフォルト + ?assertEqual(invalid_value, + validate_list_string([~"x-abc-efg", 1], true)), + ?assertEqual(invalid_value, validate_list_string(1, false)),