Skip to content

Commit

Permalink
Replace stored with computed properties in input object structs
Browse files Browse the repository at this point in the history
  • Loading branch information
martijnwalraven committed Jul 30, 2017
1 parent d8b4180 commit dac1eb2
Showing 1 changed file with 28 additions and 7 deletions.
35 changes: 28 additions & 7 deletions src/swift/codeGeneration.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,20 +581,41 @@ function structDeclarationForInputObjectType(generator, type) {
});

structDeclaration(generator, { structName, description, adoptedProtocols }, () => {
propertyDeclarations(generator, properties);
generator.printOnNewline(`public var graphQLMap: GraphQLMap`);

generator.printNewlineIfNeeded();
generator.printOnNewline(`public init`);
generator.print('(');
generator.print(join(properties.map(({ propertyName, type, typeName, isOptional }) =>
join([
`${propertyName}: ${typeName}`,
isOptional && ' = nil'
])
), ', '));
generator.print(')');

initializerDeclarationForProperties(generator, properties);

generator.printNewlineIfNeeded();
generator.printOnNewline(`public var graphQLMap: GraphQLMap`);
generator.withinBlock(() => {
generator.printOnNewline(wrap(
`return [`,
`graphQLMap = [`,
join(properties.map(({ name, propertyName }) => `"${name}": ${propertyName}`), ', ') || ':',
`]`,
`]`
));
});

for (const { propertyName, typeName, description } of properties) {
generator.printNewlineIfNeeded();
comment(generator, description);
generator.printOnNewline(`public var ${propertyName}: ${typeName}`);
generator.withinBlock(() => {
generator.printOnNewline("get");
generator.withinBlock(() => {
generator.printOnNewline(`return graphQLMap["${propertyName}"] as! ${typeName}`);
});
generator.printOnNewline("set");
generator.withinBlock(() => {
generator.printOnNewline(`graphQLMap.updateValue(newValue, forKey: "${propertyName}")`);
});
});
}
});
}

0 comments on commit dac1eb2

Please sign in to comment.