LC Server style survey: co-mingle code w/HTML?
Mark Waddingham
mark at livecode.com
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:
>
> EXAMPLE B
>
> 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
not...
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.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list