On 03.09.2011 22:53, Allen Wirfs-Brock wrote:

On Sep 2, 2011, at 3:29 PM, Irakli Gozalishvili wrote:


https://github.com/Gozala/doc


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.

Ah, come ooooon! >_* Are we here talking about a "coolness"?

Seems we started from the beginning that we have some _problems_ that: (1) `toString` is not standardized and (2) a consequence from (1) -- some engines removes some code-parts from sources at toString representation. We started the thread that we have the _issue_ of the topic and that even though we may use some _hacks_ for such _toy ad-hoc_ implementations, still these implementations are nevertheless stay _toys_ -- as a quick prototype -- to show a proposed feature. We started from that it would be great to have such a thing available at _lower_ level.

We also said that _exact syntax_ and similar "coolness" is not a main part of the proposal. That the ability to have the thing _embedded_ and to get the help in the _consistent_ way -- is the main part.

From all this, I'd already better propose to standardize then `toString` of functions. _Then_ you may organize some "competitions" or a "cool" syntax in a "JavaScript derived" way. But this is completely different story. However, even from this viewpoint it's more practical to chose the solution which is here for years -- i.e. the syntax of JavaDocs, which, once again, will turn-on the documentation for tones of old code.

If the `toString` will be standardized, we may easily implement the solution as a runtime library (though, good bye documenting of built-ins!). If not, the only consistent and efficient behavior -- is to have it as a pre-processor and to inject the doc-comment to AST for function declarations.

May I at least ask, whether it makes sense to talk about `toString` standardization? (because unfortunately this topic doesn't move forward as I see -- don't want to have the docs for built-ins? -- as you wish, I just proposed; though, ES don't even have a big standard library to provide a detailed built-in documentation).

(don't get me wrong, I'm just trying to clarify the main goal of the proposal; and for a library, standardizing of `toString` would be enough and we may just close the topic)


I have a couple of thoughts  to throw in.

The documentation description doesn't need to be a single structured string. It could also be something like:

   function sum(x, y) {

    doc: {
          name: "sum";
          parameters: {
                x: "first value to sum"; expected: "Number";
                y: "second value to sum"; expected: "Number";
          }
          returns: "Number";
          description: "Compute the sum of two numbers";
          docUrl: "http://maysite.com/myapp/designDoc.html#sum";;
    }

    return x + y;

   }

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.


Yes, for a runtime library seems an elegant solution. Though, again, it will be hard to force people just stop using the doc-style they are used to use and to switch them to package-description style in a "JSON" format. Though, I agree that this version looks nice. But, again -- the original proposal wasn't about it, because we _had_ (before starting the topic) working hacks that the runtime lib "just works". But nobody needs hacks. Everybody wants a convenient documentation syntax for which there are already many parser of the auto-docs generations.

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.

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.


So, can we just standardize `toString` instead?

Dmitry.

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.

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.

Allen



_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to