Sha256: bbf27d9de49634e1059181722f3b393ad055428683c010b4fc9dc2f4d7358023

Contents?: true

Size: 813 Bytes

Versions: 13

Compression:

Stored size: 813 Bytes

Contents

# frozen_string_literal: true

module AppInfo::Helper
  module GenerateClass
    def create_class(klass_name, parent_class, namespace:)
      klass = Class.new(parent_class) do
        yield if block_given?
      end

      name = namespace.to_s.empty? ? klass_name : "#{namespace}::#{klass_name}"
      if Object.const_get(namespace).const_defined?(klass_name)
        Object.const_get(namespace).const_get(klass_name)
      elsif Object.const_defined?(name)
        Object.const_get(name)
      else
        Object.const_get(namespace).const_set(klass_name, klass)
      end
    end

    def define_instance_method(key, value)
      instance_variable_set("@#{key}", value)
      self.class.class_eval <<-RUBY, __FILE__, __LINE__ + 1
        def #{key}
          @#{key}
        end
      RUBY
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
app-info-3.3.0 lib/app_info/helper/generate_class.rb
app-info-3.2.0 lib/app_info/helper/generate_class.rb
app-info-3.2.0.beta1 lib/app_info/helper/generate_class.rb
app-info-3.1.4 lib/app_info/helper/generate_class.rb
app-info-3.1.3 lib/app_info/helper/generate_class.rb
app-info-3.1.2 lib/app_info/helper/generate_class.rb
app-info-3.1.1 lib/app_info/helper/generate_class.rb
app-info-3.1.0 lib/app_info/helper/generate_class.rb
app-info-3.0.0 lib/app_info/helper/generate_class.rb
app-info-3.0.0.beta4 lib/app_info/helper/generate_class.rb
app-info-3.0.0.beta3 lib/app_info/helper/generate_class.rb
app-info-3.0.0.beta2 lib/app_info/helper/generate_class.rb
app-info-3.0.0.beta1 lib/app_info/helper/generate_class.rb