Создать схему JSON из машинописи

Я пытаюсь создать doc-генератор машинописного текста, но для этого мне нужно разобрать файл машинописного текста во что-то более удобочитаемое

EX:

"Command": {
    "description": "A command object for the command handler",
    "constructor": [
      {
        "name": "name",
        "type": "string",
        "optional": false,
        "default": null,
        "description": "Name of the command"
      },
      {
        "name": "callback",
        "type": "(event: CommandContext) => void",
        "optional": false,
        "default": null,
        "description": "Callback for the command"
      }
    ],
    "properties": [
      {
        "name": "name",
        "description": "Name of the command",
        "type": "string"
      },
      {
        "name": "fullname",
        "description": "Fullname of the command",
        "type": "string"
      }
    ],
    "methods": [
      {
        "name": "canRun",
        "description": "Checks all permission checks and verifies if a command can be run",
        "parameters": [
          {
            "name": "context",
            "type": "CommandContext",
            "optional": false,
            "default": null,
            "description": "The context for the command",
            "returns": "PermissionCheckResult"
          }
        ]
      }
    ],
    "events": null
  }

будет происходить из чего-то вроде этого

export declare class Command {
    /**
     * Name of the command
     */
    name: string;
    /**
     * Fullname of the command
     */
    fullname: string;
    /**
     * Create a command
     * @param name - Name of the command
     * @param callback - Callback for the command
     */
    constructor(name: string, callback: (event: CommandContext) => void);
    /**
     * Checks all permission checks and verifies if a command can be run
     * @param context - The context for the command
     */
    canRun(context: CommandContext): boolean;
}

как бы это сделать, желательно в браузере, но если это невозможно, я также могу сделать это с помощью node.js

3 ответа

Решение

TypeDoc имеет аналогичную функцию, вы можете использовать --json тег для получения данных о модуле в формате JSON

это не совсем то, что я искал, но может быть использовано для достижения того же

ts-json-schema у меня работает очень хорошо.

Вы можете использовать его как $ npx ts-json-schema-generator -p types.ts > types.json.

Также есть typescript-json-schema .

https://www.npmjs.com/package/typescript-json-схема

Использование командной строки:

      ./node_modules/.bin/typescript-json-schema <path-to-typescript-files-or-tsconfig> <type> --out schema.json

Я использовал вот так,

      ./node_modules/.bin/ts-json-schema-generator index.ts Book --out schema.json

index.ts

      export interface Book {
author: string;
/**
 * The size of the shape.
 *
 * @minimum 0
 * @TJS-type integer
 * @items.optional true
 */
pages: number;
genre: BookGenre;}
Другие вопросы по тегам