this post was submitted on 22 Aug 2024
3 points (80.0% liked)

Perchance - Create a Random Text Generator

391 readers
5 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
 

@[email protected]

I'm now coming up against the issue you thought I was having before. Where after a [code block] is processed it's evaluated. But if using a <script> tag to do things it won't be.

I don't want evaluation to happen. So I could escape perchance specials to work right when returned to a code block, but they won't be evaluated by scripts so they'll still be there on the page. Or I could not escape perchance specials to work right from scripts, but they will be evaluated by code blocks which I don't want. I just want plain text to always come out no matter what.

And there's (seemingly) no way of knowing if it's going to be evaluated at the end of a code block or not. And no way of just telling perchance "LEAVE THIS STRING ALOOOOOONE!!"

Is there anything I can do or is this just not possible in any way?

If not, I'd really super-duper like it if you could add a way. Even if it is as simple and "dumb" as setting a property on the object like .DONTEVALUATETHIS = true or something. I'd really appreciate it.

Or even something like if it has .evaluateItem = "..." it'll automatically use that instead? Maybe? I tried that in case, and it didn't work.

Honestly, I'm surprised this isn't an issue for all sorts of plugins. Though maybe it is assumed that everyone only ever calls anything from code blocks and not scripts. Or people just don't think about or have instances where the plugin returns HTML that includes specials that they want to stay plain text.

But as I'm doing my best to make my plugin bulletproof no matter how it's used... it's driving me insane ๐Ÿ˜…

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 2 points 3 weeks ago (1 children)

I... might have found a solution. It's super hacky, but simple enough.

if (!document.currentScript) {
  // escape specials
}

document.currentScript references the script tag in the DOM that is currently being processed. Or null if no script tag is being processed. Luckily somehow this works? I guess because the [code blocks] are (luckily) being processed in an event, something like that?

Of course, this is extremely brittle, but will do for now I guess. Same as my using __evaluateText ๐Ÿ˜…

[โ€“] [email protected] 2 points 2 weeks ago

@[email protected] Yeeeeeeeeeeah... so that wasn't actually working. It does work when direct from a script. Doesn't work when from an event, because it's no longer processing the script tag itself. ๐Ÿคฆ

I've resorted to requiring the plugin user to tell me if the HTML should be escaped or not. But obviously... that suuuuuucks.

Really hoping for some way of knowing if a code block is being processed or not. Or a way of setting my own "evaluateItem" so I can override the processing. Or a way of telling perchance not to forcibly evaluate an object.

This issue is driving me crazy every time I find a new edge case or some hacky workaround turns out not to be working after all.