Sha256: c9a86239e0f342737124d02b82f1f869eaacd9215b0d6d4156704701ac71128e

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

# 定数をクラスメソッドのように扱う機能を提供するモジュール
# @note このモジュールを include したクラスやモジュールでは、定数をクラスメソッドのように呼び出すことができる。
# @note クラスメソッドのように呼び出したくない定数がある場合は、include されたクラスの内部でその定数の名称(シンボル)のリスト(配列)を private なクラスメソッド constants_not_converted_by_method_missing で指定する。
# @note {TokyoMetro} に対しては、このモジュールが定義されているファイルで include している。
module PositiveBasicSupport::Modules::ConstantsAsClassMethods

  extend ::ActiveSupport::Concern

  module ClassMethods

    def method_missing( method_name , *args )
      if costants_converted_by_method_missing.include?( method_name.upcase )
        return const_get( method_name.upcase )
      else
        super( method_name , *args )
      end
    end

    private

    def costants_converted_by_method_missing
      constants( false ) - constants_not_converted_by_method_missing
    end

    def constants_not_converted_by_method_missing
      []
    end

  end

end

::PositiveBasicSupport.module_eval do
  include ::PositiveBasicSupport::Modules::ConstantsAsClassMethods
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
positive_basic_support-0.2.0 lib/positive_basic_support/modules/constants_as_class_methods.rb