lib/ivar/explicit_keyword_declaration.rb
# frozen_string_literal: true require_relative "explicit_declaration" module Ivar # Represents an explicit declaration that initializes from keyword arguments class ExplicitKeywordDeclaration < ExplicitDeclaration # Check if this declaration uses keyword argument initialization # @return [Boolean] Whether this declaration uses keyword argument initialization def kwarg_init? = true # Called before object initialization # @param instance [Object] The object being initialized # @param args [Array] Positional arguments # @param kwargs [Hash] Keyword arguments def before_init(instance, args, kwargs) super kwarg_name = @name.to_s.delete_prefix("@").to_sym if kwargs.key?(kwarg_name) instance.instance_variable_set(@name, kwargs.delete(kwarg_name)) end end end end