在ClientCodegen中添加公共方法以在mustache中使用

问题描述 投票:0回答:1

我已经分叉了 openAPI 生成器,旨在调整

Swift5ClientCodegen
。到目前为止,我已经成功修改了一些方法来更改某些类和属性名称的格式。例如,如果属性是“imageUrl”,那么它将被格式化为“imageURL”。

我还想介绍一种方法(也许是方法,但不确定这是否是最好的方法)来提供一些可在胡子模板中使用的值。

其中一个值需要确定是否有任何属性被转义,以便可以像这样使用:

...
{{#hasEscapedPropertyNames}}
// MARK: - Decodable

extension {{{classname}}}: Decodable {
    private enum CodingKeys: {{#hasVars}}String, {{/hasVars}}CodingKey {
        {{#allVars}}
        case {{{name}}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}
        {{/allVars}}
    }
}
{{/hasEscapedPropertyNames}}

我的问题是:

  • 哪一种是定义胡子模板中使用的自定义值的最佳方法?
  • 如何判断属性名称是否已转义?

我对该项目有非常基本的了解,如果有些内容没有意义,我深表歉意

openapi-generator
1个回答
0
投票

显然,在

Swift5ClientCodegen
第 1127 行添加了
x-codegen-has-escaped-property-names
来指定是否存在转义的属性名称。

因此您可以使用以下内容修改 Mustache 文件

...
{{#vendorExtensions.x-codegen-has-escaped-property-names}}

// MARK: - Decodable

extension {{{classname}}}: Decodable {
    private enum CodingKeys: {{#hasVars}}String, {{/hasVars}}CodingKey {
        {{#allVars}}
        case {{{name}}}{{#vendorExtensions.x-codegen-escaped-property-name}} = "{{{baseName}}}"{{/vendorExtensions.x-codegen-escaped-property-name}}
        {{/allVars}}
    }
}
{{/vendorExtensions.x-codegen-has-escaped-property-names}} 
...
© www.soinside.com 2019 - 2024. All rights reserved.