module Google::Protobuf::Internal
def self.fixup_descriptor(package, msg_names, enum_names)
def self.fixup_descriptor(package, msg_names, enum_names) if package.nil? package = self.infer_package(msg_names + enum_names) end nesting = NestingBuilder.new(msg_names, enum_names).build(package) return package, nesting end
def self.infer_package(names)
def self.infer_package(names) # Package is longest common prefix ending in '.', if any. if not names.empty? min, max = names.minmax last_common_dot = nil min.size.times { |i| if min[i] != max[i] then break end if min[i] == ?. then last_common_dot = i end } if last_common_dot return min.slice(0, last_common_dot) end end nil end