Module: Alias2

Defined in:
lib/alias2.rb

Constant Summary collapse

VERSION =
"0.1.0".freeze

Class Method Summary collapse

Class Method Details

.alias(namespace, aliases = nil) ⇒ Object

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/alias2.rb', line 7

def alias(namespace, aliases = nil)
  raise ArgumentError, "you must provide an alias or a block" if aliases.nil? && !block_given?

  namespace = constant(namespace)
  aliases = find_names(namespace) if aliases.nil? || aliases == "*"

  if aliases.is_a?(String)
    set(namespace, aliases)
    return
  end

  aliases.each do |target, alias_as|
    klass = namespace.const_get(target)
    if block_given?
      keep_or_alias = yield klass
      next unless keep_or_alias
      # Block returned a new alias
      alias_as = keep_or_alias if keep_or_alias != true
    end

    set(klass, (alias_as || target).to_s)
  end

  nil
end