Sha256: 8ccb39e20c9683740aab1a3aec56102432ad96e75bd809061cfa24b84922f2f6

Contents?: true

Size: 533 Bytes

Versions: 1

Compression:

Stored size: 533 Bytes

Contents

module Trax
  module Core
    class NamedClass
      def self.new(_name, _parent_klass=nil, **options, &block)
        klass = ::Object.set_fully_qualified_constant(_name, (_parent_klass ? ::Class.new(_parent_klass) : Class.new do
          define_singleton_method(:name) { _name }
        end))

        options.each_pair do |k,v|
          klass.class_attribute k
          klass.__send__("#{k}=", v)
        end unless options.blank?

        klass.instance_eval(&block) if block_given?

        klass
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
trax_core-0.0.74 lib/trax/core/named_class.rb