Subj : Replacing a text string to execute JS code directly
To   : Nightfox
From : Digital Man
Date : Wed Jan 29 2025 02:43 pm

 Re: Replacing a text string to execute JS code directly
 By: Digital Man to Nightfox on Wed Jan 29 2025 01:15 pm

>   Re: Replacing a text string to execute JS code directly
>   By: Nightfox to Digital Man on Wed Jan 29 2025 12:39 pm
>
>  > Hi DM,
>
>  > In the strings from text.dat, I know you can use @exec:..@ to have it run
>  > a JS or Baja module, but is there a way to have it directly execute a
>  > block of JS code instead of executing a file?  In my most recent update
>  > to DDMsgReader, it replaces the AreYouThere string with an empty string
>  > so that the contents of the screen aren't affected, but I was also
>  > thinking of having it execute some JS code so that I'd have some more
>  > control on where the string is displayed, etc.  I could have it execute a
>  > separate .js with @EXEC@, but I'm not sure I'd want to add a separate .js
>  > just for that. I'm wondering if there's a way to have it directly execute
>  > a block of JS code when used with bbs.replace_text()?
>
> Not exactly as @-codes are pretty restrictive as to the contents (e.g. no
> space characters), so it'be pretty hard to put a code block within an
> @-code. One possibility is to define a JS property with a getter function
> and then you can invoke that getter function with the JS:propname @-code:
> https://wiki.synchro.net/custom:atcodes#external_content

Here's an example:

Object.defineProperty(js.global, "prop", {
   get : function () {
       return "hello, world";
   }
});

bbs.replace_text("Pause", "@JS:" + "prop@"); // @-code split for posting
console.pause(); // will invoke the global 'prop' getter function

In this example, the "prop" getter function could do more stuff and just return an empty string if that's what's desired.
--
                                           digital man (rob)

Synchronet "Real Fact" #37:
Synchronet's Windows Control Panel is built with Borland C++ Builder
Norco, CA WX: 59.7�F, 54.0% humidity, 1 mph SW wind, 0.00 inches rain/24hrs

---
� Synchronet � Vertrauen � Home of Synchronet � [vert/cvs/bbs].synchro.net