Class: AdvancedCodeGenerator::Parameter
- Inherits:
-
Object
- Object
- AdvancedCodeGenerator::Parameter
- Defined in:
- lib/advanced_code_generator/parameter.rb
Overview
Represents a single method parameter configuration.
This class encapsulates the metadata for a method parameter, including its type (required, optional, keyword, etc.), name, and default value. It’s used internally by CodeGenerator::MethodConfig to store parameter definitions that are later converted to Ruby method signatures.
Constant Summary collapse
- VALID_TYPES =
Valid parameter types for method definitions.
%i[required optional keyword_required keyword].freeze
Instance Attribute Summary collapse
-
#default ⇒ Object?
readonly
The default value for optional parameters (nil for required parameters).
-
#name ⇒ Symbol
readonly
The name of the parameter.
-
#type ⇒ Symbol
readonly
The type of parameter (:required, :optional, :keyword_required, :keyword).
Instance Method Summary collapse
-
#initialize(type, name, default: nil) ⇒ Parameter
constructor
Initializes a new Parameter instance.
-
#ruby_param_name ⇒ Symbol
Returns the parameter name as a Symbol.
-
#to_ruby_param ⇒ String
Converts the parameter configuration to a Ruby method parameter string.
Constructor Details
#initialize(type, name, default: nil) ⇒ Parameter
Initializes a new Parameter instance.
50 51 52 53 54 55 56 57 |
# File 'lib/advanced_code_generator/parameter.rb', line 50 def initialize(type, name, default: nil) raise ArgumentError, "Invalid parameter type: #{type}" unless VALID_TYPES.include?(type) raise ArgumentError, 'Parameter name must be a Symbol' unless name.is_a?(Symbol) @type = type @name = name @default = default end |
Instance Attribute Details
#default ⇒ Object? (readonly)
Returns The default value for optional parameters (nil for required parameters).
29 30 31 |
# File 'lib/advanced_code_generator/parameter.rb', line 29 def default @default end |
#name ⇒ Symbol (readonly)
Returns The name of the parameter.
26 27 28 |
# File 'lib/advanced_code_generator/parameter.rb', line 26 def name @name end |
#type ⇒ Symbol (readonly)
Returns The type of parameter (:required, :optional, :keyword_required, :keyword).
23 24 25 |
# File 'lib/advanced_code_generator/parameter.rb', line 23 def type @type end |
Instance Method Details
#ruby_param_name ⇒ Symbol
Returns the parameter name as a Symbol.
This is a convenience method that simply returns the #name attribute.
109 110 111 |
# File 'lib/advanced_code_generator/parameter.rb', line 109 def ruby_param_name name end |
#to_ruby_param ⇒ String
Converts the parameter configuration to a Ruby method parameter string.
This method generates the appropriate Ruby syntax for the parameter based on its type and configuration, which is used when defining methods with CodeGenerator::Generator.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/advanced_code_generator/parameter.rb', line 79 def to_ruby_param case type when :required name.to_s when :optional if default.nil? "#{name} = nil" else "#{name} = #{default.inspect}" end when :keyword_required "#{name}:" when :keyword if default.nil? "#{name}: nil" else "#{name}: #{default.inspect}" end end end |