Sha256: de44f650380889ee8bbd0d916c2954ba509216ab3bedac7d1c6c00685cf7b8e9

Contents?: true

Size: 665 Bytes

Versions: 1

Compression:

Stored size: 665 Bytes

Contents

require "expand/version"

module Expand
  class Manager
    def initialize(namespace)
      @managed = namespace
    end

    def create_module(name, &block)
      mod = Module.new(&block)
      @managed.const_set(name, mod)
      mod
    end

    def create_class(name, parent: Object, &block)
      klass = Class.new(parent, &block)
      @managed.const_set(name, klass)
      klass
    end
  end

  def namespace(context, &block)
    unless context.is_a?(Module)
      context = context.to_s.split('::').inject(Object) do |base, mod|
        base.const_get(mod)
      end
    end
    Manager.new(context).instance_eval(&block)
  end
  alias expand namespace
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
expand-1.0.1 lib/expand.rb