module SumsUp::Core
Core
functionality which builds modules for sum types and classes for variants.
Public Instance Methods
define(*no_arg_variants, **arg_variants, &block)
click to toggle source
# File lib/sums_up/core.rb, line 16 def define(*no_arg_variants, **arg_variants, &block) variant_specs = Parser.parse_variant_specs!(no_arg_variants, arg_variants) variant_names = variant_specs.keys variant_classes = variant_specs.map do |name, members| others = variant_names - [name] matcher_class = Matcher.build_matcher_class(name, others) Variant.build_variant_class(name, others, members, matcher_class) end SumType .build(variant_classes) .tap { |sum_type| sum_type.module_eval(&block) if block } end