Module: Actor::Messaging::Message::Name

Defined in:
lib/actor/messaging/message/name.rb

Constant Summary collapse

PATTERN =
%r{(?:\A|[a-z0-9])[A-Z]}

Class Method Summary collapse

Class Method Details

.get(value) ⇒ Object



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

def self.get value
  case value
  when Symbol
    value

  when ::Module, Class
    get value.name

  when String
    *, inner_namespace = value.split '::'

    inner_namespace.gsub! PATTERN do |str|
      str.downcase!
      str.insert 1, '_' if str.length == 2
      str
    end

    inner_namespace.to_sym

  else
    get value.class
  end
end