Merged
requested to merge github/fork/MichalFoksa/feature/include-common-lambdas-in-generators into master
Created by: MichalFoksa
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first. -
Filed the PR against the correct branch: master
,4.1.x
,5.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
Various generator used same Mustache lambdas over and over. In this PR, DefaultCodegen
registers set of following Mustache lambdas:
.put("lowercase", new LowercaseLambda().generator(this))
.put("uppercase", new UppercaseLambda())
.put("titlecase", new TitlecaseLambda())
.put("camelcase", new CamelCaseLambda().generator(this))
.put("indented", new IndentedLambda())
.put("indented_8", new IndentedLambda(8, " "))
.put("indented_12", new IndentedLambda(12, " "))
.put("indented_16", new IndentedLambda(16, " "));
Extension is done in such a way that each generator can:
- extend the list with additional lambdas
@Override
protected Builder<String, Lambda> addMustacheLambdas() {
return super.addMustacheLambdas()
.put("multiline_comment_4", new IndentedLambda(4, " ", "///"));
}
- suppress all common lambdas by returning empty builder from addMustacheLambdas()
@Override
protected Builder<String, Lambda> addMustacheLambdas() {
return new ImmutableMap.Builder<String, Mustache.Lambda>();
}
NOTE: @jmini : I was not sure where to put new methods in DefaultCodegen
. PLS give me an advised or feel free to update it directly.
Reviewers
- C++: @ravinikam , @stkrwork , @etherealjoy , @MartinDelille
- C#: @mandrean , @jimschubert
- F#: @nmfisher
- Kotlin: @jimschubert , @dr4ke616 , @karismann , @Zomzog
- Scala: @clasnake , @jimschubert , @shijinkui , @ramzimaalej