yoshiori.github.io

Chanko の Active_if で None を使えるようにしました

Chankoactive_if は今まで all, any 相当の機能しかなかったのですが、none の機能を追加しました。 (コード的にはいつでも one? 相当の機能も実装できるのですが、必要性を感じなかったので……)

Add Support 'none' to active_if by yoshiori · Pull Request #31 · cookpad/chanko

これにより例えば特定のデバイスに向けた機能と特定のデバイスを弾きたい機能があった場合に今までは

1
2
ActiveIf.define(:device_hoge?) { ... }
ActiveIf.define(:not_device_hoge?) { !... }

と別々に定義しておいて

1
active_if :all_staffs?, :device_hoge?
1
active_if :all_staffs?, :not_device_hoge?

それぞれ書いていました。 (active_if はデフォルトは all になります)

これを none を使うと

1
ActiveIf.define(:device_hoge?) { ... }

と定義しておいて

1
active_if :all_staffs?, :device_hoge?
1
active_if :all_staffs?, none(:device_hoge?)

と書くことが出来るようになりました。

また、入れ子もサポートしていますので

1
active_if :all_staffs?, any(none(:device_hoge?), none(:device_bar?))

のような事も書けます。

ちなみにこの機能を書くときに似た処理である anynone を統合した結果、any も入れ子をサポートするようになったので

1
2
active_if any(any(any(none(:false, :false), :false), :false), :false)
# true

というようなモノもサポートするようになりました。

(実際にやるのは推奨しませんがwww)

ということで、自分のコードが取り込まれたのが嬉しくて久しぶりにブログを書いてみました。

Comments