Sha256: 47b0c75cd28d46e9d5ce3766f30afe845495a206156564b523ad28f6d51f41a6
Contents?: true
Size: 984 Bytes
Versions: 1
Compression:
Stored size: 984 Bytes
Contents
# frozen_string_literal: true require "dry/core/equalizer" require "dry/effects/initializer" module Dry module Effects class Effect extend Initializer include ::Dry::Equalizer(:type, :name, :payload, :keywords) option :type option :name, default: -> { type } option :payload, default: -> { EMPTY_ARRAY } option :keywords, default: -> { EMPTY_HASH } def payload(*payload) if payload.empty? @payload else with(payload: payload) end end def keywords(**keywords) if keywords.empty? @keywords else with(keywords: @keywords.merge(keywords)) end end def call(*args, **kwargs) if args.empty? if kwargs.empty? self else keywords(**kwargs) end else with(payload: args, keywords: @keywords.merge(kwargs)) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-effects-0.2.0 | lib/dry/effects/effect.rb |