Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

TbpgrUtils | ver0.0.8 追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加

概要

追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加

詳細

追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加

目的

ユーティリティ的な機能などを作成する際に、既存のクラスをオープンする場合に
一部のクラスにはほとんど実装内容は持たないがメソッド宣言と固定値の返却のみ定義が必要になる場合があります。

例えばActiveSupportのObject#blank?など。
Object#blank?は NilClass、FalseClass、TrueClass、Numericクラスに固定値(true or false)を返却するメソッドを追加しています。

このような際に、実装内容に比べて宣言部ばかり大きくなるため記述が冗長になります。
Kernel#bulk_define_methodsを利用すると1行で設定可能になります。

※もちろん他の目的で利用してもよい

仕様

・bulk_define_methodsに対象クラスリスト、設定メソッド名リスト、設定値リストを渡すと一括定義する
・クラスはClassとArray[Classes]を利用可能。
メソッド名はStringとSymbolとArray[String or Symbol]を利用可能
・設定値は何でも設定可能

宣言

bulk_define_methods classes, methods, constants

・サンプル
仮にActiveSupportのblank?の実装に利用した場合

bulk_define_methods [NilClass, FalseClass], :blank?, true
bulk_define_methods [TrueClass, Numeric], :blank?, false

puts nil.blank?   # => true
puts false.blank? # => true
puts true.blank?  # => false
puts 1.blank?     # => false

※詳細はGitHubのREADMEとテストクラスをご確認ください

リリースバージョン

0.0.8