Sha256: 4993fc2cb69a140fd2105d5c62c11882e9b23f42104e5556d9d65f9d94130041
Contents?: true
Size: 939 Bytes
Versions: 3
Compression:
Stored size: 939 Bytes
Contents
module Dry module Types module Decorator attr_reader :type, :options def initialize(type, options = {}) @type = type @options = options end def constructor type.constructor end def with(new_options) self.class.new(type, options.merge(new_options)) end def valid?(value) type.valid?(value) end def respond_to_missing?(meth, include_private = false) super || type.respond_to?(meth) end private def decorate?(response) response.kind_of?(type.class) end def method_missing(meth, *args, &block) if type.respond_to?(meth) response = type.__send__(meth, *args, &block) if decorate?(response) self.class.new(response, options) else response end else super end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-types-0.7.2 | lib/dry/types/decorator.rb |
dry-types-0.7.1 | lib/dry/types/decorator.rb |
dry-types-0.7.0 | lib/dry/types/decorator.rb |