Sorry. Small correction:

callback["Run My Code Please"] =  begin
    println("Ok! I will run your code.")
    # Your code here.
end

should be (of course):

callback["Run My Code Please"] =  () -> begin
    println("Ok! I will run your code.")
    # Your code here.
end

On Thursday, January 7, 2016 at 5:25:45 PM UTC+8, Eric Forgy wrote:
>
> Hi,
>
> Yesterday, I posted a link to a new package StringInterpolation 
> <https://groups.google.com/d/msg/julia-users/3IRDXQgb34g/9Uht7g8PAQAJ>. 
> That was a warmup for this one :)
>
> JuliaJS started life as PlotlyJS 
> <https://groups.google.com/d/msg/julia-users/ix5fxt68rwM/NaIUGk0MCQAJ> 
> providing 
> an interface from Julia to the recently open-sourced plotly.js 
> <https://plot.ly/javascript/>. By the time I finished PlotlyJS, there 
> wasn't really much "Plotly"-specific about it and I changed the name to 
> make way for Spencer's cool PlotlyJS package 
> <https://github.com/spencerlyon2/PlotlyJS.jl> (which I think these two 
> packages can work happily together btw).
>
> JuliaJS is HEAVILY inspired by the awesome Blink 
> <https://github.com/JunoLab/Blink.jl> package, but there is no dependence 
> on Atom/Electron.
>
> One thing I like about JuliaJS, other than being able to use string 
> interpolation with JS commands, is the ease at which the two-way 
> communication works. For example, you can define a callback in Julia like 
> so:
>
> callback["Run My Code Please"] =  begin
>     println("Ok! I will run your code.")
>     # Your code here.
> end
>
> Then, on the JavaScript side:
>
> JuliaJS.message("Run My Code Please")
>
> and guess what it does? :)
>
> I'm still learning Julia so I'm sure there are plenty of bugs and a ton of 
> ways to do things better, so feedback, issues, PRs are most welcome. 
>
> From the README:
>
> https://github.com/EricForgy/JuliaJS.jl
>
> Warning: This package is still very early in development. Feedback, issues 
> and PRs are most welcome.
>
> *JuliaJS.jl*
>
> This is simple package that allows Julia to interact with JavaScript in a 
> browser.
>
> *Installation*
>
> JuliaJS is not registered and it requires another unregistered package: 
> StringInterpolation. To install, you'll need to run the following commands:
>
> julia> Pkg.clone("https://github.com/EricForgy/StringInterpolation.jl.git";
> )
> julia> Pkg.clone("https://github.com/EricForgy/JuliaJS.jl.git";)
>
> *Usage Example:*
>
> After installation, running the following from the Julia REPL
>
> julia> using JuliaJS
> Listening on 0.0.0.0:8000...
>
> will start an HttpServer. Open your browser to http://localhost:8000/julia 
> and you should see a blank page with "JuliaJS" in the browser tab.
>
> With the browser open, run the following:
>
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
>
> If the stars are aligned, you should see several sample charts appear in 
> the browser window.
>
> *Notes:*
>
> *Interpolation*
>
> The non-standard string literal `js` supports interpolation, but at the 
> moment, the Julia expression needs to be enclosed in parentheses, e.g. 
> instead of
>
> julia> msg = "Hello World"
> julia> js"""
> console.log("$msg")
> """
>
> you will need to enclose `msg` in parentheses as illustrated below:
>
> julia> msg = "Hello World"
> julia> js"""
> console.log("$(msg)")
> """
>
> *WebSockets*
>
> JuliaJS creates an active link between Julia and your browser via 
> WebSockets so you can update your charts from Julia without reloading the 
> page. To see this, try rerunning the above example several times:
>
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
> julia> include(Pkg.dir("JuliaJS","examples","plotly.jl"))
>
> Each time you run from the REPL, the charts are updated without having to 
> reload.
>
> A fun artifact of using WebSockets is that you can "broadcast" your charts 
> to several browsers and they will all get updated interactively. Here is a 
> silly 
> video <https://www.youtube.com/watch?v=mWDyyfVNqP0> demonstrating three 
> browsers (including an iPhone) with charts being interactively controlled 
> from the Julia REPL.
>

Reply via email to