module FlexStationData::Concerns::Service

Public Class Methods

[](verb)
Alias for: with
callable_modules() click to toggle source
# File lib/flex_station_data/concerns/callable.rb, line 27
def callable_modules
  @callable_modules ||= {}
end
included(base) click to toggle source
# File lib/flex_station_data/concerns/callable.rb, line 7
def included(base)
  base.include with(:call)
end
with(verb) click to toggle source
# File lib/flex_station_data/concerns/callable.rb, line 11
def with(verb)
  callable_modules[verb.to_sym] ||= Module.new do
    define_singleton_method(:included) do |base|
      base.define_singleton_method(verb) do |*args|
        new(*args).public_send(verb)
      end

      base.define_singleton_method(:to_proc) do
        method(verb).to_proc
      end
    end
  end
end
Also aliased as: []