Browse Source

Improve proto message name function.

Mickey Reiss 8 years ago
parent
commit
62250faff5
1 changed files with 13 additions and 6 deletions
  1. 13 6
      Plugin/Sources/protoc-gen-swiftgrpc/filters.swift

+ 13 - 6
Plugin/Sources/protoc-gen-swiftgrpc/filters.swift

@@ -55,18 +55,25 @@ extension String {
 
 // functions for use in templates
 
+// Transform .some.package_name.FooBarRequest -> Some_PackageName_FooBarRequest
 func protoMessageName(_ name :String?) -> String {
   guard let name = name else {
     return ""
   }
-  let parts = name.undotted.components(separatedBy:"_")
-  var capitalizedParts : [String] = []
-  for part in parts {
-    if part != "" {
-      capitalizedParts.append(part.uppercasedFirst)
+
+  var parts : [String] = []
+  for dotComponent in name.components(separatedBy:".") {
+    var part = ""
+    if dotComponent == "" {
+      continue
+    }
+    for underscoreComponent in dotComponent.components(separatedBy:"_") {
+      part.append(underscoreComponent.uppercasedFirst)
     }
+    parts.append(part)
   }
-  return capitalizedParts.joined(separator:"_")
+
+  return parts.joined(separator:"_")
 }
 
 func pathName(_ arguments: [Any?]) throws -> String {