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.<<a href="MyClass.html">MyClass</a>>|undefined'
console.log(result.toString()); // ⇒ 'Array.<MyClass>|undefined'
This parser can parse:
- JsDoc type expressions
foo.bar
,String[]
- Closure Compiler type expressions
Array.<string>
,function(this: Objext, arg1, arg2): ret
- Nested type expressions
Array.<Array.<string>>
,function(function(Function))
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.<<a href="MyClass.html">MyClass</a>>|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