Home

Awesome

Lehre

build

Lehre is document block generator.

Generate JsDoc style document from source code.

Install

yarn add -D lehre

Usage

cat src/app.ts | lehre --stdin

Specify directory and ignore patterns.

lehre --target-dir=./src --ignore-patterns="spec.ts"

Specify file.

lehre --target-file=./src/app.ts

Use babel parser(default parser is TypeScript compiler api and recommend to use)

lehre --target-file=./src/app.ts --parser=babel
$ ./lehre --help
Usage: lehre [options]

Options:
  -v, --version                 output the version number
  -t, --target-file [path]      Path to target file.
  -d, --target-dir [path]       Path to target directory.
  --stdin                       Force reading input from STDIN
  --write                       Edit files in-place
  --template-path [path]        Custom formatter path
  --ignores [path]              Ignore directory names
  --ignore-patterns [patterns]  Ignore patterns
  --parser [target]             Parser (default: "ts")
  --style [style]               Output style(string | json) (default: "string")
  --nest                        Enable to generate inner document(only
                                parser=ts available)
  --scriptTarget [target]       [ES3 | ES5 | ES2015 | ES2016 | ES2017 | ES2018
                                | ES2019 | ESNext] (default: "ESNext")
  --scriptKind [kind]           [JS | JSX | TS | TSX] (default: "TS")
  --formatter [formatter]       Document formatter(jsdoc | esdoc | tsdoc)
                                (default: "jsdoc")
  -h, --help                    display help for command

Formatters

You can choose document block formatter from JsDoc, ESDoc, TSDoc and your custom formatter.

JsDoc(default)

cat src/app.ts | lehre --stdin

EsDoc

cat src/app.ts | lehre --stdin --formatter=esdoc

TsDoc

cat src/app.ts | lehre --stdin --formatter=tsdoc

Coustom formatter

cat src/app/ts | lehre --stdin --template-path=./examples/template.js

Custom formatter

You can create your own cutom document block formatter.

Return string value and it insert above to signature automatically.

examples/template.js is sample formatter.

Formatter api

generateClassDoc

generateClassDoc: (
  name: string,
  type: string,
  start: { line: number, charactor: number },
  end: { line: number, charactor: number },
  methods: [
    name: string,
    type: string,
    start: { line: number, charactor: number },
    end: { line: number, charactor: number },
    params: ParamProps[
      name: string,
      type: string,
      default: string,
      alias: string,
    ],
    returnType: string,
  ],
  heritageClauses: [{ type: string, value: string }],
) => string

generateInterfaceDoc

generateInterfaceDoc: ({
  name: string,
  type: string,
  start: { line: number, charactor: number },
  end: { line: number, charactor: number },
  methods: [
    name: string,
    type: string,
    start: { line: number, charactor: number },
    end: { line: number, charactor: number },
    params: ParamProps[
      name: string,
      type: string,
      default: string,
      alias: string,
    ],
    returnType: string,
  ],
  heritageClauses: [{ type: string, value: string }],
}) => string

generatePropertyDoc

generatePropertyDoc: ({
  name: string,
  type: string,
  start: { line: number, charactor: number },
  end: { line: number, charactor: number },
  params: ParamProps[
    name: string,
    type: string,
    default: string,
    alias: string,
  ],
  returnType: string,
}) => string

generateFunctionDoc

generateFunctionDoc: ({
  name: string,
  type: string,
  start: { line: number, charactor: number },
  end: { line: number, charactor: number },
  params: ParamProps[
    name: string,
    type: string,
    default: string,
    alias: string,
  ],
  returnType: string,
}) => string

LICENSE

MIT