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

Reply via email to