In-browser compiler for JavaScript+Syndicate to plain JavaScript
To make experimenting with Syndicate/JS a bit easier, I’ve just dusted off an old idea: getting the compiler from JavaScript with Syndicate DSL extensions down to plain JavaScript to run in the browser.
It’s (relatively) simple. Load a few modules, perhaps via a CDN:
1
2
3
4
5
<script src="https://cdn.jsdelivr.net/npm/@preserves/core/dist/preserves.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@syndicate-lang/core/dist/syndicate.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@syndicate-lang/compiler/dist/syndicate-compiler.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@syndicate-lang/html/dist/syndicate-html.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@syndicate-lang/compiler/dist/syndicate-browser-compiler.js"></script>
Then, add <script type="syndicate">
tags with Syndicate/JS code in them:
1
2
3
4
5
<script type="syndicate">
spawn {
assert "Hello, world!";
}
</script>
The
syndicate-browser-compiler.js
script automatically translates such scripts into plain JavaScript:
1
2
3
4
5
6
<script>
const __SYNDICATE__ = Syndicate;
__SYNDICATE__.Turn.active._spawn(() => {
__SYNDICATE__.Turn.active.assertDataflow(() => ({ target: currentSyndicateTarget, assertion: "Hello, world!" }));
});
</script>
Here’s a small (live!) example, hosted at codepen:
See the Pen Standalone Syndicate/JS page, December 2023 by Tony Garnock-Jones (@leastfixedpoint) on CodePen.
It’s still too hard to get started with Syndicate, but this is at least a step in the right direction.
(Just in case the codepen goes away, here is the same example as a standalone webpage.)