Module: Jsapi::Meta::Callable

Defined in:
lib/jsapi/meta/callable.rb,
lib/jsapi/meta/callable/symbol_evaluator.rb,
lib/jsapi/meta/callable/symbol_sequence_evaluator.rb

Defined Under Namespace

Classes: SymbolEvaluator, SymbolSequenceEvaluator

Class Method Summary collapse

Class Method Details

.from(arg) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/jsapi/meta/callable.rb', line 10

def from(arg)
  raise ArgumentError, "argument can't be blank" if arg.blank?

  return arg if arg.respond_to?(:call) # e.g. a Proc

  symbols = Array.wrap(arg).flat_map do |symbol|
    next symbol if symbol.is_a?(Symbol)

    symbol.to_s.split('.')
  end.map(&:to_sym)

  return SymbolEvaluator.new(symbols.first) if symbols.one?

  SymbolSequenceEvaluator.new(*symbols)
end