Closed paithiov909 closed 2 years ago
@paithiov909 ありがとうございます。ありがたいです。
テストに関しては
name引数についても複数の値を渡せるように
の部分、現在は警告が出るので yearとnameの長さがあっている場合 に警告が出ないテストを追加していただくのが良いと思います。
追加のコミットとして、メモ化についてNEWSへの記載を行ってくださいますと幸いです。
yearとnameの長さが合っているときに警告が出ないのは正常な挙動としてテストされているはずなので、警告やエラーが期待通り返されることを確かめるテストを追加しました。
ここでは次のような挙動を想定しています。
実際には、以下のようになります。個人的には、(4)の1947年以前の場合については、警告は出しつつ明示的にNAを返してもよいような気がしますが、ひとまずこんな感じで……
zipangu::jholiday_spec(c(NA, 2020), "Sports Day")
#> Error in if (!checked) rlang::warn("The year specified must be after the law was enacted in 1948"): missing value where TRUE/FALSE needed
zipangu::jholiday_spec(c(NA, 2020, 2021), c("hoge day", "fuga day", NA_character_))
#> Error in if (!checked) rlang::warn("The year specified must be after the law was enacted in 1948"): missing value where TRUE/FALSE needed
zipangu::jholiday_spec(c(NA, 2020, 2021), c("Sports Day", "Marine Day"))
#> Error in if (!checked) rlang::warn("The year specified must be after the law was enacted in 1948"): missing value where TRUE/FALSE needed
zipangu::jholiday_spec(NULL, NULL)
#> Error in if (!name %in% jholiday_names) {: argument is of length zero
zipangu::jholiday_spec(c(NULL, 2020), "Sports Day")
#> [1] "2020-07-24"
zipangu::jholiday_spec(2020, c("hoge day", "Sports Day"))
#> Warning in if (!name %in% jholiday_names) {: the condition has length > 1 and
#> only the first element will be used
#> Error in `zipangu::jholiday_spec()`:
#> ! No such holiday: hoge day
#> * No such holiday: Sports Day
Created on 2022-02-19 by the reprex package (v2.0.1)
zipangu::jholiday_spec(c(NA, 2020), "Sports Day")
#> [1] NA "2020-07-24"
zipangu::jholiday_spec(c(NA, 2020, 2021), c("hoge day", "fuga day", NA_character_))
#> Error in `zipangu::jholiday_spec()`:
#> ! No such holiday: hoge day
#> * No such holiday: fuga day
#> * No such holiday: NA
zipangu::jholiday_spec(c(NA, 2020, 2021), c("Sports Day", "Marine Day"))
#> Warning: `name` is expected to be a vector of length 1 or the same length of
#> `year`. the first element of `name` is recycled.
#> [1] NA "2020-07-24" "2021-07-23"
zipangu::jholiday_spec(NULL, NULL)
#> Date of length 0
zipangu::jholiday_spec(c(NULL, 2020), "Sports Day")
#> [1] "2020-07-24"
zipangu::jholiday_spec(2020, c("hoge day", "Sports Day"))
#> Error in `zipangu::jholiday_spec()`:
#> ! `year` must be a vector of length 1 or longer length than `name`.
Created on 2022-02-19 by the reprex package (v2.0.1)
ご対応ありがとうございます。より使いやすくなったと思います 👍
このPRについて
16 で提案されているように、
jholiday_spec
をmemoiseでキャッシュするようにしてみました。yearとlangのペアごとに.pkgenv
という環境内でキャッシュしています。str_jconv
のrlang::arg_match
についてもいじったのですが、#7 でこのままでもいいよねみたいになっているのを見つけたため、その変更は元に戻しています。Created on 2022-02-16 by the reprex package (v2.0.1)