Created
December 7, 2022 00:59
-
-
Save nkmrh/972019b82eac162c844210fe2dba038d to your computer and use it in GitHub Desktop.
ApolloCodegen の仕組み
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://github.com/apollographql/apollo-ios/blob/main/Sources/ApolloCodegenLib/ApolloCodegen.swift#L313-L318 | |
// ApolloCodegen Codegen の仕組み | |
// FileGenerator | |
protocol FileGenerator { | |
var template: TemplateRenderer { get } | |
} | |
extension FileGenerator { | |
func generate() { | |
// writeToFile(template.render()) | |
} | |
} | |
// TemplateRenderer | |
protocol TemplateRenderer { | |
var template: TemplateString { get } | |
} | |
extension TemplateRenderer { | |
func render() -> String { | |
template.description | |
//TemplateString("\(template)") | |
} | |
} | |
// TemplateString | |
struct TemplateString: CustomStringConvertible { | |
var description: String { "" } | |
} | |
// Enum | |
struct EnumFileGenerator: FileGenerator { | |
var template: TemplateRenderer { | |
EnumTemplate() | |
} | |
} | |
struct EnumTemplate: TemplateRenderer { | |
var template: TemplateString { | |
TemplateString() | |
// TemplateString(""" | |
// // Comment | |
// enum ABC: String EnumType { | |
// case a | |
// case b | |
// case c | |
// } | |
// | |
// """) | |
} | |
} | |
// ApolloCodegen.build() | |
// func compileGraphQLResult -> call graphql-js method | |
// create IR | |
// generateFiles(IR) | |
// ex) graphQLEnum | |
// EnumFileGenerator().generate() | |
// EnumTemplate.template |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment