2011-11-09 14 views
31

JSDoc-toolkit kullanarak kodumu belgelemeye çalışıyorum. Kodum kendiliğinden yürüten bir anonim işlevle sarılmış olarak başlar. Bunu nasıl belgeleyeceğim? Bütün gün bunun üzerinde harcadım. JS Docs, anonim işlevinin kapanmasıyla ilgili ne yapacağını bilmemesi nedeniyle herhangi bir şeyi tanımayacaktır. Bu kırılıyor ve yorumların hiçbiri ortaya çıkıyor.jsdoc-toolkit ile anonim işlevler (kapama) nasıl belgelenir

Kodum şunun gibi görünüyor.

/** 
* @fileoverview BLA BLA BLA 
*/ 

/** 
* This is where I don't know what to put. 
*/ 
(function() { 
    "use strict"; 

    /** or here */ 
    var stlib = function (param, param, param) { 
     /** or here */ 
     var share = { 
      /** or here */ 
      config: { 
       button: DOM Element, 
       property: blablabla 
      }, 

      init: function() { ...some init code here} 
     }; 

     share.init(); 
    }; 

    widgets.add("share", stlib); 
}()); 

Teşekkür ederiz!

+0

Çünkü JSDoc tamamen java-ismidir ve JavaScript'e uymaz. Sadece mantıklı yorumlar yazmak yerine – Raynos

+0

Teşekkür ederim, rjmunro. Katılıyorum. Ben de çok yerel olduğunu düşünmedim. Ancak, o zamandan beri belgeler için Docco'ya geçtim. jashkenas.github.com/docco/ –

cevap

4

Böyle @name ve @lends ile @namespace kullanabilirsiniz:

/** 
* @name MyNamespace 
* @namespace Hold all functionality 
*/ 
(function() { 
    "use strict"; 
    /** @lends MyNamespace*/ 
    var stlib = function (param, param, param) { ...All of my code...}; 
}()); 
+0

Özür dilerim. Bu, yapmaya çalıştığım şeyi gerçekten cevaplamadı. Kod snippet'ini daha fazla bilgi ile güncelledim. Cevabınız için teşekkürler! –

+0

Javascript'te ad alanı yok. Yapı bile mantıklı değil – Raynos

+3

@Raynos Dilde olmayan fark nedir? Bunlar [in] (http://code.google.com/p/jsdoc-toolkit/wiki/TagNamespace) jsdoc'tur. Belki de anlambilimsel olarak doğru değil, ama yazdıklarım işe yarıyor. – Microfed

4

doğrudan iç içe işlevleri belge olamaz. Ama böyle bir şey yapabilirsiniz: Ben (iç içe fonksiyonlar tarif edilemez çünkü) checkString özel olarak ve açıklayıcı olmaya ayarlıyorum İşte

/** 
* @module foobar 
*/ 

/** 
* @function 
* @author Baa 
* @name hello 
* @description Output a greeting 
* @param {String} name - The name of the person to say hello 
*/ 
(function hello(name) { 
    /** 
    * @function 
    * @author Baz 
    * @inner 
    * @private 
    * @memberof module:foobar 
    * @description Check if the argument is a string (see: {@link module:foobar~hello}) 
    * @param {String} string - The string 
    * @returns {String} Returns true if string is valid, false otherwise 
    */ 
    var isString = function checkString(string) { return typeof string === 'string'; }; 
    if (isString(name)) 
     console.log('Hello ' + name + '!'); 
}('Mr. Bubbles')); 

, Ve sonra hiç -p geçmek özel işlevler. Son olarak, başvuru için ana işleve bir bağlantı ekliyorum.

Sanırım jsdoc gereksiz yere çok iyi ve daha iyi bir şeyle değiştirilmesi gerekiyor. Bu bir javadoc portu, bu yüzden Java ile alakalı ama JS ile ilgili pek çok şey var, ve tam tersi. veya iç içe geçmiş işlevleri gibi çok sık kullanılan JS deyimleri vardır, belgelemek zor veya imkansızdır.

--explain bayrağını kullanarak her zaman namepath'larımı ve hata ayıklamasını denetlerim.

İlgili konular