class Tensai::Util::Initializer::InitializeMethod
Generates initialize method code
Attributes
args[R]
Public Class Methods
new(args)
click to toggle source
# File lib/tensai/util/initializer.rb, line 51 def initialize(args) @args = args end
Public Instance Methods
code()
click to toggle source
# File lib/tensai/util/initializer.rb, line 55 def code <<~CODE def initialize(#{signature}) #{assign_instance_variables_code} #{check_argument_types_code} after_initialize end CODE end
Private Instance Methods
assign_instance_variables_code()
click to toggle source
# File lib/tensai/util/initializer.rb, line 87 def assign_instance_variables_code args.keys.map { |arg| "@#{arg} = #{arg}" }.join(';') end
check_argument_types_code()
click to toggle source
# File lib/tensai/util/initializer.rb, line 83 def check_argument_types_code args.keys.map { |arg| "__check_argument_type(:#{arg}, #{arg})" }.join(';') end
optional_arg?(arg_type)
click to toggle source
# File lib/tensai/util/initializer.rb, line 91 def optional_arg?(arg_type) arg_type.optional? || arg_type.default? end
optional_args()
click to toggle source
# File lib/tensai/util/initializer.rb, line 79 def optional_args args.select { |_, type| optional_arg?(type) }.to_h end
required_args()
click to toggle source
# File lib/tensai/util/initializer.rb, line 75 def required_args args.reject { |_, type| optional_arg?(type) }.to_h end
signature()
click to toggle source
# File lib/tensai/util/initializer.rb, line 69 def signature optional = optional_args.keys.map { |arg| "#{arg}: nil" } required = required_args.keys.map { |arg| "#{arg}:" } (optional + required).join(', ') end