class TwirpRails::Configuration

Public Class Methods

config_param(symbol, default_value = nil, &block) click to toggle source
# File lib/twirp_rails.rb, line 14
    def self.config_param(symbol, default_value = nil, &block)
      raise 'wrong args' if !default_value.nil? && block_given?

      if block_given?
        class_variable_set("@@#{symbol}_default", block)
        class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def #{symbol}_default
            instance_eval &@@#{symbol}_default
          end
        RUBY
      else
        class_variable_set("@@#{symbol}_default", default_value)
        class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def #{symbol}_default
            @@#{symbol}_default
          end
        RUBY
      end

      class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
        def #{symbol}
          @#{symbol} ||= #{symbol}_default
        end
      RUBY

      class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
        def #{symbol}?
          #{symbol}
        end

        def #{symbol}=(value)
          @#{symbol} = value
        end
      RUBY
    end