jsdoctypeparser

Strict JsDoc type expression parser.

Jsdoc type parser

This module is Jsdoc type expression parser, it makes easy to publish a type name link by toHTML().

This parser provide:

  • Parse to object model
  • Convert a type name to a link by using toHtml()
var Parser = require('jsdoctypeparser').Parser;
var parser = new Parser();
var result = parser.parse('Array.<MyClass>=');
 
console.log(result.toHtml()); // ⇒ 'Array.&lt;<a href="MyClass.html">MyClass</a>&gt;|undefined' 
console.log(result.toString()); // ⇒ 'Array.<MyClass>|undefined' 

This parser can parse:

The live demo is available.

var Parser = require('jsdoctypeparser').Parser;
var parser = new Parser();
var result = parser.parse('Array.<MyClass>=');
  • result.toString()'Array.<MyClass>|undefined'

  • result.toHtml()'Array.&lt;<a href="MyClass.html">MyClass</a>&gt;|undefined'

You can change a file URL by set TypeBulder.TypeName.getUrlByTypeName(typeName).

var Builder = require('jsdoctypeparser').Builder;
Bulder.TypeName.getUrlByTypeName = function(typeName) {
  // do something. 
  return typeName;
}; 
var Parser = require('jsdoctypeparser').Parser;
var parser = new Parser();
var result = parser.parse('Array.<string|number, ?Object=>|string|undefined');

The result is:

{ // instanceof TypeBuilder.TypeUnion 
  optional: true,
  types: [
    { // instanceof TypeBuilder.FunctionType 
      parameterTypeUnions: [
        { // instanceof TypeBuilder.TypeUnion 
          types: [
            { name: 'string' }, // instanceof TypeBuilder.TypeName 
            { name: 'number' }  // instanceof TypeBuilder.TypeName 
          ]
        },
        { // instanceof TypeBuilder.TypeUnion 
          nullable: true
          optional: true
          types: [
            { name: 'Object' }  // instanceof TypeBuilder.TypeName 
          ]
        }
      ]
    }, { // instanceof TypeBuilder.TypeName 
      { name: 'string' }
    }
  ]
}
TypeName = {
  name: string
};
TypeUnion = {
  optional: boolean,
  nullable: boolean,
  variable: boolean,
  nonNullable: boolean,
  all: boolean,
  unknown: boolean,
  types: Array.<TypeName|GenericType|FunctionType|RecordType>
};
GenericType = {
  genericTypeName: string,
  parameterTypeUnions: Array.<TypeUnion>
};
FunctionType = {
  parameterTypeUnions: Array.<TypeUnion>,
  returnTypeUnion: TypeUnion|null,
  isConstructor: boolean,
  contextTypeUnion: TypeUnion|null
};
RecordType = {
  entries: Array.<RecordEntry>
};
 
RecordType.Entry = {
  name: string,
  typeUnion: TypeUnion
};

This script licensed under the MIT. See: http://orgachem.mit-license.org