jsdoc-tokenizer
Version:
Tokenize (Scan) JSDoc buffer
63 lines (50 loc) • 2.45 kB
Markdown
# jsdoc-tokenizer

[](https://github.com/SlimIO/is/commit-activity)



[](https://snyk.io/test/github/fraxken/jsdoc-tokenizer?targetFile=package.json)
[](https://travis-ci.com/fraxken/jsdoc-tokenizer)
Tokenizer (Scanner) for JSDoc. This project only operate on/with Node.js Buffer and Uint8Array (No conversion to String required).
## Requirements
- [Node.js](https://nodejs.org/en/) v10 or higher
## Getting Started
This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).
```bash
$ npm i jsdoc-tokenizer
# or
$ yarn add jsdoc-tokenizer
```
## Usage example
```js
const { scan, TOKENS } = require("jsdoc-tokenizer");
const it = scan(Buffer.from("/** @type {String} **/"));
for (const [token, value] of it) {
if (value instanceof Uint8Array) {
console.log(token, String.fromCharCode(...value));
}
else {
const tValue = typeof value === "number" ? String.fromCharCode(value) : value;
console.log(token, tValue);
}
}
```
## API
### scan(buf: Buffer): IterableIterator< [Symbol, Uint8Array | number] >
Scan (tokenize) JSDoc block. The scanner only take single instance of block (not build to detect start and end). To extract JSDoc block as buffer, please take a look at [jsdoc-extractor](https://github.com/fraxken/jsdoc-extractor).
### TOKENS
Available tokens are described by the following interface:
```ts
interface Tokens {
KEYWORD: Symbol,
IDENTIFIER: Symbol,
SYMBOL: Symbol
}
```
Tokens are exported in the module.
## Caveats
- There is a room for improvement on supporting more chars for Identifier (Some are not supported in tag).
- Example & Description tags are closed with `@` that must be preceded by `*\s`.
## License
MIT