Sha256: 3151ebfb12dd478d0219cfbaecb95f0d03a3cf4b3df4506154de6a8280cb89d1
Contents?: true
Size: 1006 Bytes
Versions: 2
Compression:
Stored size: 1006 Bytes
Contents
module Dry class Container # Base class to abstract Memoizable and Callable implementations # # @api abstract # class Item # @return [Mixed] the item to be solved later attr_reader :item # @return [Hash] the options to memoize, call or no. attr_reader :options # @api abstract def initialize(item, options = {}) @item = item @options = { call: item.is_a?(::Proc) && item.parameters.empty? }.merge(options) end # @api abstract def call raise NotImplementedError end # @private def value? !callable? end # @private def callable? options[:call] end # Build a new item with transformation applied # # @private def map(func) if callable? self.class.new(-> { func.(item.call) }, options) else self.class.new(func.(item), options) end end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
grape-extra_validators-2.0.0 | vendor/bundle/ruby/2.6.0/gems/dry-container-0.7.2/lib/dry/container/item.rb |
dry-container-0.7.2 | lib/dry/container/item.rb |