Sha256: 3543f45ae0df6881990647281f84bd3963d9bc0f8cfe4b72048b4642efa6b18a

Contents?: true

Size: 837 Bytes

Versions: 6

Compression:

Stored size: 837 Bytes

Contents

class Trailblazer::Operation
  # :private:
  module Option
    def self.call(proc, &block)
      type = :proc

      option =
        if proc.is_a? Symbol
          type = :symbol
          ->(input, _options) { call_method(proc, input, _options) }
        elsif proc.is_a? Proc
          ->(input, _options) { call_proc(proc, input, _options) }
        elsif proc.is_a? Uber::Callable
          type = :callable
          ->(input, _options) { call_callable(proc, input, _options) }
        end

      yield type if block_given?
      option
    end

    def self.call_proc(proc, input, options)
      proc.(options)
    end

    def self.call_method(proc, input, options)
      input.send(proc, options)
    end

    def self.call_callable(callable, input, options)
      callable.(options)
    end

    KW = Option
  end # Option
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
trailblazer-operation-0.0.13 lib/trailblazer/operation/1.9.3/option.rb
trailblazer-operation-0.0.12 lib/trailblazer/operation/1.9.3/option.rb
trailblazer-operation-0.0.11 lib/trailblazer/operation/1.9.3/option.rb
trailblazer-operation-0.0.10 lib/trailblazer/operation/1.9.3/option.rb
trailblazer-operation-0.0.9 lib/trailblazer/operation/1.9.3/option.rb
trailblazer-operation-0.0.8 lib/trailblazer/operation/1.9.3/option.rb