Suppose we have the following list:
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:
[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:
[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:
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:
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:
child_obj
name = {Anne|Arram|Amelia}
age = {3-17}
Only has properties. and based on Line 22
of the create-instance-plugin
:
...
} 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.
@[email protected] pinging dev