module Google::Protobuf::Internal

Public Class Methods

fixup_descriptor(package, msg_names, enum_names) click to toggle source
# File lib/google/protobuf.rb, line 111
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
infer_package(names) click to toggle source
# File lib/google/protobuf.rb, line 57
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