Skip to content

Commit 1b63822

Browse files
authored
camelize name in nim (#9255)
1 parent b4ea00e commit 1b63822

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import java.io.File;
3232
import java.util.*;
3333

34+
import static org.openapitools.codegen.utils.StringUtils.camelize;
35+
3436
public class NimClientCodegen extends DefaultCodegen implements CodegenConfig {
3537
final Logger LOGGER = LoggerFactory.getLogger(NimClientCodegen.class);
3638

@@ -297,14 +299,32 @@ public String getTypeDeclaration(Schema p) {
297299

298300
@Override
299301
public String toVarName(String name) {
300-
if (isReservedWord(name)) {
301-
name = escapeReservedWord(name);
302+
// sanitize name
303+
name = sanitizeName(name, "\\W-[\\$]"); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
304+
305+
if ("_".equals(name)) {
306+
name = "_u";
302307
}
303308

309+
// numbers are not allowed at the beginning
304310
if (name.matches("^\\d.*")) {
305311
name = "`" + name + "`";
306312
}
307313

314+
// if it's all uppper case, do nothing
315+
if (name.matches("^[A-Z0-9_]*$")) {
316+
return name;
317+
}
318+
319+
// camelize (lower first character) the variable name
320+
// pet_id => petId
321+
name = camelize(name, true);
322+
323+
// for reserved word or word starting with number, append _
324+
if (isReservedWord(name)) {
325+
name = escapeReservedWord(name);
326+
}
327+
308328
return name;
309329
}
310330

samples/client/petstore/nim/petstore/apis/api_pet.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ proc addPet*(httpClient: HttpClient, body: Pet): Response =
4545
httpClient.post(basepath & "/pet", $(%body))
4646

4747

48-
proc deletePet*(httpClient: HttpClient, petId: int64, api_key: string): Response =
48+
proc deletePet*(httpClient: HttpClient, petId: int64, apiKey: string): Response =
4949
## Deletes a pet
50-
httpClient.headers["api_key"] = api_key
50+
httpClient.headers["api_key"] = apiKey
5151
httpClient.delete(basepath & fmt"/pet/{petId}")
5252

5353

0 commit comments

Comments
 (0)