diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-02 11:26:10 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-04-02 11:26:10 +0300 |
| commit | 494461fd551b0c70712a0aa0d7278e99e215c172 (patch) | |
| tree | 876c8c514cd53d16efaa2aac13429f0452972fcf | |
| parent | 417eac385368ec25c12a83e446c27dba54111021 (diff) | |
| download | nimpb-494461fd551b0c70712a0aa0d7278e99e215c172.tar.gz nimpb-494461fd551b0c70712a0aa0d7278e99e215c172.zip | |
Modify field names to be valid identifiers
| -rw-r--r-- | generator/protoc_gen_nim.nim | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim index 41aaea9..07f5e84 100644 --- a/generator/protoc_gen_nim.nim +++ b/generator/protoc_gen_nim.nim @@ -1,5 +1,6 @@ import algorithm import os +import pegs import sequtils import sets import strformat @@ -231,6 +232,13 @@ proc newField(file: ProtoFile, message: Message, desc: FieldDescriptorProto): Fi result.packed = false result.mapEntry = nil + # Identifiers cannot start/end with underscore + removePrefix(result.name, '_') + removeSuffix(result.name, '_') + + # Consecutive underscores are not allowed + result.name = replace(result.name, peg"'_' '_'+", "_") + if isKeyword(result.name): result.name = "f" & result.name |
