aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-04-02 11:26:10 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-04-02 11:26:10 +0300
commit494461fd551b0c70712a0aa0d7278e99e215c172 (patch)
tree876c8c514cd53d16efaa2aac13429f0452972fcf
parent417eac385368ec25c12a83e446c27dba54111021 (diff)
downloadnimpb-494461fd551b0c70712a0aa0d7278e99e215c172.tar.gz
nimpb-494461fd551b0c70712a0aa0d7278e99e215c172.zip
Modify field names to be valid identifiers
-rw-r--r--generator/protoc_gen_nim.nim8
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