How are the rules described? If EDN then I don't see the complication.
If the rules are actually ClojureScript then yeah, OK, but I think you
have bigger problems :-).

If you are using 'natural language' rules then I strongly recommend
taking a look at Instaparse which works client side as well. If you need
to persist the rules then either persist the source rules (i.e. the
string) or the intermediate transformation tree.

Maybe I don't understand the workflow, but I am failing to see why you
would want to hardcode the rules into the generated JS rather than have
the JS interpret the EDN rules at runtime?

-- 
  Colin Yates
  [email protected]

On Fri, 23 Sep 2016, at 04:17 PM, Simon Brooke wrote:
> This is probably not a problem that affects many people...
> 
> As I understand it, I cannot compile a function in ClojureScript and have
> it integrated into the current ClojureScript compiled image (if I'm
> wrong, please tell me so. I'd really, really like to be wrong).
> 
> I have a web app which allows people to write rules for a cellular
> automaton, and watch them run (you can see it here
> http://www.journeyman.cc/microworld/ if you're interested). The problem
> is that all the computation happens server side, so it doesn't scale. I
> need to move as much as possible of the computation to client side.
> 
> A key feature of the application is that users can edit the rules - in
> fact, they're encouraged to. That's what it's about. When the rules are
> edited they're compiled into Clojure functions, which then run.
> 
> I can move all the function of the application client side except (at
> this stage) compiling the rules. So I'm envisaging a version of the app
> which, when the user edits the rules, the parsing happens client side and
> any parser errors are shown to the user immediately, but when they decide
> to commit their changes, the generated Clojure text is sent back to the
> server, where it is compiled with the rest of the CLJC code into a new
> app.js JavaScript image and served back to the client. The state of the
> world can be cached in HTML5 local storage while this is being done.
> 
> The problem I see is this: if Alice and Bob are both using the system at
> the same time, both edit rules, I don't want Alice getting an image with
> Bob's rules in it (or vice versa). So I'm going to need to compile
> separate copies of app.js for each client that connects, and serve the
> right one to the right client.
> 
> Has anyone else tried anything like this? Did it work? What were the
> problems?
> 
> Cheers
> 
> Simon
> 
> -- 
> Note that posts from new members are moderated - please be patient with
> your first post.
> --- 
> You received this message because you are subscribed to the Google Groups
> "ClojureScript" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/clojurescript.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/clojurescript.

Reply via email to