Sha256: 9abd0f04186a095707d0f86ce66e9d28bf59f693c76d133fd1b95984fc9ec103

Contents?: true

Size: 463 Bytes

Versions: 7

Compression:

Stored size: 463 Bytes

Contents

# frozen_string_literal: true

require 'plumb/composable'

module Plumb
  class Build
    include Composable

    attr_reader :children

    def initialize(type, factory_method: :new, &block)
      @type = type
      @block = block || ->(value) { type.send(factory_method, value) }
      @children = [type].freeze
      freeze
    end

    def call(result) = result.valid(@block.call(result.value))

    private def _inspect = "Build[#{@type.inspect}]"
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
plumb-0.0.10 lib/plumb/build.rb
plumb-0.0.9 lib/plumb/build.rb
plumb-0.0.8 lib/plumb/build.rb
plumb-0.0.7 lib/plumb/build.rb
plumb-0.0.6 lib/plumb/build.rb
plumb-0.0.5 lib/plumb/build.rb
plumb-0.0.4 lib/plumb/build.rb