LC Server style survey: co-mingle code w/HTML?

Mark Waddingham mark at
Fri Dec 8 12:28:42 EST 2017

On 2017-12-07 19:52, Richard Gaskin via use-livecode wrote:
> Would it be possible/practical to extend the merge function to at
> least allow things like control structures with non-LC stuff in
> between them?
> E.g., from my earlier post:
> The implicit merge LC Server uses is more complete than the
> explicitly-called merge function.  For example, the merge function
> doesn't handle conditionals cross non-code parts, e.g.:
>    <?lc if a = b then ?>
>       <p>Some data that happens to be HTML</p>
>    <?lc else ?>
>       <p>Some other data that happens to be HTML</p>
>    <?lc end if ?>
> That'll work in LC Server, but AFAIK is incompatible with LC Script on
> the desktop.

Possible - yes. Worthwhile implementing in C++ in the engine - probably 

The reason I say that is because it would be relatively straight-forward 
(assuming appropriate knowledge) to write an LCS script which transforms 
a server script into an LC stack which 'does the same thing' and then 
you have something far more adaptable.

A LC Server script is an alternating sequence of code and text blocks. 
Once you have that alternating sequence, you could replace the text 
blocks with a call to a handler with a parameter which is a custom prop 
of the stack containing the text content. Then the code would need to be 
transformed so that all inline commands where in a single handler, all 
variable decls at top-level were script locals, and all handler 
definitions in the code blocks next to the main handler.

The only slight tricky bit is the creation of root-scope variables if 
not using explicitVars. I'd need to give that some thought but doing it 
with a transformation written in script would mean you could (for the 
most part) emulate the LC server environment in the IDE - even replacing 
server specific commands (e.g. put output) with calls to handlers which 
emulate them.

Warmest Regards,


Mark Waddingham ~ mark at ~
LiveCode: Everyone can create apps

More information about the Use-livecode mailing list