Jeanluca Scaljeri
Jeanluca Scaljeri

Reputation: 29149

YUIDoc/javascript - how to document a module property

I've copied an example from here. Below is the example code, but the problem is that Store.TAX_RATE shows up in the documentation as a property of Item and not as a property of the module Store. Any suggestions why ?

Example code:

/**
  * This module contains classes for running a store.
  * @module Store
  */
var Store = Store || {};

/**
  * `TAX_RATE` is stored as a percentage. Value is 13.
  * @property TAX_RATE
  * @static
  * @final
  * @type Number
  */
Store.TAX_RATE = 13;


/**
 * @class Item
 * @constructor
 * @param name {String} Item name
 * @param price {Number} Item price
 * @param quantity {Number} Item quantity (the number available to buy)
 */
Store.Item = function (name, price, quantity) {
  /**
    * @property name
    * @type String
    */
  this.name = name;
  /**
    * @property price
    * @type String
    */
  this.price = price * 100;
  /**
    * @property quantity
    * @type Number
    */
  this.quantity = quantity;
  /**
    * @property id
    * @type Number
  */
  this.id = Store.Item._id++;
  Store.Item.list[this.id] = this;
 };

Upvotes: 2

Views: 1049

Answers (1)

Rene Saarsoo
Rene Saarsoo

Reputation: 13917

That's because according to YUIDoc terminology a module is just a collection of related classes, so it can't contain anything but classes.

What you could do instead is to document Store and Store.Item both as classes:

/**
 * This module contains classes for running a store.
 * @class Store
 */
var Store = Store || {};

/**
 * `TAX_RATE` is stored as a percentage. Value is 13.
 * @property TAX_RATE
 * @type Number
 */
Store.TAX_RATE = 13;

/**
 * @class Store.Item
 */
Store.Item = function (name, price, quantity) {
};

Upvotes: 2

Related Questions