class Dry::Types::Printer::Composition
@api private
Public Class Methods
new(printer, composition_class)
click to toggle source
# File lib/dry/types/printer/composition.rb, line 9 def initialize(printer, composition_class) @printer = printer @composition_class = composition_class freeze end
Public Instance Methods
visit(composition) { |"#{composition_name}<#{constructors}#{opts}>"| ... }
click to toggle source
# File lib/dry/types/printer/composition.rb, line 15 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 Instance Methods
visit_constructor(type, &block)
click to toggle source
# File lib/dry/types/printer/composition.rb, line 33 def visit_constructor(type, &block) case type when @composition_class visit_constructors(type, &block) else @printer.visit(type, &block) end end
visit_constructors(composition) { |"#{left} #{operator} #{right}"| ... }
click to toggle source
# File lib/dry/types/printer/composition.rb, line 25 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