Sha256: 9c0a9186962fec53ff28bf510afe59bf05e7fa267c1dbbd685e162fd351dcce0

Contents?: true

Size: 599 Bytes

Versions: 3

Compression:

Stored size: 599 Bytes

Contents

class Class
  # Creates a subclass of the current class parametrized with a given set of
  # parameters. The parameters have form { symbol: value } and they cause
  # singleton method(s) named "symbol" be defined on the subclass, returning
  # "value".
  # 
  def parametrize **parameters, &block
    Class.new( self ).tap do |subclass|
      parameters.each_pair { |symbol, value|
        subclass.define_singleton_method symbol do value end
      }
      subclass.define_singleton_method inspect do subclass.superclass.inspect + "<" end
      subclass.class_exec &block if block
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
y_support-2.1.16 lib/y_support/core_ext/class/misc.rb
y_support-2.1.13 lib/y_support/core_ext/class/misc.rb
y_support-2.1.12 lib/y_support/core_ext/class/misc.rb