|
| 1 | +import 'package:celest_cli/src/openapi/ast/openapi_ast.dart'; |
| 2 | + |
| 3 | +abstract class OpenApiVisitor<R> { |
| 4 | + R visitDocument(OpenApiDocument document); |
| 5 | + R visitInfo(OpenApiInfo info); |
| 6 | + R visitServer(OpenApiServer server); |
| 7 | + R visitServerVariable(OpenApiServerVariable serverVariable); |
| 8 | + R visitPathItem(OpenApiPathItem pathItem); |
| 9 | + R visitOperation(OpenApiOperation operation); |
| 10 | + R visitParameter(OpenApiParameter parameter); |
| 11 | + R visitMediaType(OpenApiMediaType mediaType); |
| 12 | + R visitRequestBody(OpenApiRequestBody requestBody); |
| 13 | + R visitEncoding(OpenApiEncoding encoding); |
| 14 | + R visitResponse(OpenApiResponse response); |
| 15 | + R visitHeader(OpenApiHeader header); |
| 16 | + R visitComponents(OpenApiComponents components); |
| 17 | + R visitComponent(OpenApiComponent component) => switch (component) { |
| 18 | + OpenApiPathItem() => visitPathItem(component), |
| 19 | + OpenApiParameter() => visitParameter(component), |
| 20 | + OpenApiRequestBody() => visitRequestBody(component), |
| 21 | + OpenApiResponse() => visitResponse(component), |
| 22 | + OpenApiHeader() => visitHeader(component), |
| 23 | + OpenApiSchema() => visitSchema(component), |
| 24 | + OpenApiSecurityScheme() => visitSecurityScheme(component), |
| 25 | + }; |
| 26 | + R visitSchema(OpenApiSchema schema); |
| 27 | + R visitSecurityRequirement(OpenApiSecurityRequirement securityRequirement); |
| 28 | + R visitSecurityScheme(OpenApiSecurityScheme securityScheme); |
| 29 | + R visitOAuthFlows(OpenApiOAuthFlows oauthFlows); |
| 30 | + R visitOAuthFlow(OpenApiOAuthFlow oauthFlow); |
| 31 | + R visitAdditionalProperties(OpenApiAdditionalProperties additionalProperties); |
| 32 | + R visitDiscriminator(OpenApiDiscriminator discriminator); |
| 33 | + R visitReference(OpenApiReference reference); |
| 34 | + R visitExternalDocs(OpenApiExternalDocs externalDocs); |
| 35 | + R visitTag(OpenApiTag tag); |
| 36 | + R visitContact(OpenApiContact contact); |
| 37 | + R visitLicense(OpenApiLicense license); |
| 38 | +} |
| 39 | + |
| 40 | +abstract class OpenApiVisitorWithArg<R, A> { |
| 41 | + R visitDocument(OpenApiDocument document, A arg); |
| 42 | + R visitInfo(OpenApiInfo info, A arg); |
| 43 | + R visitServer(OpenApiServer server, A arg); |
| 44 | + R visitServerVariable(OpenApiServerVariable serverVariable, A arg); |
| 45 | + R visitPathItem(OpenApiPathItem pathItem, A arg); |
| 46 | + R visitOperation(OpenApiOperation operation, A arg); |
| 47 | + R visitParameter(OpenApiParameter parameter, A arg); |
| 48 | + R visitMediaType(OpenApiMediaType mediaType, A arg); |
| 49 | + R visitRequestBody(OpenApiRequestBody requestBody, A arg); |
| 50 | + R visitEncoding(OpenApiEncoding encoding, A arg); |
| 51 | + R visitResponse(OpenApiResponse response, A arg); |
| 52 | + R visitHeader(OpenApiHeader header, A arg); |
| 53 | + R visitComponents(OpenApiComponents components, A arg); |
| 54 | + R visitComponent(OpenApiComponent component, A arg) => switch (component) { |
| 55 | + OpenApiPathItem() => visitPathItem(component, arg), |
| 56 | + OpenApiParameter() => visitParameter(component, arg), |
| 57 | + OpenApiRequestBody() => visitRequestBody(component, arg), |
| 58 | + OpenApiResponse() => visitResponse(component, arg), |
| 59 | + OpenApiHeader() => visitHeader(component, arg), |
| 60 | + OpenApiSchema() => visitSchema(component, arg), |
| 61 | + OpenApiSecurityScheme() => visitSecurityScheme(component, arg), |
| 62 | + }; |
| 63 | + R visitSchema(OpenApiSchema schema, A arg); |
| 64 | + R visitSecurityRequirement( |
| 65 | + OpenApiSecurityRequirement securityRequirement, |
| 66 | + A arg, |
| 67 | + ); |
| 68 | + R visitSecurityScheme(OpenApiSecurityScheme securityScheme, A arg); |
| 69 | + R visitOAuthFlows(OpenApiOAuthFlows oauthFlows, A arg); |
| 70 | + R visitOAuthFlow(OpenApiOAuthFlow oauthFlow, A arg); |
| 71 | + R visitAdditionalProperties( |
| 72 | + OpenApiAdditionalProperties additionalProperties, |
| 73 | + A arg, |
| 74 | + ); |
| 75 | + R visitDiscriminator(OpenApiDiscriminator discriminator, A arg); |
| 76 | + R visitReference(OpenApiReference reference, A arg); |
| 77 | + R visitExternalDocs(OpenApiExternalDocs externalDocs, A arg); |
| 78 | + R visitTag(OpenApiTag tag, A arg); |
| 79 | + R visitContact(OpenApiContact contact, A arg); |
| 80 | + R visitLicense(OpenApiLicense license, A arg); |
| 81 | +} |
0 commit comments