Sha256: ff7db5e6c2b4496ca6267af0f5f1eef9873fd507fd4942e092598d826949cdbe
Contents?: true
Size: 1.12 KB
Versions: 3
Compression:
Stored size: 1.12 KB
Contents
# frozen_string_literal: true module Dry module Types # @api private class Printer # @api private class Composition def initialize(printer, composition_class) @printer = printer @composition_class = composition_class freeze end def visit(composition) visit_constructors(composition) do |constructors| @printer.visit_options(composition.options, composition.meta) do |opts| yield "#{@composition_class.composition_name}<#{constructors}#{opts}>" end end end private def visit_constructors(composition) visit_constructor(composition.left) do |left| visit_constructor(composition.right) do |right| yield "#{left} #{@composition_class.operator} #{right}" end end end def visit_constructor(type, &block) case type when @composition_class visit_constructors(type, &block) else @printer.visit(type, &block) end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-types-1.7.2 | lib/dry/types/printer/composition.rb |
dry-types-1.7.1 | lib/dry/types/printer/composition.rb |
dry-types-1.7.0 | lib/dry/types/printer/composition.rb |