Skip Navigation

Search

create-instance-plugin Doesn't Fix Deep Properties with Same Level Lists

Suppose we have the following list: ```plaintext createInstance = {import:create-instance-plugin}

person name = [this.nameList] nameList Salman Manny Rhian age = {31-49} child = [this.child_obj] child_obj name = [this.nameList] nameList Anne Arram Amelia age = {3-17} If we output:text [p = createInstance(person, "deep"), p.name] [p.age] [p.name] [p.age] We can see that it has fixed the `name` and the `age` property on the instance. However, if we output:text [p = createInstance(person, "deep"), p.child.name] [p.child.age] [p.child.name] [p.child.age] It would throw `undefined`. Now looking at similar list:text person name = {Salman|Manny|Rhian} age = {31-49} child = [this.child_obj] child_obj name = {Anne|Arram|Amelia} age = {3-17}

output [p = createInstance(person, "deep"), p.child.name] [p.child.age] [p.child.name] [p.child.age] ``` This would have the values fixed and working.

Looking at the code of the create-instance-plugin, it would only allow the 'deep' fixing of properties if there isn't any items/lists in it. What that means is the following: text child_obj name = [this.nameList] nameList Anne Arram Amelia age = {3-17} This object/list, has a list ( nameList) within it as well as properties (name and age), while: text child_obj name = {Anne|Arram|Amelia} age = {3-17} Only has properties. and based on Line 22 of the create-instance-plugin: js ... } else if(propValue.getPropertyKeys && propValue.getPropertyKeys.length > 0 && propValue.getLength === 0) { ... If the list to be fixed has a list within it other than the properties i.e. propValue.getLength is not zero, then it wouldn't fix the properties within it.

The first child_obj has a nameList with it, and upon calling propValue.getLength it would have 1 while the second child_obj will return a propValue.getLength of 0 since it doesn't have any lists.

Thus, the solution for the problem is just removing the propValue.getLength === 0 check OR create another check without it.

--- TLDR; propValue.getLength === 0 at Line 22 of the create-instance-plugin can be removed to allow properties that rely on same level lists to be fixed. Here is the demo of the problem with a 'remixed' create instance plugin with the fix.

6