Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

doc-parser

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

doc-parser

Parses docblocks comments

  • 0.4.9
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
65
increased by58.54%
Maintainers
1
Weekly downloads
 
Created
Source

DocBlock & Annotations Parser

npm version Build Status Coverage Status XO code style Gitter

This library is a javascript LALR(1) parser that parses docblocks and extracts annotations under an structured syntax tree.

Install

npm install doc-parser --save

And simple usage :

var DocParser = require('doc-parser');
var reader = new DocParser();
var data = reader.parse('/** @hello world */');

Supported syntaxes

/**
 * Some description
 * @return boolean
 * @return map<string, SomeClass>
 * @author Ioan CHIRIAC <me@domain.com>
 * @throws Exception
 * @deprecated
 * @table('tableName', true)
 * @table(
 *   name='tableName',
 *   primary=true
 * )
 * @annotation1 @annotation2
 * @Target(["METHOD", "PROPERTY"])
 * @Attributes([
 *   @Attribute("stringProperty", type = "string"),
 *   @Attribute("annotProperty",  type = "SomeAnnotationClass"),
 * ])
 * @json({
 *   "key": "value",
 *   "object": { "inner": true },
 *   "list": [1, 2, 3]
 * })
 * <node>
 * Some inner multi line content
 * </node>
 */

AST structure

{
  kind: 'doc',
  summary: 'Some description retrieved from the first line of the coment',
  body: [
    {
      kind: 'return',
      type: 'void',
      description: 'Some extra informations'
    }
  ]
}

Declaring custom doc blocks

By default, doc-parser supports @return,@param,@throws and @deprecated doc blocks.

You can extend the support to any doc block :

// lets handle @global (type) (var) (description)
var DocParser = require('doc-parser');
var reader = new DocParser({
  'global': [
    {
      property: 'type',
      parser: 'type',
      optional: true
    },
    {
      property: 'what',
      parser: 'variable',
      optional: true
    },
    {
      property: 'description',
      parser: 'text',
      optional: true,
      default: ''
    }
  ]
});
var data = reader.parse('/** @global string some description */');

This will result in a new kind of doc block with the specified properties. Here a list of supported parsers :

  • type : a simple type, class name, or array of types
  • variable : a variable name
  • text : a line of text (will eat every token until the current line ends)
  • version: a semantic version
  • array : an array of items
  • object : a json object definition
  • boolean : a boolean
  • number : a number (integer or float)
  • string : a simple or double quoted text

Misc

This library is released under BSD-3 license clause.

Keywords

FAQs

Package last updated on 16 Feb 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc