app/models/coupdoeil/hovercard/setup.rb
# frozen_string_literal: true module Coupdoeil class Hovercard class Setup attr_reader :klass, :type, :params EMPTY_PARAMS = {}.freeze def initialize(klass) @klass = klass @type = nil @params = EMPTY_PARAMS end def default_options = klass.default_options_for(type) def identifier = "#{type}@#{klass.hovercard_resource_name}" def render_in(view_context) = klass.new(params, view_context).process(type) def with_type(type) @type = type self end def with_params(**params) @params = params self end def method_missing(method_name, *args, &) if klass.action_methods.include?(method_name.name) raise ArgumentError, "expected no arguments, given #{args.size}" if args.any? with_type(method_name) else super end end def respond_to_missing?(method, include_all = false) klass.action_methods.include?(method.name) || super end end end end