diff --git a/lib/prop_initializer/properties.rb b/lib/prop_initializer/properties.rb index 4bcab63..a7323b1 100644 --- a/lib/prop_initializer/properties.rb +++ b/lib/prop_initializer/properties.rb @@ -74,6 +74,7 @@ def __prop__initializer_extension__ def __generate_prop_initializer_methods__(new_property, buffer = +"") buffer << "# frozen_string_literal: true\n" prop_initializer_properties.generate_initializer(buffer) + prop_initializer_properties.generate_properties(buffer) prop_initializer_properties.generate_to_h(buffer) new_property.generate_writer_method(buffer) if new_property.writer new_property.generate_reader_method(buffer) if new_property.reader diff --git a/lib/prop_initializer/properties/schema.rb b/lib/prop_initializer/properties/schema.rb index 1b25595..b7d30f1 100644 --- a/lib/prop_initializer/properties/schema.rb +++ b/lib/prop_initializer/properties/schema.rb @@ -50,6 +50,12 @@ def generate_initializer(buffer = +"") "end\n" end + def generate_properties(buffer = +"") + buffer << "def properties\n" + buffer << " self.class.prop_initializer_properties.properties_index\n" + buffer << "end\n" + end + def generate_to_h(buffer = +"") buffer << "def to_h\n" << " {\n" @@ -103,7 +109,6 @@ def generate_initializer_params(buffer = +"") end def generate_initializer_body(buffer = +"") - buffer << " properties = self.class.prop_initializer_properties.properties_index\n" generate_initializer_handle_properties(@sorted_properties, buffer) end diff --git a/lib/prop_initializer/property.rb b/lib/prop_initializer/property.rb index 13f6a9c..7c8955c 100644 --- a/lib/prop_initializer/property.rb +++ b/lib/prop_initializer/property.rb @@ -125,8 +125,7 @@ def generate_predicate_method(buffer = +"") end def generate_initializer_handle_property(buffer = +"") - buffer << " # " << @name.name << "\n" << - " property = properties[:" << @name.name << "]\n" + buffer << " # " << @name.name << "\n" if @kind == :keyword && ruby_keyword? generate_initializer_escape_keyword(buffer) @@ -156,7 +155,7 @@ def generate_initializer_escape_keyword(buffer = +"") def generate_initializer_coerce_property(buffer = +"") buffer << escaped_name << - "= property.coerce(" << + "= properties[:" << @name.name << "].coerce(" << escaped_name << ", context: self)\n" end @@ -169,7 +168,7 @@ def generate_initializer_assign_default(buffer = +"") escaped_name << "\n " << escaped_name << - " = property.default_value\n end\n" + " = properties[:" << @name.name << "].default_value\n end\n" end def generate_initializer_assign_value(buffer = +"")