Skip to content

Repository files navigation

view on npmnpm module downloads per monthBuild StatusDependency Status

jsdoc-parse

Jsdoc-annotated source code in, JSON format documentation out.

Essentially, the output is the raw JSON output of jsdoc with a few extras:

  • Support for html input files (see --html option).
  • Support for new tags in the input javascript
    • @category <string>: Useful for grouping identifiers by category.
    • @done: Used to mark @todo items as complete.
    • @typicalname: If set on a class, namespace or module, child members will documented using this typical name as the parent name. Real-world typical name examples are $ (the typical name for jQuery instances), _ (underscore) etc.
    • @chainable: Set to mark a method as chainable (has a return value of this).
  • Some new fields:
    • id: a unique identifier (the jsdoc longname field is not guaranteed unique)
    • isExported: set to true on the identifier which is exported from a module.
    • todoList: A list.
    • typicalname
    • category
    • order: The sort position of the identifier in the source file. Useful for use in --sort-by expressions.
  • A separate constructor record. In jsdoc, the class and constructor information are contained within the same record. In jsdoc-parse, the constructor information is separated from the class into a record with kind "constructor".

Synopsis

Simple example

$ echo "/** a wonderful global */ var majestic = true;" | jsdoc-parse
[
{
"id": "majestic",
"longname": "majestic",
"name": "majestic",
"scope": "global",
"kind": "member",
"description": "a wonderful global",
"order": 0
}
]

Longer example

This input javascript:

/**Pump an idiot full of volts. Returns a promise they will slump. @deprecated@param {object | array} - the victim(s) to fry@param [crazyHair=true] {boolean} - optional spikey hair effect@return {external:Promise}@resolve {Slump}*/functiontaze(victim,crazyHair){}

returns this JSON:

$ jsdoc-parse example/function.js
[
{
"id": "taze",
"longname": "taze",
"name": "taze",
"scope": "global",
"kind": "function",
"description": "Pump an idiot full of volts. Returns a promise they will slump.",
"params": [
{
"type": {
"names": [
"object",
"array"
]
},
"description": "the victim(s) to fry",
"name": "victim"
},
{
"type": {
"names": [
"boolean"
]
},
"optional": true,
"defaultvalue": true,
"description": "optional spikey hair effect",
"name": "crazyHair"
}
],
"returns": [
{
"type": {
"names": [
"external:Promise"
]
}
}
],
"deprecated": true,
"customTags": [
{
"tag": "resolve",
"value": "{Slump}"
}
],
"order": 0
}
]

HTML input example

This input HTML:

<!DOCTYPE html><html><head><script>/** something in the head@type {number} */varheadGlobal=1;</script></head><bodyclass="main"><script>/** body global@type {string}@default */varbodyGlobal="one";</script></body></html>

produces this JSON output:

$ jsdoc-parse example/doc.html --html
[
{
"id": "headGlobal",
"longname": "headGlobal",
"name": "headGlobal",
"scope": "global",
"kind": "member",
"description": "something in the head",
"type": {
"names": [
"number"
]
},
"order": 0
},
{
"id": "bodyGlobal",
"longname": "bodyGlobal",
"name": "bodyGlobal",
"scope": "global",
"kind": "member",
"description": "body global",
"type": {
"names": [
"string"
]
},
"defaultvalue": "one",
"order": 1
}
]

Install and use

Compatible Platforms

Tested on Mac OSX, Linux, Windows 8.1 and Windows XP.

As a command-line tool

Useful for quick access to the data..

$ npm install -g jsdoc-parse
$ jsdoc-parse --help
jsdoc-parse
Jsdoc-annotated source code in, JSON format documentation out.
Usage
$ jsdoc-parse <files>
$ cat <files> | jsdoc-parse
--private Include identifiers marked @private in the output
--stats Print a few stats about the doclets parsed
--html Enable experimental parsing of .html files
--src <array> A list of javascript source files or glob expressions
-s, --sort-by <array> Sort by one of more fields, e.g. `--sort-by kind category`. Defaults to 'scope kind'.
-h, --help

Usage form 2 warning: When piping input into jsdoc-parse it will intepret the whole of what is piped in as a single file, so take care not to pipe in input containing multipe @modules as this is illegal in jsdoc (see here):

The @module tag marks the current file as being its own module. All symbols in the file are assumed to be members of the module unless documented otherwise.

As a library

For use within your node.js app.

$ npm install jsdoc-parse --save

##API Reference Exports a single function to parse jsdoc data.

Example

varparse=require("jsdoc-parse");

jsdocParse([options]) ⇒ TransformStream

Documented javascript source in, documentation JSON out.

Kind: Exported function
Params

Example

parse({src:"lib/jsdoc-parse.js"}).pipe(process.stdout);

jsdocParse~ParseOptions

All options for jsdoc-parse, including defaults

Kind: inner class of jsdocParse

parseOptions.src : string | Array.<string>

A list of javascript source files (or glob expressions) to parse for documentation. If this option is not set jsdoc-parse will wait for source code on stdin (i.e. cat *.js | jsdoc-parse <options>).

Kind: instance property of ParseOptions
Example

varparse=require("jsdoc-parse");varfs=require("fs");// either supply one or more file namesparse({src: "example.js"}).pipe(process.stdout);// or pipe in source codefs.createReadStream("example.js").parse().pipe(process.stdout);

parseOptions.private : boolean

Include identifier documentation marked as @private in the output

Kind: instance property of ParseOptions
Default: false

parseOptions.stats : boolean

Print a few stats about the doclets parsed

Kind: instance property of ParseOptions

parseOptions.html : boolean

Enable experimental parsing of .html files.

Kind: instance property of ParseOptions
Default: false

parseOptions.sort-by : array

Sort by one of more fields, e.g. --sort-by kind category. Pass the special value none to remove the default sort order.

Kind: instance property of ParseOptions
Default: ["scope","category","kind","order"]


© 2015 Lloyd Brookes <75pound@gmail.com>. Documented by jsdoc-to-markdown.

About

parses jsdoc documentation from javascript or html files, outputs JSON

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages