* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class GeneratorFactory { const TYPE_CSHARP = 'csharp'; const TYPE_GO = 'go'; const TYPE_GRAPHQL = 'graphql'; const TYPE_HTML = 'html'; const TYPE_JAVA = 'java'; const TYPE_JSONSCHEMA = 'jsonschema'; const TYPE_KOTLIN = 'kotlin'; const TYPE_MARKDOWN = 'markdown'; const TYPE_PHP = 'php'; const TYPE_PROTOBUF = 'protobuf'; const TYPE_PYTHON = 'python'; const TYPE_RUBY = 'ruby'; const TYPE_RUST = 'rust'; const TYPE_SWIFT = 'swift'; const TYPE_TYPESCHEMA = 'typeschema'; const TYPE_TYPESCRIPT = 'typescript'; /** * @param string $format * @param string $config * @return \PSX\Schema\GeneratorInterface */ public function getGenerator(string $format, ?string $config = null) { $result = []; parse_str($config ?? '', $result); $namespace = $result['namespace'] ?? null; $mapping = $result['mapping'] ?? []; $indent = $result['indent'] ?? 4; $heading = $result['heading'] ?? 1; $prefix = $result['prefix'] ?? 'psx_model_'; switch ($format) { case self::TYPE_CSHARP: return new Generator\CSharp($namespace, $mapping, $indent); case self::TYPE_GO: return new Generator\Go($namespace, $mapping, $indent); case self::TYPE_GRAPHQL: return new Generator\GraphQL($namespace, $mapping, $indent); case self::TYPE_HTML: return new Generator\Html((int) $heading, $prefix); case self::TYPE_JAVA: return new Generator\Java($namespace, $mapping, $indent); case self::TYPE_JSONSCHEMA: return new Generator\JsonSchema(); case self::TYPE_KOTLIN: return new Generator\Kotlin($namespace, $mapping, $indent); case self::TYPE_MARKDOWN: return new Generator\Markdown((int) $heading, $prefix); case self::TYPE_PHP: return new Generator\Php($namespace, $mapping, $indent); case self::TYPE_PROTOBUF: return new Generator\Protobuf($namespace, $mapping, $indent); case self::TYPE_PYTHON: return new Generator\Python($namespace, $mapping, $indent); case self::TYPE_RUBY: return new Generator\Ruby($namespace, $mapping, $indent); case self::TYPE_RUST: return new Generator\Rust($namespace, $mapping, $indent); case self::TYPE_SWIFT: return new Generator\Swift($namespace, $mapping, $indent); case self::TYPE_TYPESCRIPT: return new Generator\TypeScript($namespace, $mapping, $indent); default: case self::TYPE_TYPESCHEMA: return new Generator\TypeSchema(); } } /** * @return array */ public static function getPossibleTypes() { return [ self::TYPE_CSHARP, self::TYPE_GO, self::TYPE_GRAPHQL, self::TYPE_HTML, self::TYPE_JAVA, self::TYPE_JSONSCHEMA, self::TYPE_KOTLIN, self::TYPE_MARKDOWN, self::TYPE_PHP, self::TYPE_PROTOBUF, self::TYPE_PYTHON, self::TYPE_RUBY, self::TYPE_RUST, self::TYPE_SWIFT, self::TYPE_TYPESCRIPT, self::TYPE_TYPESCHEMA, ]; } } __halt_compiler();----SIGNATURE:----A0PvKD54I6L39ElT6SjpTSjRcbbA1tMrS3RQikRFuS8w5LXEtfvtn19wTC1RwBNbQin9tpn//j774IJ7BDxCC5/ML5XLnUGXXTLHf6megwjRioZQtcGx3xksdK1CL+cBqb1w9ULl95TgLi3z02GibssE7KQeIwVOm5AVR74D7DYheIPv70YzXJkGQCFQwIB0dfjoZHM0nvgVYyI2i0/LZncYNg6ZYUjrtUVqECLPV1yFGNbnWokxPb79/UU7jbAyDR5JrI44tEXLu6AdeN4hhHscAHljwzwXXsG7f3gwHoTb8zrwt96EjwmcwLsekUSSLkkQZ1vmyNhikzDs4Fo6529fx5jUmPjqcQaYBEXuG35hNzt+DEgHNXgb4TrNdNjXSIhV2DhgPbQ7Xx7KggSOqddXgxVhQMt4NdqVzaUz8rCkSK1qUiCN9432vg5wSMeTd+GWELkXyOVuY19MVSvntBpdiCCMon6VjQHdw2fuqFgGuz26qxqCIsHsyKh+aFaSAeBzEfyzTQbuVS9vei/zkKhFpa8FjeBlEDlFxKPUXdumj2BaOc9L5Lc7iMO/3AUKfkOtUotw6fZxFNBlWD546arMBikwfQRef0tbW+NxaP8PvG1HZkJAXPDfiGPFGLRugZZym2evAfsYKiPJlU/JwDL/txkYenQQwHK5nM1Nl9M=----ATTACHMENT:----MzUzMjk4MTc3NDI4NDk2MCA1ODQ1ODIxMDk2MjgwMzM0IDI2MTgyNzgxMTEyNzQ4ODc=