this post was submitted on 19 May 2024
4 points (83.3% liked)

Perchance - Create a Random Text Generator

448 readers
14 users here now

⚄︎ Perchance

This is a Lemmy Community for perchance.org, a platform for sharing and creating random text generators.

Feel free to ask for help, share your generators, and start friendly discussions at your leisure :)

This community is mainly for discussions between those who are building generators. For discussions about using generators, especially the popular AI ones, the community-led Casual Perchance forum is likely a more appropriate venue.

See this post for the Complete Guide to Posting Here on the Community!

Rules

1. Please follow the Lemmy.World instance rules.

2. Be kind and friendly.

  • Please be kind to others on this community (and also in general), and remember that for many people Perchance is their first experience with coding. We have members for whom English is not their first language, so please be take that into account too :)

3. Be thankful to those who try to help you.

  • If you ask a question and someone has made a effort to help you out, please remember to be thankful! Even if they don't manage to help you solve your problem - remember that they're spending time out of their day to try to help a stranger :)

4. Only post about stuff related to perchance.

  • Please only post about perchance related stuff like generators on it, bugs, and the site.

5. Refrain from requesting Prompts for the AI Tools.

  • We would like to ask to refrain from posting here needing help specifically with prompting/achieving certain results with the AI plugins (text-to-image-plugin and ai-text-plugin) e.g. "What is the good prompt for X?", "How to achieve X with Y generator?"
  • See Perchance AI FAQ for FAQ about the AI tools.
  • You can ask for help with prompting at the 'sister' community Casual Perchance, which is for more casual discussions.
  • We will still be helping/answering questions about the plugins as long as it is related to building generators with them.

6. Search through the Community Before Posting.

  • Please Search through the Community Posts here (and on Reddit) before posting to see if what you will post has similar post/already been posted.

founded 1 year ago
MODERATORS
 

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.

you are viewing a single comment's thread
view the rest of the comments
[–] VioneT 1 points 5 months ago* (last edited 5 months ago)

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 .selectOneed 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