* @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:----gnpH+6NDCFmQ/UBn3KxgVzIPl7AXP94/gBLpEtulOixdJOmwOxRc9+aS0qk7IUwIbaycLcRJuDN/Sn45ogdcpvvH6OhqGxOSxE7yAGsP6SZH2QKU00eAh8sLRsYpG0dBobZ25p88tt/56KfCnrSwrkZKqCX7nIlvwk9zo2Ak4jWhssc16OVJT2adV2R2O3OSNGNJX/UZzWFR/jbBfBdIYyRGWCYLU13Slzs/+7oGWZroDnSBUkqJbHdsGpoHHORwStCkbPCkctCPortgSau9JefcR154DJWSYgS4Y4INhBkv+hfasr5AALNEy6wMRZjtThwdSiYFWSU9oX6jA8wKGstfJprx+49Kk5a0k77qHSYPgbuM4NGa4Oc6dfK837XumnKAAyFpw6soGfMZG1l+nWDPa1qM5XA3DpckjoZu+9Fufwb7iVKg+cGiVS+ikK/u6BBfZh8Jqyz5SHYKc4MUIdRsYJ0VRp5+hn7GQq+Stz+Q5kYQVuW2JeLY21qpHkOP/B3KBjhIe7G2GgnXCVWfndt7c8rb6bBEzz7dS3OJ3kuIbd5cucJ2K08j1kOaRWxciwqyCvo4sqJBAjBEJUjhozIowIpUJ2T/+a6iqhcrg0fBfYAG586vEIgg/i2svF24ca9qZwgY5kcPQtFCZYxGIkF6hHwOHrvOHDeDAKTL9xc=----ATTACHMENT:----NjE4ODI5OTMwNTYxOTEzMyA2NDY4NDU2ODQ3ODI5NTU0IDc5MDY0MTUxNDU3ODc2MDc=