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.
Okay, might be too crazy now but, if the list has a list
propValue.getLength > 0
, we can do a.selectOne
to it, then re-apply the previous properties to it. Meaning, it would have one ‘list’ value, but it would still have the previous properties.You can check the code here: https://perchance.org/hxoknecflu
But if that might break more generators, then probably a new instance plugin might be good XDDDDD.
Edit: it might still be breaking generators, since if the item that was
.selectOne
ed is a list, then it would still randomize and not be fixed: See the[p.child.testing]
in this generator: https://perchance.org/vnm320e3k6#edit