-
Notifications
You must be signed in to change notification settings - Fork 9
API Docs Syntax
To document the project we use ngdoc. ngdoc uses showdown which is a markdown implementation for most of the documentation.
You can find syntax instructions here:
showdown syntax guide
(see combox on right hand corner for syntax guide).
Wrap your code samples in
<pre></pre>
The syntax for links is as follows: the format is the link directive followed by the actual url and the name to display.
* External Link - {@link http://angular-ui.github.com/ng-grid/ ngGrid}
* Internal link - Internal: {@link pl.directive:plEntityGrid plEntityGrid}
you have two options to document with ngdoc:
create a guide by creating a document in the ui/docs/guide folder with the ngdoc extension
The guide has to contain the following header followed by a blank line:
@ngdoc overview
@name
@description
you only have to change the guide name in the header. change anything else and you will not get documentation...
###Adding images to your guides
Adding images uses standard img elements.
Add the image to ui/docs/img/<your guide name>/ and reference it like so:
<img src="img/<guide name>/<image_name.ext>" alt="<alt text goes here>" />
ngdocs has several attributes that can be used in any context and are global. They are listed below:
/**
*@ngdoc // the type of the documentation object being created.
*@name .: // the name attribute is created differently for different types
*@param {||} // you can have multiple param attributes per diretive
*@param {type1=} - //adding a trailing equals sign to the the param attribute make the param optional
*@description //Any element can have a description element that start int he line after the description attribute. It can be as long as need and supports showdown /html.
*
*/
To document a directive you need to create the following header in your Javascript file:
/** * @ngdoc directive // Mark the object as a directive * @name pl.directive:entityPage //start with the module name. the second part is always directive. the directive name goes after the the column * @restrict 'AC' //the elements the directive is restricted to. * @element ANY //will create a usage example combined with restrict * @priority 1000 //The higher the priority the sooner the directive gets compiled. * @scope //add this attribute if you create a scope in your directive. **/
Documenting services starts very similar to documenting a directive. We create the initial ngdoc directive
/** * @ngdoc service //Mark the object as a service. * @name pl.myService // Provide the module and the service name * @requires $rootScope // provide any dependencies. you can have multiple @requires lines **/
Documenting filters is almost like documenting a function:
/** * @ngdoc filter * @name .filter: // middle part is always filter * @function // all filters are a function * */
You can decorate your services' public methods
/**
* @ngdoc method
* @name pl.service#method //.#
* @methodOf ng.service // .
* @returns {string} What do I return // return type and description
*/
You can decorate your object properties
/**
* @ngdoc property
* @name .# //the name after the hash is important
* @propertyOf . // the same part as above other than the hash
* @returns {} //required for a property.
*/
Properties can also use a simplified annotation. Properties can be defined as part of the of the main object decleration. Do not use.
/**
* @property {} //Property description can be multiple line and supports showdown
**/
/** * @ngdoc event * @name .# //the name after the hash is important * @eventOf . // the same part as above other than the hash * @eventType on // **`on`** is a keyword you can choose to either emit or broadcast on the target */