lib/class_variants/helper.rb



module ClassVariants
  module Helper
    module ClassMethods
      def class_variants(...)
        singleton_class.instance_variable_get(:@_class_variants_instance).merge(...)
      end
    end

    def self.included(base)
      base.extend(ClassMethods)
      base.singleton_class.instance_variable_set(:@_class_variants_instance, ClassVariants::Instance.new)
      base.define_singleton_method(:inherited) do |subclass|
        subclass.singleton_class.instance_variable_set(
          :@_class_variants_instance, base.singleton_class.instance_variable_get(:@_class_variants_instance).dup
        )
      end
    end

    def class_variants(...)
      self.class.singleton_class.instance_variable_get(:@_class_variants_instance).render(...)
    end
  end
end