What about a simple property? readFile.documentation = { name: 'readFile', arguments: [ { name: 'path', type: 'string' }, { name: 'encoding', type: 'string', optionnal: true }, { name: 'callback', type: 'function' } ], description: 'Reads a file and calls the provided callback with the content of the file as first argument.' }; function readFile( path, encoding/*?*/, callback ) { var length = arguments.length; if ( length <= 1 ) { throw new TypeError( ); } else if ( length <= 2 ) { callback = encoding; encoding = 'utf-8'; } // do some stuff console.log( path, encoding, callback ); }
And that would also work on objects: var API = { documentation: { name: 'API', properties: [ { name: 'url', type: 'string', description: 'The current url.'; }, { name: 'goToGoogle', type: 'function', description: 'Change current url to Google.' } ] }, url: '', goToGoogle: function ( ) { this.url = 'http://www.google.com/'; } }; On Mon, Sep 5, 2011 at 5:40 PM, Andreas Rossberg <rossb...@google.com> wrote: > On 5 September 2011 16:12, Dmitry > Soshnikov <dmitry.soshni...@gmail.com> wrote: >> >> On 05.09.2011 13:26, Andreas Rossberg wrote: >> >> I am indifferent about the general idea of a doc interface, >> >> Then I don't think incorrect judging about the concept of an "abstraction" >> is a good topic in this thread (you may open a new one). Abstraction is >> about _abstraction_, it's not about "security". Especially in the >> interpreted dynamically typed language with embedded reflection. >> Abstractions are for programmers. Not for "hackers". > > Well, properly maintaining language-level abstractions is a prerequisite for > security, but security is by no means the only reason to want abstraction. > Reliability and modularity are others (and the ones that I personally care > about even more). In any case, I don't think you want to introduce or bless > another feature that interferes badly with either of these concerns -- it's > almost guaranteed to lead to legacy that will cause a big headache later. > >> >> but: having to peek at the _implementation_ of something (which is what >> toString does) in order to gather its _interface_ description sounds like a >> fundamental violation of basic principles and exactly the wrong way to go >> about it. >> >> Fundamental principle of an abstraction, once again, is _the abstraction_. >> That is, to provide convenient black box with API hiding implementation >> details. > > I was specifically referring to the separation of interface and > implementation. Documentation is interface description, intended to avoid > having to look at the implementation. Wouldn't it be ironic if the mandatory > way to get to it was by looking at the implementation? > /Andreas > > _______________________________________________ > 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