<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Sep 2, 2011, at 3:29 PM, Irakli Gozalishvili wrote:</div><br><blockquote type="cite">
                <div><div><br></div><div><a href="https://github.com/Gozala/doc">https://github.com/Gozala/doc</a> </div></div><div><br></div></blockquote><div><br></div><div>I want to second Brendan on the coolness of this.  It really is a JavaScript derived solution rather than simply copying what somebody else did for some other language.</div><div><br></div><div>I have a couple of thoughts  to throw in.</div><div><br></div><div>The documentation description doesn't need to be a single structured string.  It could also be something like:</div><div><br></div><div>   function sum(x, y) {</div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>doc: {</div></div><div><div>      name: "sum";</div></div><div><div>      parameters: {</div></div><div><div>            x: "first value to sum"; expected: "Number";</div></div><div><div>            y: "second value to sum"; expected: "Number";</div></div><div><div>      }</div></div><div><div>      returns: "Number";</div></div><div><div>      description: "Compute the sum of two numbers";</div><div>      docUrl: "<a href="http://maysite.com/myapp/designDoc.html#sum">http://maysite.com/myapp/designDoc.html#sum</a>";</div></div><div><div>}</div></div></blockquote><div><div>      </div></div><blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>return x + y;</div></div></blockquote><div><div>   }<br></div><div><br></div><div>This doc blocks looks something like an object literal but is really composed of  nested labelled blocks and statements.  However, it would be pretty easy to translate such a structure into a JSON object structure.</div><div><br></div><div>Whether a string or a structured labeled block is used, if we hope for multiple tools and IDEs to support it then somebody needs to propose and promote a specific documentation schema.</div><div><br></div><div>Oliver is correct that you can't depend upon Function.prototype.toString actually reproduce such a structure, but it is a pretty good fallback source for a runtime tool to try when it can't find the documentation anywhere else.</div><div><br></div><div>Earlier in this thread I was stressing that it is desirable to make it impossible for application logic to have dependencies upon such metadata. This approach satisfies that requirement.  In fact, if this convention was established I would expect minimizers to strip out any such documentation.</div><div><br></div><div>Given that you can't depend upon the documentation to be in the actual downloaded source code runtime tools need a convention for finding the documentation.  I suggest above that  such a documentation block could easily be translated into JSON.  Such a convention might be something like that given a executed file located at "http:somepath/foo.js" or "http:somepath/foo.min.js" the file "http:somepath/foo.js.doc.json" contains the documentation objects for the file.  Of source, someone needs to write a documentation extractor to produce such files.</div><div><br></div><div>Allen</div><div><br></div><div><br></div></div></body></html>