Skip to content

Commit

Permalink
Merge pull request #1 from devolksbank/initial
Browse files Browse the repository at this point in the history
Initial version
  • Loading branch information
mdasberg authored Aug 30, 2017
2 parents 44f8ba2 + e3b5cef commit 7ed4b4b
Show file tree
Hide file tree
Showing 23 changed files with 1,402 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# ts sources
/lib
index.ts

# descriptors
@types
24 changes: 24 additions & 0 deletions @types/doctrine/doctrine.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// d.ts file for doctrine.
// Only the bare minimal has been declared here.
declare namespace doctrine {
export interface Comment {
description: string;
tags: Tag[];
}

export interface Tag {
title: string;
description: string;
type: Type;
}

export interface Type {
type: string;
name: string;
}
}

declare module 'doctrine' {
export function parse(code: string | Buffer, options: any): Comment;
}
export = doctrine;
20 changes: 20 additions & 0 deletions @types/espree/espree.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// d.ts file for espree.
// Only the bare minimal has been declared here.
declare namespace espree {
interface Comment {
value: string;
}
interface ParseOptions {
comments: boolean;
attachComment: boolean;
}
interface Ast {
comments: Comment[];
}
}

declare module 'espree' {
export function parse(code: string | Buffer, options: any): espree.Ast;
}

export = espree;
142 changes: 141 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,142 @@
# yadop
Yet Another Doc Parser
Yadop (Yet Another Doc Parser) is a [JSDoc](http://usejsdoc.org) parser that uses [Espree](https://github.com/eslint/espree) and [Doctrine](https://github.com/eslint/doctrine) to process your sources.

## Installation

You can install Yadop using [npm](https://npmjs.com):

```
$ npm install yadop --save-dev
```

## Usage

Require yadop inside of your JavaScript:

```js
var yadop = require("yadop");
```

#### JSDoc

In order to process the jsdoc you can execute the following:

```js
yadop.jsdoc.processor({
cwd: 'directory/containing/sources', // the source directory
pattern: '*/*.js' // the pattern
}).process();
```

#### NGDoc

In order to process the ngdoc you can execute the following:

```js
var comments = yadop.ngdoc.processor({
cwd: 'directory/containing/sources', // the source directory
pattern: '*/*.js' // the pattern
}).process();

var results = yadop.ngdoc.mapper().map(comments);
```

## Configuration

Both the yadop.jsdoc.processor and the yadop.ngdoc.processor are called with a configuration object.
This object contains the following attributes:

##### cwd
Type: `string`
Default: current working directory
Mandatory: false

The current working directory.

##### pattern
Type: `string`
Default: **/*.js
Mandatory: false

The file pattern.

##### ignore
Type: `string`
Default: []
Mandatory: false

The ignore patterns.

### Example

```js
{
cwd: 'directory/containing/sources', // the source directory
pattern: '*/*.js' // the pattern
}
```

## Available functions

#### yadop.jsdoc.processor
Type: `Function`
Param: `Configuration` The configuration object as seen above.
Returns: [doctrine](https://github.com/eslint/doctrine)Comment[]

Processes jsdoc for each file in the specified cwd.

#### yadop.ngdoc.processor
Type: `Function`
Param: `Configuration`
Returns: [doctrine](https://github.com/eslint/doctrine)Comment[]

Processes jsdoc for each file in the specified cwd but only containing the ngdoc tags.

#### yadop.ngdoc.mapper
Type: `Function`
Param: [doctrine](https://github.com/eslint/doctrine)`Comment[]`
Returns: [yadop](blob/initial/lib/ngdoc/model/module.ts)Module[]

Processes a [doctrine](https://github.com/eslint/doctrine)Comment[] and returns a [yadop](blob/initial/lib/ngdoc/model/module.ts)module[].

## Example
```json
[{ "name": "my-module" }, {
"name": "another-module",
"entities": [{
"name": "my-component",
"type": "component",
"attributes": [{
"name": "items",
"optional": false,
"description": "Some attribute",
"type": "Object[]"
}, {
"name": "items[].name",
"optional": true,
"description": "The (optional) name of the item",
"type": "string"
}, {
"name": "items[].value",
"optional": false,
"description": "The value of the item",
"type": "number"
}]
}, {
"name": "SomeService",
"type": "service",
"methods": [{
"name": "SomeService#sayWhat",
"description": "Says what.",
"params": [{ "name": "who", "description": "Who said it", "type": "string" }, {
"name": "when",
"description": "When to say"
}]
}, {
"name": "SomeService#welcome",
"description": "Say welcome",
"returns": { "name": "message The message", "type": "object" }
}]
}, { "name": "AnotherService", "type": "service" }]
}]
```
24 changes: 24 additions & 0 deletions index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import Configuration from './lib/configuration';
import Processor from './lib/processor';
import NgdocProcessor from './lib/ngdoc/ngdocProcessor';
import NgdocMapper from './lib/ngdoc/ngdocMapper';

(() => {
'use strict';

module.exports = {
jsdoc: {
processor: (configuration: Configuration) => {
return new Processor(configuration);
}
},
ngdoc: {
processor: (configuration: Configuration) => {
return new NgdocProcessor(configuration);
},
mapper: () => {
return new NgdocMapper()
}
}
}
})();
8 changes: 8 additions & 0 deletions lib/configuration.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/** Configuration information that is necessary for the processor to process docs. */
interface Configuration {
cwd?: string;
pattern?: string;
ignore?: string[];
}

export default Configuration;
6 changes: 6 additions & 0 deletions lib/ngdoc/model/attributeType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export interface AttributeType {
name: string;
description?: string;
type?: string;
optional: boolean;
}
10 changes: 10 additions & 0 deletions lib/ngdoc/model/entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import {Method} from './method';
import {AttributeType} from './attributeType';

export interface Entity {
name: string;
description?: string;
type?: string;
methods?: Method[];
attributes?: AttributeType[];
}
6 changes: 6 additions & 0 deletions lib/ngdoc/model/entityType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export enum EntityType {
COMPONENT = 0,
SERVICE = 1,
DIRECTIVE = 2,
FILTER = 3
}
10 changes: 10 additions & 0 deletions lib/ngdoc/model/method.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import {ReturnType} from './returnType';
import {ParamType} from './paramType';

export interface Method {
name: string;
description?: string;
returns?: ReturnType;
params?: ParamType[];
}

6 changes: 6 additions & 0 deletions lib/ngdoc/model/module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import {Entity} from './entity';

export interface Module {
name: string;
entities?: Entity[];
}
5 changes: 5 additions & 0 deletions lib/ngdoc/model/paramType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export interface ParamType {
name: string;
description?: string;
type?: string;
}
4 changes: 4 additions & 0 deletions lib/ngdoc/model/returnType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export interface ReturnType {
name: string;
type?: string;
}
Loading

0 comments on commit 7ed4b4b

Please sign in to comment.