One thing missing from reply's clojuredocs integration is the ability to have a local cache of the examples. Currently, we're just making an API call every time (using the clojuredocs-client library), which is great for getting off the ground and for having the latest examples, but not so great for offline work and speed.
I talked very briefly about this at Clojure/West with Lee Hinman (author of clojuredocs-client) and Zack Kim (of clojuredocs fame), and it sounded like they're open to this idea and even have ideas about how it might work. I'm not sure whether it's big or interesting enough for a GSOC project, or even which projects would be involved, but it's certainly something I'd like to have. On Mon, Mar 26, 2012 at 9:09 AM, David Nolen <dnolen.li...@gmail.com> wrote: > Zack, > > Having examples in the Clojure source has come up before and it's probably > not going to happen. Also the repl-y project that is now integrated into > lein 2 has this functionality. However I think you're on an interesting > track as far as how Mathematica works. I don't think anyone has tackled a > rich interactive REPL with good integrated graphics support (that is also > interactive). I recall that Chas Emerick and others were interested in this. > > David > > On Sat, Mar 24, 2012 at 11:10 AM, Zack Maril <thewitzb...@gmail.com> wrote: >> >> Goal of project: Extend (or fork) autodoc such that it can create and run >> interactive documentation for any project. >> >> Example for the take function: >> >> >> take >> >> function >> >> Usage: (take n coll) >> >> Returns a lazy sequence of the first n items in coll, or all items if >> there are fewer than n. >> >> Example: >> <textarea> (take 10 (range 20))</textarea> <button> Eval!</button> >> Output: >> [0 1 2 3 4 5 6 7 8 9] >> Added in Clojure version 1.0 >> And then the user could change the code in the browser, it would be sent >> off to the server, and the new user would get the answer back: >> Example: <textarea> (take 5 (range 20))</textarea> <button> Eval!</button> >> Output: [0 1 2 3 4] >> >> To make this work, autodoc would need to be extended in two major ways: >> 1. When generating the html, autodoc would look for metadata within >> each definition. If it found :examples within the data, then it would add in >> a number of <textarea> elements and eval buttons prefilled with the given >> examples. >> Example definition: >> (defn take >> >> "Returns a lazy sequence of the first n items in coll, or all items if >> there are fewer than n." >> {:added "1.0" >> :static true >> :examples ['(take 5 (range 10)),'(take 3 (drop 5 (range 1 11)))]} >> [n coll] >> (lazy-seq >> (when (pos? n) >> (when-let [s (seq coll)] >> (cons (first s) (take (dec n) (rest s))))))) >> >> 2. Have it ship with a webserver that runs something similar to tryclojure >> and has all of the routes set up for the documentation to work >> automagically. A very basic use of clojail. An interesting challenge would >> be finding a way to get outputs besides text to work (things like charts >> for incanter). >> >> Conceptually, this isn't too hard to imagine as a project. The main brunt >> of the work would be writing all of the examples for each project. Even >> then, there are a ton of examples on clojuredocs.org that are under the EPL >> license. Having interactive documentation would be pretty cool though. The >> only place I have seen it so far has been in Mathematica, and that was only >> after you bought the program. If people are interested in this being made, >> I'll be the first to volunteer as a student. >> >> Would people be interested in this as a project for GSOC? >> -Zack >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en > > > -- > You received this message because you are subscribed to the Google Groups > "Clojure Dev" group. > To post to this group, send email to clojure-...@googlegroups.com. > To unsubscribe from this group, send email to > clojure-dev+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/clojure-dev?hl=en. -- Colin Jones @trptcolin -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en