Thanks Raul I was thinking of running JHS in a chroot with a mbox sandbox
http://www.cyberciti.biz/faq/unix-linux-chroot-command-examples-usage-syntax/ http://pdos.csail.mit.edu/mbox/ I have it running here if someone wants to poke around and try and gently do something not-nice (I would still need to limit CPU intensive and memory intensive tasks) http://csilo.com:65001/jijx It gives the illusion of writing files but it won't actually write the files to disk On Wed, Jun 25, 2014 at 3:11 PM, Raul Miller <[email protected]> wrote: > You might want to use 0!:0 instead of ". in some cases. > > 0!:0 handles newlines gracefully, but has a result of i.0 0 > > This suggests that you might simplify your markup - if an eval string > contains a newline, use ,0!:0 otherwise use ". > > (This means you would only need one pair of delimiters). > > You might also want to think about error handling. Especially if you are > thinking of putting this in a public-facing web server. > > (J interpreter needs battle hardening before it would be suited in that > role. If nothing else: it should compile without error or warning on > OpenBSD and succeed on all the acceptance tests -- everything in > https://github.com/openj/core/tree/master/test except the ones ending in > t.ijs.) > > Thanks, > > -- > Raul > > > > On Tue, Jun 24, 2014 at 5:42 PM, Joe Bogner <[email protected]> wrote: > > > I was browsing http://www.jsoftware.com/jwiki/Literate and became > > motivated > > to start working on a basic implementation of the Workbook concept > > > > The terseness of J is a good fit for an embedded language in a larger > text > > document or report (along the lines of ipython notebook) or rmarkdown. > > > > I envision a web page that allows a document to be rendered that > includes a > > markup like: > > > > {{{ > > NB. commands to set up the document > > load 'data.ijs' > > loadData'' > > }}} > > # Summary > > There are {{ # Customers }} customers and {{ # Orders }} orders. The most > > recent order was {{ {. Order }} > > > > # Top Customers > > {{ renderTable 10 { Customers }} > > > > Here is the start of my implementation. I welcome any feedback on it. > > > > require 'regex' > > PATTERN =. '\{\{.*?\}\}' > > SUBPATTERN =. '\{\{(.*?)\}\}' > > parse =. 3 : 0 > > matches =. PATTERN rxmatches y > > ret =. matches rxcut y > > ( 0 ~: > # each ret ) # ret > > ) > > eval =. 3 : 0 > > m=.SUBPATTERN rxmatches y > > if. 0 = # m do. > > y > > else. > > ret =. {. ": ". > 1{"1 ( m rxfrom y) > > end. > > ) > > > > template =: 3 : 0 > > ret=. eval each parse y > > ; ( 0 ~: > # each ret ) # ret > > ) > > > > tests=: 3 : 0 > > assert. '1+1 is 2' -: template '1+1 is {{1+1}}' > > assert. 'hello joe' -: template 'hello {{''''[a=:''joe''}}{{a}}' > > a=:i.10 > > assert. 'the first number is 0' -: template 'the first number is {{{. > a}}' > > assert. 'the tail number is 9' -: template 'the tail number is {{{: a}}' > > people=: 'bob';'frank' > > tmpl=:template 'the people are {{}: }: ; (],&'', '') each ''Mr. ''&, each > > people }}' > > assert. 'the people are Mr. bob, Mr. frank' -: tmpl > > ) > > tests'' > > > > > > After more searching, it has some overlap with JHP ( > > > > > http://www.jsoftware.com/wsvn/addons/trunk/web/jhp/?#a76117735fae0ef49b3a78a3c9520a2c9 > > ). > > My template implementation might be more straightforward to use > > standalone. In any event, more choices the better. > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
